Eu sou um programador cego, trabalhando em um jogo de áudio para cegos. Estou usando o SlimDX e ele foi testado em dezenas de sistemas, do XP ao Win 8.1. Meu código funciona bem na maioria dos sistemas, mas estou recebendo o seguinte erro em tempo de execução em alguns sistemas XP mais antigos:
vupgraderacer.wav SlimDX.DirectSound.DirectSoundException:
DSERR_INVALIDCALL: esta chamada não é válida para o estado atual deste 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)
O mesmo erro é repetido para cada som que ele está tentando usar. Aqui está o código que estou usando para configurar o dispositivo DS:
dsDevice = Novo SlimDX.DirectSound.DirectSound
dsDevice.SetCooperativeLevel (OGw.Handle, SlimDX.DirectSound.CooperativeLevel.Normal)
Sei que existem outros sinalizadores que podem ser definidos, mas essa configuração básica funcionou bem até agora, menos os sistemas XP mais antigos. Este é o meu primeiro post, por isso espero inseri-lo corretamente, caso contrário, por favor me avise, às vezes é difícil dizer onde você está ou deveria estar com um leitor de tela nos fóruns.
SetCooperativeLevel()
? Ele retorna um HRESULT
valor qualquer que não DS_OK
seja o que pode indicar um problema.