Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cette rubrique fournit des informations sur la journalisation, le suivi et le débogage des extensions de classe audio ACX.
Journalisation des drivers ACX
Le suivi logiciel pour les pilotes est généralement basé sur le suivi des événements pour Windows (ETW), une installation au niveau du noyau qui enregistre les messages de suivi pour les processus en mode noyau et en mode utilisateur. Comme les pilotes ACX sont des pilotes WDF, toutes les fonctionnalités de journalisation et d’événements WDF sont disponibles pour les développeurs de pilotes ACX.
WPP
Étant donné que ETW peut être un peu compliqué à utiliser, la plupart des développeurs de pilotes utilisent le préprocesseur de trace logicielle Windows (WPP), ce qui simplifie et améliore le processus d’instrumentation d’un pilote pour le suivi ETW.
ACX utilise les journaux WPP pour le traçage et le débogage. Pour plus d’informations, consultez Utilisation du suivi logiciel WPP dans les pilotes KMDF et ajout du suivi logiciel WPP à un pilote Windows.
enregistreur In-Flight (IFR)
In-Flight enregistreur (IFR) est pris en charge et peut être consulté via WDFKD, RCDRKD ou avec l’extension de débogueur ACXKD lorsqu’elle est disponible. Pour obtenir des informations générales sur les journaux d’activité IFR, consultez Utilisation de l’enregistreur de trace (IFR) dans KMDF et UMDF 2 Drivers et Vidéo : Accès aux journaux IFR des pilotes sans débogueur
ACX journalise les événements clés à l’aide d’autres fournisseurs ETW pour simplifier la visualisation de ces événements spéciaux.
Ajout de la journalisation à votre pilote
Les pilotes tiers sont vivement encouragés à utiliser les événements WPP et ETW.
Cet exemple de code montre la vérification d’une valeur de retour et la journalisation d’une erreur appropriée.
//
// The driver uses this DDI to delete the circuits from the current device.
//
status = AcxDeviceRemoveCircuit(Device, devCtx->Speaker);
if (!NT_SUCCESS(status)) { DrvLogError(g_AudioDspLog, FLAG_INIT, L"Failed to remove speaker circuit, continuing with ReleaseHardware, %!STATUS!", status); }
status = AcxDeviceRemoveCircuit(Device, devCtx->MicArray);
if (!NT_SUCCESS(status)) { DrvLogError(g_AudioDspLog, FLAG_INIT, L"Failed to remove micarray circuit, continuing with ReleaseHardware, %!STATUS!", status); }
status = AcxDeviceRemoveCircuit(Device, devCtx->SpeakerHp);
if (!NT_SUCCESS(status)) { DrvLogError(g_AudioDspLog, FLAG_INIT, L"Failed to remove speakerHp circuit, continuing with ReleaseHardware, %!STATUS!", status); }
status = AcxDeviceRemoveCircuit(Device, devCtx->MicrophoneHp);
if (!NT_SUCCESS(status)) { DrvLogError(g_AudioDspLog, FLAG_INIT, L"Failed to remove microphoneHp circuit, continuing with ReleaseHardware, %!STATUS!", status); }
status = AcxDeviceRemoveCircuit(Device, devCtx->HDMI);
if (!NT_SUCCESS(status)) { DrvLogError(g_AudioDspLog, FLAG_INIT, L"Failed to remove HDMI circuit, continuing with ReleaseHardware, %!STATUS!", status); }
La version en vedette de l’exemple de code du pilote Toaster fournit des exemples de suivi WMI ainsi que du code de suivi réutilisable. Pour plus d’informations sur l’exemple de grille-pain, consultez l’exemple de pilote de grille-pain.
Recommandations pour la journalisation des pilotes ACX
Pour améliorer la fiabilité de votre pilote ACX, tenez compte des comportements suivants pour la journalisation.
- Valeurs de retour inattendues à partir d’E/S de mémoire tampon de flux ou d’une autre activité de traitement de signal standard.
- États d’alimentation inattendus ou transitions d’état d’alimentation.
- Erreurs liées aux appels effectués pendant les mises à jour ou la réinstallation.
- D’autres comportements qui peuvent conduire à « aucun audio » pourraient être pris en compte pour l'enregistrement.
Utilisation des extensions de débogueur de traçage WMI
Pour afficher les événements de trace dans le débogueur, utilisez l’extension WMI, Wmitrace.dll. Il contient une bibliothèque de fonctions conçues pour contrôler et afficher le suivi des événements WMI. Pour plus d’informations, consultez Extensions de suivi WMI (Wmitrace.dll).
Débogage du pilote ACX
Les pilotes ACX sont des pilotes WDF. Les techniques de débogage décrites pour les pilotes WDF s’appliquent donc aux pilotes ACX. Consultez les rubriques suivantes pour plus d’informations sur le débogage des pilotes WDF.
Informations générales sur les outils de débogage
Outils de débogage pour Windows (WinDbg, KD, CDB, NTSD)
Débogage KMDF
Cette procédure pas à pas utilise le pilote audio Sysvad traditionnel, mais illustre certaines techniques qui peuvent être utiles pour les pilotes ACX. Déboguer les pilotes - Laboratoire pas à pas (mode noyau Sysvad)
Procédures pas à pas vidéo
- Vidéo : Débogage de votre pilote avec le code source WDF
- Série vidéo : Débogage des pilotes du Framework de pilotes Kernel-Mode
Bibliothèque d’extensions du débogueur du noyau ACX (AcxKd.dll)
Pour faciliter le débogage, ACX dispose d’une bibliothèque d’extensions de débogueur de noyau complémentaire (AcxKd.dll). Cette bibliothèque aide les développeurs à localiser les problèmes sur les chemins audio uniques et à plusieurs piles. L’extension kd permet au développeur d’examiner les structures ACX.
Pour plus d’informations sur le débogage des pilotes ACX et l’utilisation de l’extension de débogueur AcxKd.dll, consultez !acxkd.