Поделиться через


Ведение журнала и отладка ACX

В этом разделе содержатся сведения о ведении журнала, трассировке и отладке расширений аудиоклассов ACX.

Ведение журнала драйверов ACX

Трассировка программного обеспечения для драйверов обычно построена на базе Event Tracing for Windows (ETW) — механизма на уровне ядра, который регистрирует сообщения трассировки как для процессов в режиме ядра, так и в режиме пользователя. Поскольку драйверы ACX являются драйверами WDF, для разработчиков драйверов ACX доступны все возможности ведения журнала и событий WDF.

WPP

Поскольку ETW может быть довольно сложным в использовании, большинство разработчиков драйверов используют препроцессор трассировки программного обеспечения Windows (WPP), который упрощает и совершенствует процесс добавления инструментов в драйвер для трассировки ETW.

ACX использует журналы WPP для трассировки и отладки. Дополнительные сведения см. в статье Об использовании трассировки программного обеспечения WPP в драйверах KMDF и добавлении трассировки программного обеспечения WPP в драйвер Windows.

In-Flight рекордер (IFR)

In-Flight recorder (IFR) поддерживается, и его можно просматривать через WDFKD, RCDRKD или с помощью расширения отладчика ACXKD, если оно доступно. Общая информация о работе с журналами IFR доступна в разделе Использование Inflight Trace Recorder (IFR) в драйверах KMDF и UMDF 2 и видео: доступ к журналам IFR драйвера без отладчика.

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

Видеогид

Библиотека расширений отладчика ядра ACX (AcxKd.dll)

Чтобы помочь в отладке, ACX имеет сопутствующую библиотеку расширений отладчика ядра (AcxKd.dll). Эта библиотека помогает разработчикам выявлять проблемы на одно- и многоуровневых аудиотраекториях. Расширение kd позволяет разработчику смотреть внутри структур ACX.

Дополнительные сведения об отладке драйверов ACX и работе с расширением отладчика AcxKd.dll см. в статье !acxkd.

См. также

Общие сведения о расширениях аудиоклассов ACX

Сводка объектов ACX