共用方式為


ACX 記錄和偵錯

本主題提供 ACX 音訊類別延伸模組記錄、追蹤和偵錯的相關信息。

ACX 驅動程序記錄

驅動程式的軟體追蹤通常是以 Windows 事件追蹤為基礎(ETW),這是一個核心層級的設施,可記錄內核模式和使用者模式進程的追蹤訊息。 由於 ACX 驅動程式是 WDF 驅動程式,因此所有 WDF 記錄和事件功能都可供 ACX 驅動程式開發人員使用。

Wpp

由於 ETW 可能有些複雜,因此大多數驅動程式開發人員都會使用 Windows 軟體追蹤預處理器 (WPP),這可簡化並增強檢測 ETW 追蹤驅動程式的程式。

ACX 會使用 WPP 記錄進行追蹤和偵錯。 如需詳細資訊,請參閱 在 KMDF 驅動程式 中使用 WPP 軟體追蹤和 將 WPP 軟體追蹤新增至 Windows 驅動程式

飛行記錄器(IFR)

支援正式發行前小眾測試版錄製器(IFR),並可透過WDFKD、RCDRKD 或ACXKD調試程序擴充功能來檢視。 如需使用 IFR 記錄的一般資訊,請參閱 在 KMDF 和 UMDF 2 驅動程式視訊中使用 Inflight 追蹤錄製器(IFR):在沒有調試程式的情況下存取驅動程式 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 驅動程式的可靠性,請考慮下列記錄行為。

  • 來自數據流緩衝區 IO 或其他一般訊號處理活動的非預期傳回值。
  • 非預期的電源狀態或電源狀態轉換。
  • 與更新或重新安裝期間呼叫相關的錯誤。
  • 可能導致「無音訊」的其他行為可以視為記錄。

使用 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 音訊類別擴充功能概觀

ACX 對象的摘要