次の方法で共有


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

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

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

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

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

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 各バッファーのサイズ (KB 単位)。 1 メガバイト未満にする必要があります。 ETW では、物理メモリのサイズを使用してこの値を計算します。
時計タイプ REG_DWORD 各イベントのタイム スタンプをログに記録するときに使用するタイマー。
  • 1 = パフォーマンス カウンター値 (高解像度)
  • 2 = システム タイマー
  • 3 = CPU サイクル カウンター
各クロックの種類の説明については、WNODE_HEADERClientContext メンバーを参照してください。
Windows Vista 以降では、既定値は 1 (パフォーマンス カウンター値) です。 Windows Vista より前の既定値は 2 (システム タイマー) です。
リアルタイム永続化を無効にする REG_DWORD リアルタイム永続化を無効にするには、この値を 1 に設定します。 リアルタイム セッションの既定値は 0 (有効) です。
リアルタイム永続化が有効になっている場合、コンピューターがシャットダウンされた時点までに配信されなかったリアルタイム イベントは保持されます。 その後、コンシューマーが次にセッションに接続すると、イベントがコンシューマーに配信されます。
FileCounter REG_DWORD この値は設定または変更しないでください。 この値は、 FileMax が指定されている場合にログ ファイル名をインクリメントするために使用されるシリアル番号です。 値が無効な場合は、1 が想定されます。
ファイル名 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 秒に設定されることを意味します。 リアルタイム ロガーは、 LogFileMode が EVENT_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 値を無視します。
AutoLogger セッションは 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 です。
始める 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 以外のキーワードが指定されていないすべてのイベントをフィルターで除外します。
  • 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 プロバイダーが書き込むイベントのカテゴリを決定するキーワードのビットマスク。 イベントのキーワード ビットのいずれかが、このマスクに設定されているビットのいずれかと一致する場合、プロバイダーはイベントを書き込みます。 プロバイダーがすべてのイベントを書き込むよう指定するには、この値を 0 に設定します。 例については、 EnableTraceEx 関数の「解説」セクションを参照してください。
MatchAllKeyword REG_QWORD このビットマスクは省略可能です。 このマスクにより、プロバイダーが書き込むイベントのカテゴリがさらに制限されます。 イベントのキーワードが MatchAnyKeyword 条件を満たしている場合、プロバイダーは、このマスク内のすべてのビットがイベントのキーワードに存在する場合にのみ、イベントを書き込みます。 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

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