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 de 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, vea Usar el seguimiento de software de WPP en controladores KMDF y Agregar seguimiento de software de WPP a un controlador de Windows.

grabadora IFR In-Flight

Se admite la Grabadora In-Flight (IFR) y puede visualizarse 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 rastreo en vuelo (IFR) en los 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.

Agregar registros a su 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 para el controlador Toaster ofrece ejemplos de seguimiento de WMI y código de seguimiento reutilizable. Para obtener más información sobre el ejemplo de tostadora, vea Controlador de ejemplo de tostadora.

Recomendaciones para el registro del controlador ACX

Para mejorar la confiabilidad de su controlador ACX, considere los siguientes comportamientos para el registro de eventos.

  • Valores devueltos inesperados de E/S del búfer de flujo 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 provocar una falta de audio podrían considerarse para el registro de eventos.

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 monitorizar el seguimiento de eventos WMI. Para obtener más información, vea 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 de 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 complementario (AcxKd.dll). Esta biblioteca ayuda a los desarrolladores a realizar un seguimiento del problema en rutas de acceso de audio únicas y de varias pilas. La extensión kd permite al desarrollador buscar dentro de las estructuras ACX.

Para obtener más información sobre cómo depurar controladores ACX y trabajar con la extensión del depurador de AcxKd.dll, consulte !acxkd.

Consulte también

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

Resumen de objetos ACX