2009-07-22 4 views
0

décimal: 143196173
Hex: 0x889000DMystère HRESULT, 0x889000D

Les résultats d'un appel à IAudioSessionControl2->GetProcessId().

GetLastError = 126 *
message = "Le module spécifié est introuvable"

Je ne suis pas sûr de savoir comment interpréter cette erreur. De plus, je ne trouve nulle part une description du HRESULT. Les codes de retour documentés sont S_OK, E_POINTER, AUDCLNT_E_NO_SINGLE_PROCESS et AUDCLNT_E_DEVICE_INVALIDATED.

Quelqu'un sait ce que ce code indique?

* Il s'agit d'une erreur rassemblée sur une limite gérée/non gérée, obtenue par Marshal.GetLastError avec une exception Win32Exception fournissant le message. Ce pourrait être faux, mais c'est ce que j'ai. Le HRESULT est retiré directement du code non géré.


Une enquête plus approfondie, FAILED() ne semble pas penser que c'est une erreur. Cependant, le paramètre out est effacé (réglé sur 0), ce qui n'a pas vraiment de sens. En outre, GetErrorInfo renvoie S_FALSE; donc il n'y a pas d'informations de débogage supplémentaires pour continuer.

Répondre

4

Ceci est AUDCLNT_S_NO_CURRENT_PROCESS - Je me suis rendu compte que les en-têtes du Kit de développement Windows 7 manquaient en quelque sorte trop tard.

La documentation du SDK va être mise à jour pour refléter cela.

Le résultat signifie que la session est une session cross process. L'ID de processus renvoyé est l'ID de processus du premier processus qui a créé la session, mais si vous obtenez ce résultat, vous ne pouvez vraiment pas dépendre de l'ID de processus puisque l'ID de processus n'est pas unique.

+0

Je vois un identifiant de processus de 0 en conjonction avec ce code d'erreur, qui est en quelque sorte en conflit avec le bit "premier processus". Peu importe, je peux juste traiter cela comme une condition de "caution" avec un peu plus de travail. –

+2

Si vous voyez un ID de processus de 0, c'est probablement la session windows sounds (vous pouvez utiliser IAudioSessionControl2-> IsSystemSoundsSession() pour vérifier). La session windows sounds n'a jamais d'identifiant de processus. –

-1

Les méthodes COM peuvent définir IErrorInfo en cas d'échec. Essayez de le récupérer - il peut contenir des informations supplémentaires. Dans le code non managé, vous utilisez GetErrorInfo() pour cela.

+0

Les API audio n'utilisent malheureusement pas GetErrorInfo. –

Questions connexes