Partager via


Journalisation et débogage ACX

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

Procédures pas à pas vidéo

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.

Voir aussi

Vue d’ensemble des extensions de classe audio ACX

Résumé des objets ACX