Windowsイベントトレースの理解_ETW
Categories:
- 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
- xpathクエリ例:
- tracelog
- viusal studioの
tracelogツールを使用すると、実行時に動的にETW Providerの追加・削除や、ETW Sessionの追加・削除ができます
- viusal studioの
- mc
- etw-providers-docs