Saya seorang programmer buta, mengerjakan permainan audio untuk orang buta. Saya menggunakan SlimDX, dan telah diuji pada banyak sistem dari XP ke Win 8.1. Kode saya berfungsi pada sebagian besar sistem, tetapi saya mendapatkan kesalahan berikut saat runtime pada beberapa sistem XP yang lebih lama:
vupgraderacer.wav SlimDX.DirectSound.DirectSoundException:
DSERR_INVALIDCALL: Panggilan ini tidak valid untuk keadaan objek ini saat ini (-2005401550)
at SlimDX.Result.Throw[T](Object dataKey, Object dataValue) at SlimDX.Result.Record[T](Int32 hr, Boolean failed, Object dataKey, Object dataValue) at SlimDX.DirectSound.SecondarySoundBuffer..ctor(DirectSound device, SoundBufferDescription description) at RR.Sound..ctor(String fileName)
Kesalahan yang sama diulang untuk setiap suara yang coba digunakan. Berikut adalah kode yang saya gunakan untuk mengatur perangkat DS:
dsDevice = New SlimDX.DirectSound.DirectSound
dsDevice.SetCooperativeLevel (OGw.Handle, SlimDX.DirectSound.CooperativeLevel.Normal)
Saya menyadari ada beberapa flag lain yang dapat diatur, tetapi pengaturan dasar ini telah bekerja dengan baik sejauh ini, minus sistem XP yang lebih lama. Ini adalah posting pertama saya, jadi harap saya memasukkannya dengan benar, jika tidak, tolong beri tahu saya, kadang-kadang sulit untuk mengatakan di mana Anda berada atau harus dengan screenreader di forum.
SetCooperativeLevel()
? Ia mengembalikan nilai HRESULT
jadi apa pun selain yang DS_OK
mengindikasikan masalah.