Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
В этом разделе содержатся сведения о ведении журнала, трассировке и отладке расширений аудиоклассов 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
В этом пошаговом руководстве используется традиционный звуковой драйвер Sysvad, но иллюстрируются некоторые методы, которые могут помочь драйверам ACX. Отладка драйверов - пошаговая лабораторная работа (Sysvad - режим ядра)
Видеогид
- Видео: отладка драйвера с помощью исходного кода WDF
- Серия видео: отладка драйверов Kernel-Mode Driver Framework
Библиотека расширений отладчика ядра ACX (AcxKd.dll)
Чтобы помочь в отладке, ACX имеет сопутствующую библиотеку расширений отладчика ядра (AcxKd.dll). Эта библиотека помогает разработчикам выявлять проблемы на одно- и многоуровневых аудиотраекториях. Расширение kd позволяет разработчику смотреть внутри структур ACX.
Дополнительные сведения об отладке драйверов ACX и работе с расширением отладчика AcxKd.dll см. в статье !acxkd.
См. также
Общие сведения о расширениях аудиоклассов ACX