Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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
En este tutorial se usa el controlador de audio Sysvad tradicional, pero se muestran algunas técnicas que pueden ser de ayuda para los controladores ACX. Controladores de Depuración de Errores: laboratorio paso a paso (modo núcleo Sysvad)
Tutoriales de vídeo
- Vídeo: Depuración del controlador con código fuente de WDF
- Serie de vídeos: Depuración de controladores de Kernel-Mode Driver Framework
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