Compartir a través de


Registro y depuración de ACX

En este tema se proporciona información sobre el registro, el seguimiento y la depuración de las extensiones de clase de audio de ACX.

Registro del controlador ACX

El seguimiento de software para controladores se basa normalmente en el seguimiento de eventos para Windows (ETW), una instalación de nivel de kernel que registra los mensajes de seguimiento para los procesos en modo kernel y en modo usuario. Como los controladores de ACX son controladores WDF, todas las funcionalidades de registro y eventos de WDF están disponibles para los desarrolladores de controladores ACX.

WPP

Dado que ETW puede ser algo complicado de usar, la mayoría de los desarrolladores de controladores usan el preprocesador de seguimiento de software de Windows (WPP), lo que simplifica y mejora el proceso de instrumentación de un controlador para el seguimiento de ETW.

ACX usa registros de WPP para el seguimiento y la depuración. Para obtener más información, consulte Uso del seguimiento de software de WPP en controladores KMDF y Adición del seguimiento de software de WPP a un controlador de Windows.

Grabadora de Inflight (IFR)

Se admite la Grabadora de Inflight (IFR) y se puede ver a través de WDFKD, RCDRKD o con la extensión del depurador ACXKD cuando está disponible. Para obtener información general sobre cómo trabajar con registros IFR, consulte Uso de la Grabadora de Inflight (IFR) de seguimiento en controladores KMDF y UMDF 2 y Vídeo: acceso a los registros IFR del controlador sin un depurador

ACX registra eventos clave mediante otros proveedores ETW para simplificar la visualización de estos eventos especiales.

Adición del registro al controlador

También se recomienda encarecidamente que los controladores de terceros usen eventos WPP y ETW.

Este código de ejemplo muestra la comprobación de un valor devuelto y el registro de un error adecuado.


    //
    // 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 versión destacada del código de ejemplo del controlador de notificación del sistema proporciona ejemplos de seguimiento de WMI, así como código de seguimiento reutilizable. Para obtener más información sobre el ejemplo de notificación del sistema, consulte Controlador de ejemplo de notificación del sistema.

Recomendaciones para el registro del controlador ACX

Para mejorar la confiabilidad del controlador ACX, tenga en cuenta los siguientes comportamientos para el registro.

  • Valores devueltos inesperados de E/S del búfer de cuadros u otra actividad de procesamiento de señal normal.
  • Estados de energía inesperados o transiciones de estado de energía.
  • Errores relacionados con las llamadas realizadas durante las actualizaciones o la reinstalación.
  • Otros comportamientos que pueden conducir a "no audio" podrían ser considerados para el registro.

Uso de las extensiones del depurador de seguimiento de WMI

Para ver los eventos de seguimiento en el depurador, use la extensión WMI, Wmitrace.dll. Contiene una biblioteca de funciones diseñadas para controlar y ver el seguimiento de eventos WMI. Para obtener más información, consulte Extensiones de seguimiento de WMI (Wmitrace.dll).

Depuración de controladores ACX

Los controladores ACX son controladores WDF, por lo que las técnicas de depuración descritas para los controladores WDF se aplican a los controladores ACX. Consulte los temas siguientes para obtener información sobre la depuración de controladores WDF.

Información general sobre las herramientas de depuración

Herramientas de depuración para Windows (WinDbg, KD, CDB, NTSD)

Depuración de KMDF

Tutoriales en vídeo

Biblioteca de extensiones del depurador de kernel de ACX (AcxKd.dll)

Para ayudar a la depuración, ACX tiene una biblioteca de extensión del depurador de kernel complementaria (AcxKd.dll). Esta biblioteca ayuda a los desarrolladores a realizar un seguimiento del problema en rutas de audio de pila única y multi-pila. La extensión kd permite al desarrollador buscar dentro de las estructuras ACX.

Nota:

Esta extensión del depurador está en desarrollo y se proporcionará información aquí cuando esté disponible.

Consulte también

Información general sobre las extensiones de clase de audio de ACX

Resumen de objetos de ACX