カスタム データ型を定義する方法
Event Tracing for Windows (ETW) では、トレース関数で使用する単純型と複合型がいくつか定義されています。 これらの型は、Defaultwpp.ini ファイルで宣言されます。 ただし、独自のカスタム データ型を作成できます。
変数を宣言し、整数ではなく意味のある用語を使用して変数の値を記述する場合は、カスタム データ型を使用します。
たとえば、 DiskState 変数にはディスクの状態が含まれます。 DiskState の値は次のとおりです。
DiskOffline = 0
DiskOnline = 1
DiskFailed = 2
DiskStalled = 3
トレース メッセージで "DiskState=2" を読み取り、 2 の意味を調べるのではなく、 DiskState という名前のカスタム型を定義して、"DiskState は失敗しました" というトレース メッセージを取得できます。
カスタムデータ型の作成
カスタム データ タイプを作成するには、次の手順を実行します。
localwpp.iniなど、.iniファイル名拡張子を持つローカル構成ファイルを作成します。 ヘッダーまたはソース ファイルにカスタム型を追加することはできません。
TYPEMACRO 定数を使用して、カスタム データ型を定義します。
ソースまたはヘッダー ファイル内の構成データを特定します。
ソース ファイルの RUN_WPP マクロに -ini パラメーターを追加します。
トレース メッセージでカスタム データ型を使用します。
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 config ステートメントと end_wpp ステートメントを使用して、ファイル内の構成データを識別します。 次に例を示します。
// begin_wpp config
//TYPEMACRO(DiskState,ItemListLong(DiskOffline,DiskOnline,DiskFailed,DiskStalled));
// end_wpp
カスタム データ型をローカル構成ファイルに追加した場合、 begin_wpp 構成 ステートメントと end_wpp ステートメントは必要ありません。
-ini パラメーターを追加します。
カスタム型のローカル構成ファイルを作成する場合は、WPP プリプロセッサを呼び出す RUN_WPP ステートメントに -ini パラメーターを追加する必要があります。
-ini パラメーターは、Defaultwpp.iniの使用に加えて、構成ファイル (.ini) 内の構成データを検索するように ETW に指示します。 次に例を示します。
RUN_WPP -km -ini:localwpp.ini
重要
注 ユーザー モード アプリケーションまたはダイナミック リンク ライブラリ (DLL) の RUN_WPP ディレクティブに -km スイッチを指定しないでください。
カスタム データ型の使用
カスタム データ型を定義したら、トレース メッセージで使用できます。 型名の前にパーセント記号 (%) を付け、感嘆符 (!) で囲みます。 次に例を示します。
DoTraceMessage(INFO,"Disk State is %!diskstate!",DiskState);
結果のトレース メッセージでは、定義した定数を使用して値を表します。
DiskState is Offline.