Je suis un programmeur aveugle, je travaille sur un jeu audio pour les aveugles. J'utilise SlimDX, et il a été testé sur des dizaines de systèmes de XP à Win 8.1. Mon code fonctionne très bien sur la plupart des systèmes, mais j'obtiens l'erreur suivante au moment de l'exécution sur une poignée d'anciens systèmes XP:
vupgraderacer.wav SlimDX.DirectSound.DirectSoundException:
DSERR_INVALIDCALL: cet appel n'est pas valide pour l'état actuel de cet objet (-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)
La même erreur se répète pour chaque son qu'il essaie d'utiliser. Voici le code que j'utilise pour configurer l'appareil DS:
dsDevice = Nouveau SlimDX.DirectSound.DirectSound
dsDevice.SetCooperativeLevel (OGw.Handle, SlimDX.DirectSound.CooperativeLevel.Normal)
Je me rends compte qu'il existe d'autres indicateurs qui peuvent être définis, mais cette configuration de base a bien fonctionné jusqu'à présent, moins les anciens systèmes XP. Ceci est mon premier message, alors j'espère que je le saisis correctement, sinon, faites-le moi savoir, il est parfois difficile de dire où vous êtes ou devriez être avec un lecteur d'écran sur les forums.
SetCooperativeLevel()
? Il renvoie uneHRESULT
valeur donc toute autre que celle quiDS_OK
peut indiquer un problème.Réponses:
Vous devez vérifier le résultat de SetCooperativeLevel ().
Selon la documentation de la version DirectSound8, voici les valeurs de retour possibles:
Découvrez lequel vous obtenez en premier. Peut-être que vous avez juste oublié d'initialiser le périphérique audio?
En outre, dans la section des remarques, il est dit: "N'appelez pas cette méthode si des tampons sont verrouillés."
Documents: http://msdn.microsoft.com/en-us/library/windows/desktop/microsoft.directx_sdk.idirectsound8.idirectsound8.setcooperativelevel%28v=vs.85%29.aspx
la source