Ich bin ein blinder Programmierer und arbeite an einem Hörspiel für Blinde. Ich verwende SlimDX und es wurde auf Dutzenden von Systemen von XP bis Win 8.1 getestet. Mein Code funktioniert auf den meisten Systemen einwandfrei, aber auf einigen wenigen XP-Systemen wird zur Laufzeit der folgende Fehler angezeigt:
vupgraderacer.wav SlimDX.DirectSound.DirectSoundException:
DSERR_INVALIDCALL: Dieser Aufruf ist für den aktuellen Status dieses Objekts nicht gültig (-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)
Der gleiche Fehler wird für jeden Sound wiederholt, den er verwenden möchte. Hier ist der Code, den ich zum Einrichten des DS-Geräts verwende:
dsDevice = Neuer SlimDX.DirectSound.DirectSound
dsDevice.SetCooperativeLevel (OGw.Handle, SlimDX.DirectSound.CooperativeLevel.Normal)
Mir ist klar, dass es andere Flags gibt, die gesetzt werden können, aber diese Grundeinstellung hat bisher gut funktioniert, abzüglich der älteren XP-Systeme. Dies ist mein erster Beitrag. Ich hoffe, ich gebe ihn richtig ein. Wenn nicht, lassen Sie es mich bitte wissen. Manchmal ist es schwierig zu sagen, wo Sie sich befinden oder mit einem Screenreader in den Foren sein sollten.
SetCooperativeLevel()
? Es wird ein HRESULT
beliebiger Wert zurückgegeben, der DS_OK
möglicherweise auf ein Problem hinweist.