自動ロガー セッションの構成と開始

AutoLogger イベント トレース セッションは、オペレーティング システムのブート プロセスの早い段階で発生したイベントを記録します。 アプリケーションとデバイス ドライバーは、AutoLogger セッションを使用して、ユーザーがログインする前にトレースをキャプチャできます。 ディスク デバイス ドライバーなど、一部のデバイス ドライバーは、AutoLogger セッションの開始時に読み込まれていないことに注意してください。

AutoLogger は、次の点でグローバル ロガーとは異なります。

  • 1 つ以上の AutoLogger セッションを指定できます (グローバル ロガーは、すべてのユーザーがイベントをログに記録する 1 つのセッションでした)。
  • AutoLogger は、セッションの開始時にプロバイダーに有効化通知を送信します (グローバル ロガーはプロバイダーに有効な通知を送信しなかったため、イベントのログ記録を開始するために、プロバイダーは他の方法に依存して、グローバル ロガー セッションが開始されたかどうかを確認する必要がありました)。
  • AutoLogger は NT カーネル ロガー イベントのログ記録をサポートしていません (EVENT_TRACE_PROPERTIESEnableFlags メンバーを参照してください)。 NT カーネル ロガー イベントをログに記録するには、 グローバル ロガーを使用する必要があります。

グローバル ロガーの詳細については、「 グローバル ロガー セッションの構成と開始」を参照してください。

Note

ETW では、Windows Vista 以降の AutoLogger がサポートされています。 以前のオペレーティング システムで グローバル ロガー を使用します。

レジストリを使用して、AutoLogger セッションを構成します。 次のレジストリ キーがまだ存在しない場合は、追加します。

HKEY_LOCAL_MACHINE
   \SYSTEM
      \CurrentControlSet
         \Control
            \WMI
               \Autologger

次の例に示すように、 自動ロガー キーで、構成する各 AutoLogger セッションのキーを作成します。

HKEY_LOCAL_MACHINE
   \SYSTEM
      \CurrentControlSet
         \Control
            \WMI
               \Autologger
                  \Logger Session A
                  \Logger Session B
                  \Logger Session C

セッションごとに、セッションに対して有効にするプロバイダーごとにキーを作成します。 プロバイダーの GUID をキーとして使用します。

HKEY_LOCAL_MACHINE
   \SYSTEM
      \CurrentControlSet
         \Control
            \WMI
               \Autologger
                  \Logger Session A
                     \{ProviderGuid1}
                     \{ProviderGuid2}
                  \Logger Session B
                  \Logger Session C

次の表では、各 AutoLogger セッションに対して定義できる値について説明します。 これらのレジストリ値を指定するには、管理者特権が必要です。 StartGuid の値は、AutoLogger セッションを開始するために必要な唯一の値です。その他のすべての値には、レジストリに値が存在しない場合に使用される既定の設定があります。 通常は、既定値を使用する必要があります。 ETW でサポートできない値を指定すると、ETW によって値がオーバーライドされます。

説明
BufferSize REG_DWORD 各バッファーのサイズ (キロバイト単位)。 1 メガバイト未満にする必要があります。 ETW では、物理メモリのサイズを使用してこの値を計算します。
ClockType REG_DWORD 各イベントのタイム スタンプをログに記録するときに使用するタイマー。
  • 1 = パフォーマンス カウンター値 (高解像度)
  • 2 = システム タイマー
  • 3 = CPU サイクル カウンター
各クロックの種類の説明については、WNODE_HEADERClientContext メンバーを参照してください。
Windows Vista 以降では、既定値は 1 (パフォーマンス カウンター値) です。 Windows Vista より前の既定値は 2 (システム タイマー) です。
DisableRealtimePersistence REG_DWORD リアルタイム永続化を無効にするには、この値を 1 に設定します。 既定値は、リアルタイム セッションの場合は 0 (有効) です。
リアルタイム永続化が有効になっている場合、コンピューターがシャットダウンされた時点までに配信されなかったリアルタイム イベントは保持されます。 その後、コンシューマーが次回セッションに接続すると、イベントがコンシューマーに配信されます。
FileCounter REG_DWORD この値を設定または変更しないでください。 この値は、 FileMax が指定されている場合にログ ファイル名をインクリメントするために使用されるシリアル番号です。 値が無効な場合は、1 と見なされます。
FileName REG_SZ ログ ファイルの完全修飾パス。 このファイルへのパスが存在する必要があります。 ログ ファイルはシーケンシャル ログ ファイルです。 パスは 1024 文字に制限されています。
FileName が指定されていない場合、イベントは %SystemRoot%\System32\LogFiles\WMI<sessionname.etl> に書き込まれます。
FileMax REG_DWORD ETW によって作成されるログ ファイルのインスタンスの最大数。 FileName で指定されたログ ファイルが存在する場合、ETW は FileCounter 値をファイル名に追加します。 たとえば、既定のログ ファイル名が使用されている場合、フォームは %SystemRoot%\System32\LogFiles\WMI<sessionname.etl> です。Nnnn。
コンピューターを初めて起動すると、ファイル名は <sessionname.etl.0001>、2 回目は <sessionname.etl.0002> などになります。 FileMax が 3 の場合、コンピューターの 4 回目の再起動時に、ETW はカウンターを 1 にリセットし、存在する場合は sessionname.etl.0001> を上書き<します。
サポートされているログ ファイルのインスタンスの最大数は 16 です。
この機能は 、EVENT_TRACE_FILE_MODE_NEWFILE ログ ファイル モードでは使用しないでください。
FlushTimer REG_DWORD トレース バッファーが強制的にフラッシュされる頻度 (秒単位)。 最小フラッシュ時間は 1 秒です。 この強制フラッシュは、バッファーがいっぱいになったときとトレース セッションが停止したときに発生する自動フラッシュに加えて行われます。
リアルタイム ロガーの場合、値 0 (既定値) は、フラッシュ時間が 1 秒に設定されることを意味します。 リアルタイム ロガーは、 LogFileModeEVENT_TRACE_REAL_TIME_MODE に設定されている場合です。
既定値は 0 です。 既定では、バッファーは満杯の場合にのみフラッシュされます。
Guid REG_SZ セッションを一意に識別する GUID を含む文字列。 この値は必須です。
LogFileMode REG_DWORD 1 つ以上のログ モードを指定します。 使用可能な値については、「 ログ モード定数」を参照してください。 既定値は EVENT_TRACE_FILE_MODE_SEQUENTIAL です。 ログ ファイルに書き込む代わりに、 EVENT_TRACE_BUFFERING_MODE または EVENT_TRACE_REAL_TIME_MODEを指定できます。
EVENT_TRACE_BUFFERING_MODEを指定すると、ファイル システムが使用可能になったときにセッションの内容をディスクにフラッシュするコストを回避できます。
バッファー サイズは MinimumBuffersBufferSize の積であるため、EVENT_TRACE_BUFFERING_MODEを使用すると、システムは MaximumBuffers 値を無視します。
自動ロガー セッションでは、 EVENT_TRACE_FILE_MODE_NEWFILE ログ モードはサポートされていません。
EVENT_TRACE_FILE_MODE_APPENDを指定する場合、BufferSize は明示的に指定する必要があり、ロガーと追加されるファイルの両方で同じである必要があります。
MaxFileSize REG_DWORD ログ ファイルの最大ファイル サイズ (メガバイト単位)。 循環ログ ファイル モードでない限り、最大サイズに達するとセッションは閉じられます。 制限を指定しない場合は、値を 0 に設定します。 既定値は、設定されていない場合は 100 MB です。 ファイルの最大サイズに達したときに発生する動作は、 LogFileMode の値によって異なります。
MaximumBuffers REG_DWORD 割り当てるバッファーの最大数。 通常、この値はバッファーの最小数に 20 を加えた値です。 ETW は、バッファー サイズと物理メモリのサイズを使用してこの値を計算します。 この値は 、MinimumBuffers の値以上である必要があります。
MinimumBuffers REG_DWORD 起動時に割り当てるバッファーの最小数。 指定できるバッファーの最小数は、プロセッサごとに 2 つのバッファーです。 たとえば、1 台のプロセッサ コンピューターでは、バッファーの最小数は 2 です。
Start REG_DWORD 次回コンピューターが再起動されるときに AutoLogger セッションを開始するには、この値を 1 に設定します。それ以外の場合は、この値を 0 に設定します。
状態 REG_DWORD AutoLogger の起動状態。 AutoLogger を起動できなかった場合、このキーの値は適切な Win32 エラー コードです。 AutoLogger が正常に開始された場合、このキーの値は ERROR_SUCCESS (0) になります。
ブート REG_DWORD この機能は、デバッグ シナリオ以外では使用しないでください。
このレジストリ キーが 1 に設定されている場合、自動ロガーはカーネルの初期化中に通常よりも早く開始され、多くの重要なカーネル サブシステムの初期化中にイベントをキャプチャできるようになります。 ただし、 このオプションを有効にすると、起動時間に悪影響を及 ぼし、自動ロガーに追加の制限が課されます。 この機能が有効になっている場合は、自動ロガー セッション GUID を設定 する必要 があり、他の多くの自動ロガー設定が機能しない可能性があります。
このキーは、Windows Server 2022 以降でサポートされています。

次の表では、セッションに対して有効にするプロバイダーごとに定義できる値について説明します。 これらのレジストリ値を指定するには、管理者特権が必要です。 ETW でサポートできない値を指定すると、ETW によって値がオーバーライドされます。

説明
有効 REG_DWORD プロバイダーが有効になっているかどうかを判断します。 プロバイダーを有効にするには、この値を 1 に設定します。 プロバイダーを無効にするには、この値を 0 に設定します。 既定値は 0 です。
EnableFlags REG_DWORD プロバイダーがイベントを生成するイベントのクラスを指定するプロバイダー定義の値。 詳細については、EnableTrace 関数の EnableFlags パラメーターを参照してください。 プロバイダーが MatchAnyKeyword または MatchAllKeyword をサポートしていない場合は、この値の名前 を指定します
EnableLevel REG_DWORD イベントに含まれる詳細レベルを指定するプロバイダー定義の値。 たとえば、この値を使用して、プロバイダーが生成するイベント (情報、警告、エラー) の重大度レベルを示すことができます。 定義済みのレベルの一覧については、EnableTraceEx 関数の level パラメーターを参照してください。
EnableProperty REG_DWORD ログ ファイルに次の項目の 1 つ以上を含めるには、この値を使用します。
  • EVENT_ENABLE_PROPERTY_SID (0x00000001) = ユーザーのセキュリティ識別子 (SID) を拡張データに含めます。
  • EVENT_ENABLE_PROPERTY_TS_ID (0x00000002) = 拡張データにターミナル セッション識別子を含めます。
  • EVENT_ENABLE_PROPERTY_STACK_TRACE (0x00000004) = EventWrite を使用して書き込まれたイベントの呼び出し履歴トレースを拡張データに含めます。
  • EVENT_ENABLE_PROPERTY_IGNORE_KEYWORD_0 (0x00000010) = 0 以外のキーワード (keyword)が指定されていないすべてのイベントをフィルター処理します。
  • EVENT_ENABLE_PROPERTY_PROVIDER_GROUP (0x00000020) = EnableTraceEx2 へのこの呼び出しで、個々のイベント プロバイダーではなくプロバイダー グループ を有効にする必要があることを示します。
  • EVENT_ENABLE_PROPERTY_PROCESS_START_KEY (0x00000080) = 拡張データにプロセス開始キーを含めます。
  • EVENT_ENABLE_PROPERTY_EVENT_KEY (0x00000100) = 拡張データにイベント キーを含めます。
  • EVENT_ENABLE_PROPERTY_EXCLUDE_INPRIVATE (0x00000200) = InPrivate イベントとしてマークされているか、InPrivate としてマークされているプロセスから取得されたすべてのイベントをフィルター処理します。
これらの項目の詳細については、ENABLE_TRACE_PARAMETERS構造体の EnableProperty に関するページを参照してください。
MatchAnyKeyword REG_QWORD プロバイダーが書き込むイベントのカテゴリを決定するキーワードのビットマスク。 プロバイダーは、イベントのキーワード (keyword)ビットのいずれかが、このマスクに設定されているビットのいずれかと一致する場合に、イベントを書き込みます。 プロバイダーがすべてのイベントを書き込むよう指定するには、この値を 0 に設定します。 例については、 EnableTraceEx 関数の「解説」セクションを参照してください。
MatchAllKeyword REG_QWORD このビットマスクは省略可能です。 このマスクは、プロバイダーが書き込むイベントのカテゴリをさらに制限します。 イベントのキーワード (keyword)が MatchAnyKeyword 条件を満たしている場合、このマスク内のすべてのビットがイベントのキーワード (keyword)に存在する場合にのみ、プロバイダーはイベントを書き込みます。 MatchAnyKeyword が 0 の場合、このマスクは使用されません。 例については、 EnableTraceEx 関数の「解説」セクションを参照してください。

レジストリが変更されると、次回コンピューターが再起動されたときに AutoLogger セッションが開始されます。 AutoLogger セッションは、プロバイダーを有効にするために EnableTraceEx 関数を呼び出します。

AutoLogger セッションはシステムの起動時間を長くし、慎重に使用する必要があります。 ブート プロセス中に情報をキャプチャするサービスでは、AutoLogger セッションを使用する代わりに、コントローラー ロジックをそれ自体に追加することを検討する必要があります。

AutoLogger セッションを停止するには、 ControlTrace 関数を呼び出します。 関数に渡すセッション名は、レジストリでセッションを定義するために使用したレジストリ キーの名前です。

イベント トレース セッションの開始の詳細については、「イベント トレース セッションの 構成と開始」を参照してください。

プライベート ロガー セッションの開始の詳細については、「プライベート ロガー セッションの 構成と開始」を参照してください。

NT カーネル ロガー セッションの開始の詳細については、「NT カーネル ロガー セッション の構成と開始」を参照してください。

プライベート ロガー セッションの構成と開始

SystemTraceProvider セッションの構成と開始

イベント トレース セッションの構成と開始

NT カーネル ロガー セッションの構成と開始

EnableTraceEx2

ENABLE_TRACE_PARAMETERS

EVENT_FILTER_DESCRIPTOR

PAYLOAD_FILTER_PREDICATE

TdhAggregatePayloadFilters

TdhCreatePayloadFilter

イベント トレース セッションの更新