Soy un programador ciego, trabajando en un juego de audio para ciegos. Estoy usando SlimDX, y se ha probado en docenas de sistemas desde XP hasta Win 8.1. Mi código funciona bien en la mayoría de los sistemas, pero recibo el siguiente error en tiempo de ejecución en un puñado de sistemas XP más antiguos:
vupgraderacer.wav SlimDX.DirectSound.DirectSoundException:
DSERR_INVALIDCALL: esta llamada no es válida para el estado actual de este objeto (-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)
Se repite el mismo error para cada sonido que intenta utilizar. Aquí está el código que estoy usando para configurar el dispositivo DS:
dsDevice = Nuevo SlimDX.DirectSound.DirectSound
dsDevice.SetCooperativeLevel (OGw.Handle, SlimDX.DirectSound.CooperativeLevel.Normal)
Me doy cuenta de que hay otros indicadores que se pueden configurar, pero esta configuración básica ha funcionado bien hasta ahora, menos los sistemas XP más antiguos. Esta es mi primera publicación, así que espero que la esté ingresando correctamente, de lo contrario, avíseme, a veces es difícil saber dónde está o debería estar con un lector de pantalla en los foros.
SetCooperativeLevel()
? Devuelve un HRESULT
valor por lo que cualquier valor distinto de DS_OK
puede indicar un problema.