Ведение журнала и отладка ACX
В этом разделе содержатся сведения о ведении журнала, трассировке и отладке расширений аудиоклассов ACX.
Ведение журнала драйверов ACX
Трассировка программного обеспечения для драйверов обычно основана на трассировке событий для Windows (ETW), объект на уровне ядра, который регистрирует сообщения трассировки как для процессов в режиме ядра, так и в пользовательском режиме. Поскольку драйверы ACX являются драйверами WDF, для разработчиков драйверов ACX доступны все возможности ведения журнала и событий WDF.
WPP
Так как etW может быть несколько сложным для использования, большинство разработчиков драйверов используют препроцессор трассировки программного обеспечения Windows (WPP), что упрощает и улучшает процесс инструментирования драйвера для трассировки ETW.
ACX использует журналы WPP для трассировки и отладки. Дополнительные сведения см. в статье Об использовании трассировки программного обеспечения WPP в драйверах KMDF и добавлении трассировки программного обеспечения WPP в драйвер Windows.
In-Flight Recorder (IFR)
Поддерживается средство записи in-Flight (IFR) и может просматриваться через WDFKD, RCDRKD или с расширением отладчика ACXKD, если оно доступно. Общие сведения, работающие с журналами IFR, см. в разделе Using Inflight Trace Recorder (IFR) в KMDF и UMDF 2 Driver and Video: accessing driver IFR logs без отладчика
ACX регистрирует ключевые события с помощью других поставщиков ETW для упрощения визуализации этих специальных событий.
Добавление ведения журнала в драйвер
Сторонние водители настоятельно рекомендуется использовать события WPP и ETW.
В этом примере кода показано, проверка возвращаемое значение и ведение журнала соответствующей ошибки.
//
// 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); }
Представленная версия примера кода драйвера Тостера содержит примеры трассировки WMI, а также многократно используемый код трассировки. Дополнительные сведения о образце тостера см. в разделе "Пример драйвера тостера".
Рекомендации для ведения журнала драйвера ACX
Чтобы повысить надежность драйвера ACX, рассмотрите следующее поведение для ведения журнала.
- Непредвиденные возвращаемые значения из операций ввода-вывода буфера потока или другого обычного действия обработки сигналов.
- Непредвиденные состояния питания или переходы состояния питания.
- Ошибки, связанные с вызовами, выполненными во время обновления или повторной установки.
- Другие поведения, которые могут привести к тому, что звук не может быть рассмотрен для ведения журнала.
Использование расширений отладчика трассировки WMI
Чтобы просмотреть события трассировки в отладчике, используйте расширение WMI, Wmitrace.dll. Она содержит библиотеку функций, предназначенных для управления трассировкой событий WMI и просмотра. Дополнительные сведения см. в разделе "Расширения трассировки WMI" (Wmitrace.dll).
Отладка драйвера ACX
Драйверы ACX — это драйверы WDF, поэтому методы отладки, описанные для драйверов WDF, применяются к драйверам ACX. Дополнительные сведения об отладке драйверов WDF см. в следующих разделах.
Общие сведения о средствах отладки
Средства отладки для Windows (WinDbg, KD, CDB, NTSD)
Отладка KMDF
В этом пошаговом руководстве используется традиционный звуковой драйвер Sysvad, но иллюстрируются некоторые методы, которые могут помочь драйверам ACX. Драйверы отладки — пошаговые лаборатории (режим ядра Sysvad)
Пошаговое руководство по видео
Библиотека расширений отладчика ядра ACX (AcxKd.dll)
Чтобы помочь в отладке, ACX имеет библиотеку расширений отладчика ядра-компаньона (AcxKd.dll). Эта библиотека помогает разработчикам отслеживать проблемы с одним и многоуровневый стек звуковыми путями. Расширение kd позволяет разработчику смотреть внутри структур ACX.
Примечание.
Это расширение отладчика находится в процессе разработки, и информация будет предоставлена здесь, когда она доступна.