Erreur DirectX avec les anciens systèmes XP

8

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.

user3123309
la source
3
Bienvenue sur le site! J'ai un peu modifié votre question pour changer la mise en forme. Si vous rencontrez des difficultés pour utiliser le site, veuillez nous en informer sur meta .
MichaelHouse
1
Quel est le résultat de SetCooperativeLevel()? Il renvoie une HRESULT valeur donc toute autre que celle qui DS_OKpeut indiquer un problème.
congusbongus

Réponses:

1

Vous devez vérifier le résultat de SetCooperativeLevel ().

Selon la documentation de la version DirectSound8, voici les valeurs de retour possibles:

  • DS_OK DSERR_ALLOCATED
  • DSERR_INVALIDPARAM
  • DSERR_UNINITIALIZED
  • DSERR_UNSUPPORTED

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

bogglez
la source