Windowsイベントトレースの理解_ETW

  • Windowsイベントトレースの理解_ETW

ETWの理解

不要な情報をいくつか除外しました。完全なドキュメントは次のリンクをご参照ください: https://docs.microsoft.com/en-us/windows/win32/etw/event-tracing-portal

基礎の理解

https://learn.microsoft.com/en-us/windows/win32/etw/about-event-tracing

アーキテクチャ

Session

4種類のsessionが存在します

sessionの種類 使用 制限 特徴
Event Tracing Session(Standard ETW) 1. EVENT_TRACE_PROPERTIES2. StartTrace, session作成3. EnableTrace 1. EnableTrace for classic provider 2. EnableTraceEx for manifest-based provider4. ControlTrace  session停止 - 1つのmanifest-based providerは、最大8つのsessionにイベントを提供できるだけ- classic providerは1つのsessionだけにサービスできる- sessionのprovider取得動作は後から来たもの優先です 標準ETW.
SystemTraceProvider Session 1. EVENT_TRACE_PROPERTIES->EnableFlags2. StartTrace3. ControlTrace  session停止 - SystemTraceProviderはカーネルイベントproviderで、一連の事前定義されたカーネルイベントを提供します- NT Kernel Logger sessionはシステム事前設定sessionで、システム事前定義のカーネルイベント群を記録します- Win7/WinServer2008R2ではSystemTraceProviderを使用できるのはNT Kernel Logger sessionだけです- Win8/WinServer2012ではSystemTraceProviderは8つのlogger sessionにイベントを提供でき、そのうち2つはNT Kernel LoggerとCircular Kernel Context Loggerに固定されています- Win10 20348以降、各System providerは個別に制御できます。 システムカーネルの事前定義イベント取得
AutoLogger session 1. レジストリの変更 2. EnableTraceEx3. ControlTrace  session停止 - **Global Logger Session**は特殊独立sessionで、システム起動時のイベントを記録します- 通常のAutoLoggerはproviderを自ら有効にする必要がありますが、GlobalLoggerは不要です- AutoLoggerはNT Kernel Loggerイベントをサポートせず、GlobalLoggerだけがサポートします- 起動時間に影響するため、使用は節度を持ってください OS起動期間のイベント記録
Private Logger Session - - User-mode ETW- プロセス内でのみ使用- 64 session並行制限に含まれません プロセスプライベート

ツール

  • logman
  • wevtutil
    • xpathクエリ例: wevtutil qe Security /c:2 /q:"*[System[EventID=5157]]" /f:text
  • tracelog
    • viusal studioのtracelogツールを使用すると、実行時に動的にETW Providerの追加・削除や、ETW Sessionの追加・削除ができます
  • mc
  • etw-providers-docs