共用方式為


ACX 記錄和偵錯

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

ACX 驅動程式記錄

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

WPP

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

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

In-Flight 記錄儀 (IFR)

支援 In-Flight 記錄器 (IFR),而且可以透過 WDFKD、RCDRKD 或使用 ACXKD 偵錯工具延伸模組 (如果可用) 來檢視。 如需使用 IFR 記錄的一般資訊,請參閱 在 KMDF 和 UMDF 2 驅動程式中使用進行中追蹤記錄器 (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); }

Toaster 驅動程式範例程式碼的精選版本提供 WMI 追蹤的範例,以及可重複使用的追蹤程式碼。 如需 Toaster 範例的詳細資訊,請參閱 Toaster 範例驅動程式

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 驅動程式和使用 AcxKd.dll 偵錯工具延伸模組的詳細資訊,請參閱 !acxkd

另請參閱

ACX 音訊類別擴充功能概觀

ACX 物件摘要