Sono un programmatore cieco, sto lavorando ad un gioco audio per non vedenti. Sto usando SlimDX ed è stato testato su dozzine di sistemi da XP a Win 8.1. Il mio codice funziona bene sulla maggior parte dei sistemi, ma visualizzo il seguente errore in fase di esecuzione su una manciata di sistemi XP precedenti:
vupgraderacer.wav SlimDX.DirectSound.DirectSoundException:
DSERR_INVALIDCALL: questa chiamata non è valida per lo stato corrente di questo oggetto (-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)
Lo stesso errore si ripete per ogni suono che sta tentando di usare. Ecco il codice che sto usando per configurare il dispositivo DS:
dsDevice = Nuovo SlimDX.DirectSound.DirectSound
dsDevice.SetCooperativeLevel (OGw.Handle, SlimDX.DirectSound.CooperativeLevel.Normal)
Mi rendo conto che ci sono altri flag che possono essere impostati, ma questa configurazione di base ha funzionato bene finora, meno i sistemi XP precedenti. Questo è il mio primo post, quindi spero di inserirlo correttamente, in caso contrario, per favore fatemi sapere, a volte è difficile dire dove siete o dovreste essere con uno screen reader nei forum.
SetCooperativeLevel()
? Restituisce un HRESULT
valore così diverso da quello che DS_OK
può indicare un problema.