如何記錄至全域記錄器會話
使用下列程式來設定驅動程式以記錄至全域記錄器追蹤會話:
將下列定義新增至驅動程式程式碼。 在 WPP_CONTROL_GUIDS 巨集定義與 追蹤訊息標頭檔的include 語句之間插入定義。
#define WPP_GLOBALLOGGER
使用 Tracelog 設定全域記錄器追蹤會話。 最簡單的命令如下所示:
tracelog -start GlobalLogger
如需完整的指示,包括設定全域記錄器追蹤會話的參數,請參閱 Tracelog 命令語法 和 全域記錄器追蹤會話。
如需範例,請參閱 範例 13:建立全域記錄器會話。
此命令會建立並設定追蹤會話,但除非您重新開機系統 (步驟 5) ,否則會話不會啟動。
在 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 驅動程式範例 存放庫中取得。
若要設定追蹤提供者,請將下列登錄專案新增至 ControlGUID 子機碼。 這些專案是選擇性專案,而且其值是由驅動程式所定義。
專案名稱 資料類型 描述 旗標
REG_DWORD
指定提供者的 追蹤旗標 。
旗標的意義是由每個追蹤提供者獨立定義。 一般而言,旗標代表越來越詳細的報告層級。
Level
REG_DWORD
指定提供者的 追蹤層級 。
Level值的意義是由每個追蹤提供者獨立定義。 一般而言,追蹤層級代表事件 (資訊、警告或錯誤) 嚴重性。
請注意, Flags 專案的名稱是複數, 而 Level 專案的名稱是單數。
- 重新開機系統。 這會啟動全域記錄器追蹤會話。
測試完成後,請刪除ControlGUID子機碼,或將GlobalLogger子機碼中的Start專案值設定為 0。 如果您沒有這麼做,則全域記錄器會話會在每次重新開機系統時執行,以及驅動程式會記錄到該會話。
評論
當WPP_GLOBALLOGGER存在時,WPP 會新增可讀取登錄的程式碼,並判斷全域記錄器會話是否正在執行,以及是否啟用驅動程式以追蹤至全域記錄器會話。 此程式碼會取代驅動程式從標準追蹤會話接收的啟用通知。
此外,因為全域記錄器會話不提供回呼通知,所以 Windows 會假設已發生回呼,並據以繼續。
WPP 定義只會產生少量的程式碼,因此不需要在測試之後從程式碼中移除它們。