共用方式為


在 UMDF 驅動程式中使用 WPP 軟體追蹤

WPP 軟體追蹤 可讓您新增可協助您偵錯驅動程式的追蹤訊息。 此外,架構 的事件記錄器 會提供數百個您可以檢視的追蹤訊息。

您可以使用 TraceViewTracelog來檢視追蹤訊息。 您也可以 將追蹤訊息傳送至核心偵錯工具

將追蹤訊息新增至驅動程式

若要將追蹤訊息新增至架構型驅動程式,您必須:

  • #include 指示詞新增至每個驅動程式的來源檔案,其中包含任何 WPP 宏。 這個指示詞必須識別 TTL) 檔案 (追蹤訊息標頭。 檔案名的格式必須是 <driver-source-file-name.t> 才能使用。

    例如,如果您的驅動程式包含兩個原始程式檔,稱為MyDriver1.cMyDriver2.c,則 MyDriver1.c必須包含:

    #include "MyDriver1.tmh"

    MyDriver2.c 必須包含:

    #include "MyDriver2.tmh"

    當您在 Microsoft Visual Studio 中建置驅動程式時,WPP 預處理器會產生 .t linux 檔案。

  • 在標頭檔中定義 WPP_CONTROL_GUIDS 宏。 此宏會定義驅動程式追蹤訊息的 GUID 和 追蹤旗 標。 (針對每個 WDK 的 UMDF 範例驅動程式,Internal.h 標頭檔包含此宏.)

  • 在驅動程式的 DllMain 常式中包含 WPP_INIT_TRACING 宏。 此宏會在驅動程式中啟動軟體追蹤。 (針對每個 WDK 的 UMDF 範例驅動程式,DllSup.h 標頭檔包含此宏.)

  • 在驅動程式的 DllMain 常式中包含 WPP_CLEANUP 宏。 此宏會停用驅動程式中的軟體追蹤。 (針對每個 WDK 的 UMDF 範例驅動程式,DllSup.h 標頭檔包含此宏.)

  • 在驅動程式中使用 DoTraceMessage 宏或 自訂 版本的宏來建立追蹤訊息。 (針對每個 WDK 的 UMDF 範例驅動程式,Internal.h 標頭檔包含自訂宏.)

  • 開啟驅動程式專案的 [屬性頁]。 以滑鼠右鍵按一下 方案總管 中的驅動程式專案,然後選取 [屬性]。 在驅動程式的 [屬性頁] 中,選取 [ 組態屬性],然後選取 [Wpp]。 在 [ 一般 ] 功能表下,將 [執行 WPP 追蹤 ] 設定為 [是]。 在 [ 檔案選項 ] 功能表下,您也應該指定架構的 WPP 範本檔案,例如:

    {km-WdfDefault.tpl}*.tmh
    

如需將追蹤訊息新增至驅動程式的詳細資訊,請參閱 將 WPP 宏新增至驅動程式

使用 WPP 軟體追蹤的範例驅動程式

WDK 中的所有 UMDF 範例驅動程式都提供 DllSup.h、Internal.h 和 Sources 檔案,以啟用 WPP 軟體追蹤。 其中大部分的範例驅動程式也會使用自訂宏來建立追蹤訊息。

檢視驅動程式的追蹤訊息

如果您已將追蹤訊息新增至驅動程式,則驅動程式是 追蹤提供者。 您可以使用 追蹤控制器,例如 Tracelog來控制 追蹤會話 ,並建立 追蹤記錄。 您可以使用 追蹤取用者,例如 Tracefmt來檢視訊息。

如需如何使用軟體追蹤工具的詳細資訊,請參閱 軟體追蹤工具問卷

檢視 UMDF 追蹤記錄檔

UMDF 記錄檔位於 %ProgramData%*\\Microsoft\\WDF 中。

您可以使用 TraceViewTracelog來檢視 UMDF 記錄檔。 這兩個工具都需要追蹤訊息格式 (TMF) 格式化追蹤記錄檔的訊息。 TMF 檔案位於 \tools\tracing 子目錄下的 WDK 中。 (在 TraceView 中,UMDF 會顯示為名稱為 「UMDF-Framework Trace」 或 「Framework Trace」 的具名提供者,視 UMDF 版本而定。)

WDF 驗證器 可讓您將追蹤訊息傳送至 UMDF 追蹤記錄檔和核心偵錯工具。 (您不應該使用Tracelog中的-kd選項,將追蹤訊息傳送至核心偵錯工具,因為Tracelog可能會中斷 UMDF.) 內的追蹤記錄

您也可以使用 !wmitrace 偵錯工具延伸模組來檢視偵錯工具中的 追蹤訊息

  1. 在 WinDbg 中,附加至裝載驅動程式的 WUDFHost 實例。 如需詳細資訊,請參閱 如何啟用 UMDF 驅動程式的偵錯。

  2. 如果您的驅動程式使用 1.11 版或更新版本,而且您使用的是Windows 8或更新版本的核心偵錯工具,您可以略過此步驟。 如果您的驅動程式使用 1.11 之前的 UMDF 版本,請使用 !wmitrace.tmffile!wmitrace.searchpath 來指定平臺特定的追蹤訊息格式 (.tmf) 檔案,或 .tmf 檔案的路徑。 .tmf 檔案位於 WDK 的平臺特定子目錄中。

  3. 使用 !wmitrace.logdump 命令來顯示追蹤緩衝區的內容:

    !wmitrace.logdump WudfTrace
    

控制追蹤訊息

您可以使用 WDF 驗證器 提供的使用者介面,或修改登錄值來控制 UMDF 追蹤訊息。 您應該盡可能使用 WDF 驗證器 介面,因為登錄值可能會在未來的 UMDF 版本中變更。 此外,您不應該在 INF 檔案或驅動程式的程式碼中存取這些值。

目前,您可以修改位於HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF登錄機碼底下的下列登錄值:

  • LogEnable值可控制 UMDF 是否為驅動程式建立追蹤記錄。 如果此值設定為 1,UMDF 會建立追蹤記錄。

  • LogLevel值會控制 UMDF 追蹤訊息包含的資訊量。 LogLevel的預設值為 3,這會導致 UMDF 追蹤訊息包含錯誤和警告訊息。 將此值設定為 7 以包含錯誤和警告訊息,以及非錯誤資訊訊息。 將它設定為 15,以包含 UMDF 能夠提供的所有追蹤資訊。

  • LogKd值可控制 UMDF 是否將追蹤訊息傳送至核心偵錯工具。 如果 LogKd 設定為 1,UMDF 就會將其追蹤訊息傳送至核心偵錯工具。

  • LogFlushPeriodSeconds值會指定追蹤訊息寫入追蹤記錄的頻率,以秒為單位。

  • LogMinidumpType值包含旗標,指定迷你傾印檔案所包含的資訊類型。 如需這些旗標的詳細資訊,請參閱 MINIDUMP_TYPE 列舉。

您可以在HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF登錄機碼下找到更多登錄值。 您不應該修改這些值。