Windows 事件追蹤 (ETW) 定義數個簡單且複雜的類型,以用於追蹤函式。 這些類型會在 Defaultwpp.ini 檔案中宣告。 不過,您可以建立自己的自定義數據類型。
當您想要宣告變數並使用有意義的字詞來描述變數的值時,請使用自定義數據類型,而不是 integers。
例如, DiskState 變數包含磁碟的狀態。 以下是 DiskState 的值:
DiskOffline = 0
DiskOnline = 1
DiskFailed = 2
DiskStalled = 3
您不必在追蹤訊息中讀取 「DiskState=2」,而必須查閱 2 的意義,您可以定義名為 DiskState 的自定義類型,以取得指出“ DiskState 為 Failed” 的追蹤訊息。
建立自定義數據類型
若要建立自定義數據類型,請完成下列步驟:
建立具有 .ini 擴展名的本機組態檔,例如 localwpp.ini。 您無法將自訂類型新增至標頭或原始程序檔。
使用 TYPEMACRO 常數來定義自訂數據類型。
識別來源或頭檔中的組態數據。
將 -ini 參數新增至來源檔案中的 RUN_WPP 巨集。
在追蹤訊息中使用自定義數據類型。
定義 TYPEMACRO 常數
定義具有下列格式的 TYPEMACRO 常數。 這些值會定義為字串清單。
TYPEMACRO(Type,{ItemListLong | ItemListShort | ItemListByteShort | ItemListByteLong},(Value1,Value2...));
地點:
ItemListShort
帶正負號的16位整數。
ItemListLong
帶正負號或未帶正負號的 32 位整數。
ItemSetByteShort
帶正負號的16位值。
ItemSetByteLong
帶正負號或未帶正負號的 32 位值。
例如:
TYPEMACRO(DiskState,ItemListLong(DiskOffline,DiskOnline,DiskFailed,DiskStalled));
識別組態數據
如果您將自定義數據類型新增至具有其他程式代碼的檔案,例如原始程式檔或頭檔,請使用 begin_wpp組態 和 end_wpp 語句來識別檔案中的組態數據。 例如:
// begin_wpp config
//TYPEMACRO(DiskState,ItemListLong(DiskOffline,DiskOnline,DiskFailed,DiskStalled));
// end_wpp
如果您將自定義數據類型新增至本機組態檔,則不需要 begin_wpp組態 和 end_wpp 語句。
新增 -ini 參數
當您建立自定義類型的本機組態檔時,必須將 -ini 參數新增至叫用 WPP 預處理器的 RUN_WPP 語句。
-ini 參數會指示 ETW 除了使用 Defaultwpp.ini之外,還搜尋組態檔 (.ini) 中的組態數據。 例如:
RUN_WPP -km -ini:localwpp.ini
這很重要
您不得在使用者模式應用程式或動態連結庫 (DLL) 的 RUN_WPP 指示詞中指定 -km 參數。
使用自訂數據類型
定義自定義數據類型之後,就可以在追蹤訊息中使用。 在類型名稱前面加上百分比符號 (%),並以驚嘆號 (!) 括住它。 例如:
DoTraceMessage(INFO,"Disk State is %!diskstate!",DiskState);
產生的追蹤訊息會使用您定義的常數來表示值:
DiskState is Offline.