鷲ノ巣

C# とか PowerShell とか。当ブログの記事は(特に公開直後は)頻繁に改定される場合があることをご了承ください。

Event Tracing for Windows の概要

今回から本格的に ETW の解説に入っていきたいと思います。

が、まずはコードは無しで。

ETW の構成要素

ETW は、4 つの要素から成ります。

  • セッション
  • コントローラー
  • プロバイダー
  • コンシューマー

f:id:aetos382:20140910001313p:plain

セッション

セッションとは、イベントを記録するための記憶領域です。
セッションには 2 つのモードがあります。
トレース データをファイルに保存する通常モードと、ファイルに保存しないリアルタイム モードです。
データをファイルに保存しておくと、後で何度でも同じセッションを再現することができます。

コントローラー

コントローラーは、セッションを作成して管理する役目です。
セッションの開始、終了のほか、セッションに参加させるプロバイダーを選択したり、プロバイダーが発行するイベントをフィルタリングしたりします。

プロバイダー

プロバイダーは、イベントを発行する役目です。
Windows 2000 以来の旧モデルと、Windows Vista 以降の新モデルがあります。
この連載では新モデルのみを扱います。
1 つのプロバイダーは(コントローラーによって)複数のセッションに参加することができます。
通常、プロバイダーは、自身が参加しているセッションがあるかどうかはあまり気にせず、イベントをガンガン発行していきます。

コンシューマー

コンシューマーは、プロバイダーが発行したイベントを受信する役目です。
セッションにリアルタイムに参加して最新のイベントを処理する他に、ファイルに保存されているセッションを開いて読み取ることもできます。
様々な API を駆使してイベントの内容を解析しなければならないので、コードは最も複雑になります。

今回はここまで

ここで一旦区切ります。

次回はプロバイダーを作ってみます。