共用方式為


如何記錄至全域記錄器會話

使用下列程式來設定驅動程式以記錄至全域記錄器追蹤會話:

  1. 將下列定義新增至驅動程式程式碼。 在 WPP_CONTROL_GUIDS 巨集定義與 追蹤訊息標頭檔的include 語句之間插入定義。

    #define WPP_GLOBALLOGGER
    
  2. 使用 Tracelog 設定全域記錄器追蹤會話。 最簡單的命令如下所示:

    tracelog -start GlobalLogger
    

    如需完整的指示,包括設定全域記錄器追蹤會話的參數,請參閱 Tracelog 命令語法全域記錄器追蹤會話

    如需範例,請參閱 範例 13:建立全域記錄器會話

    此命令會建立並設定追蹤會話,但除非您重新開機系統 (步驟 5) ,否則會話不會啟動。

  3. HKLM\System\CurrentControlSet\Control\WMI\GlobalLogger 子機碼下,為追蹤提供者的 控制項 GUID 新增名為 的子機碼。 在 Windows Vista 和更新版本的 Windows 中,控制項 GUID 必須以大括弧括住 ( {} ) 。

    tracelog -start GlobalLogger命令會將GlobalLogger子機碼新增至登錄。 ControlGUID子機碼會將驅動程式建立為全域記錄器追蹤會話的追蹤提供者

    例如,若要設定 Tracedrv 範例驅動程式,以記錄至執行 Windows XP 之電腦上的全域記錄器追蹤會話,請為 Tracedrv 控制項 GUID 新增名為 的子機碼。 d58c126f-b309-11d1-969e-0000f875a5bc: HKLM\SYSTEM\CurrentControlSet\Control\WMI\GlobalLogger\d58c126f-b309-11d1-969e-0000f875a5bc.

    TraceDrv是專為軟體追蹤設計的範例驅動程式,可在 GitHub 上的 Windows 驅動程式範例 存放庫中取得。

  4. 若要設定追蹤提供者,請將下列登錄專案新增至 ControlGUID 子機碼。 這些專案是選擇性專案,而且其值是由驅動程式所定義。

    專案名稱 資料類型 描述

    旗標

    REG_DWORD

    指定提供者的 追蹤旗標

    旗標的意義是由每個追蹤提供者獨立定義。 一般而言,旗標代表越來越詳細的報告層級。

    Level

    REG_DWORD

    指定提供者的 追蹤層級

    Level值的意義是由每個追蹤提供者獨立定義。 一般而言,追蹤層級代表事件 (資訊、警告或錯誤) 嚴重性。

請注意, Flags 專案的名稱是複數, 而 Level 專案的名稱是單數。

  1. 重新開機系統。 這會啟動全域記錄器追蹤會話。

測試完成後,請刪除ControlGUID子機碼,或將GlobalLogger子機碼中的Start專案值設定為 0。 如果您沒有這麼做,則全域記錄器會話會在每次重新開機系統時執行,以及驅動程式會記錄到該會話。

評論

當WPP_GLOBALLOGGER存在時,WPP 會新增可讀取登錄的程式碼,並判斷全域記錄器會話是否正在執行,以及是否啟用驅動程式以追蹤至全域記錄器會話。 此程式碼會取代驅動程式從標準追蹤會話接收的啟用通知。

此外,因為全域記錄器會話不提供回呼通知,所以 Windows 會假設已發生回呼,並據以繼續。

WPP 定義只會產生少量的程式碼,因此不需要在測試之後從程式碼中移除它們。