ETW トレース セッションを開始せずにデバッグを有効にする方法
ETW トレース セッションを開始せずに問題をデバッグするには、ソース コードに WPP_DEBUG マクロ定義を追加します。
WDK Tracedrv.sys サンプル ドライバーの例を次に示します。
#define WPP_DEBUG(b) DbgPrint b, DbgPrint("\n")
ほとんどの形式と引数は、 WPP_DEBUGで使用できます。 ただし、このマクロでは %!HEXDUMP!% などの拡張形式仕様を使用できません。
「ユーザー モード デバッガーにトレース メッセージを送信する方法」も 参照してください。
カーネル デバッガーを使用する場合
カーネル デバッガーを使用している場合は、WPP コントロール構造体のレベルとフラグの値を設定します。
WPP 制御構造のアドレスを次のように見つけます。
kd> x tracedrv!WPP_MAIN_CB // tracedrv is the WPP instrumented driver 9fbf3040 tracedrv!WPP_MAIN_CB = union WPP_PROJECT_CONTROL_BLOCK [1] kd>dt WPP_TRACE_CONTROL_BLOCK 9fbf3040 +0x000 Callback : 0x9fbf127c tracedrv!WppTraceCallback+0 +0x004 ControlGuid : 0x9fbf206c _GUID {d58c126f-b309-11d1-969e-0000f875a5bc} +0x008 Next : (null) +0x010 Logger : 0 +0x018 RegistryPath : (null) +0x01c FlagsLen : 0x1 '' +0x01d Level : 0x0 '' <--- Set the Level +0x01e Reserved : 0 +0x020 Flags : [1] 0x0 <--- Set the Flag
次のように、レベルの値を 5 に設定し、フラグを 0xfに設定します。
kd>eb 9fbf305d 5 // setting the level value to 5
kd>ed 9fbf3060 0xf // setting the flag value to 0xf
(Windows Vista 以降のバージョンの Windows)フィルター マスクを有効にして、次のようにメッセージを受信します。
kd>ed nt!Kd_DEFAULT_Mask 0xff