グローバル ロガー セッションの構成と開始

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

注意

Windows Vista でグローバル ロガー セッションを作成する場合は、代わりに AutoLogger セッション を作成することを検討する必要があります。

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

HKEY_LOCAL_MACHINE
   \SYSTEM
      \CurrentControlSet
         \Control
            \WMI

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

説明
Start REG_DWORD この値を 1 (オン) に設定すると、次回システムが起動した時点でグローバル ロガー セッションが開始されます。 セッションの開始を停止するには、この値を 0 (オフ) に設定します。
BufferSize REG_DWORD 各バッファーのサイズ (キロバイト単位)。 この値は 1 メガバイト未満にする必要があります。 ETW では、物理メモリのサイズを使用してこの値を計算します。
ClockType REG_DWORD 各イベントのタイム スタンプをログに記録するときに使用するタイマー。
  • 1 = パフォーマンス カウンター値 (高解像度)
  • 2 = システム タイマー
  • 3 = CPU サイクル カウンター
各クロックの種類の説明については、WNODE_HEADERClientContext メンバーを参照してください。
Windows Vista 以降では、既定値は 1 (パフォーマンス カウンター値) です。 Windows Vista より前の既定値は 2 (システム タイマー) です。
EnableKernelFlags REG_BINARY 1 つ以上のカーネル プロバイダーを有効にするには、この値を使用します。 カーネル プロバイダーを有効にした場合、グローバル ロガー セッションは起動時に NT カーネル ロガーに名前を変更します。 使用可能な値については、EVENT_TRACE_PROPERTIESEnableFlags メンバーを参照してください。
FileCounter REG_DWORD グローバル ロガー セッションによって生成されるイベント トレース ログ ファイルの数。 この値は、 FileMax の値に達するまでインクリメントされます。 次に、値を 0 にリセットします。 このカウンターにより、システムはグローバル ロガー トレース ログ ファイルを上書きできなくなります。
FileMax REG_DWORD システムで許可されているイベント トレース ログ ファイルの最大数。 トレース ログの数が指定された最大値に達すると、最も古いログから始まるログの上書きが開始されます。
FileName で指定されたログ ファイルが存在する場合、ETW は FileCounter 値をファイル名に追加します。 たとえば、既定のログ ファイル名が使用されている場合、フォームは %SystemRoot%\System32\LogFiles\WMI\GlobalLogger.etl.NNNN です。
既定値は 0 です。つまり、最大値はありません。
FileName REG_SZ ログ ファイルの完全修飾パス。 このファイルへのパスが存在する必要があります。 ログ ファイルはシーケンシャル ログ ファイルです。 グローバル ロガー セッションにイベントを書き込むすべてのプロバイダーは、このログ ファイルにイベントを書き込みます。 パスは 1024 文字に制限されています。 FileName が 指定されていない場合、イベントは %SystemRoot%\System32\LogFiles\WMI\GlobalLogger.etl に書き込まれます。 Windows Vista より前: 既定のファイルは %SystemRoot%\System32\LogFiles\WMI\Trace.log です。

FlushTimer REG_DWORD トレース バッファーが強制的にフラッシュされる頻度 (秒単位)。 最小フラッシュ時間は 1 秒です。 この強制フラッシュは、バッファーがいっぱいになったときとトレース セッションが停止したときに発生する自動フラッシュに加えて行われます。
リアルタイム ロガーの場合、値 0 (既定値) は、フラッシュ時間が 1 秒に設定されることを意味します。 リアルタイム ロガーは、 LogFileModeEVENT_TRACE_REAL_TIME_MODE に設定されている場合です。
既定値は 0 です。 既定では、バッファーは満杯の場合にのみフラッシュされます。
LogFileMode REG_DWORD ログ セッション オプションを指定します。 値については、「 ログ モード定数」を参照してください。 この値は、Windows Vista 以降でサポートされています。
MaximumBuffers REG_DWORD 割り当てるバッファーの最大数。 通常、この値はバッファーの最小数に 20 を加えた値です。 ETW は、バッファー サイズと物理メモリのサイズを使用してこの値を計算します。 この値は 、MinimumBuffers の値以上である必要があります。
MaxFileSize REG_DWORD イベント トレース ログ ファイルの最大サイズ (メガバイト単位)。 既定では、最大ファイル サイズは指定されていません。
MinimumBuffers REG_DWORD グローバル ロガー セッションの開始時に割り当てるバッファーの最小数。 指定できるバッファーの最小数は、プロセッサごとに 2 つのバッファーです。 たとえば、1 台のプロセッサ コンピューターでは、バッファーの最小数は 2 です。
単一プロセッサ システムの既定値は0x3。
状態 REG_DWORD グローバル ロガーの起動状態。 グローバル ロガーの起動に失敗した場合、このキーの値は適切な Win32 エラー コードです。 グローバル ロガーが正常に開始された場合、このキーの値は ERROR_SUCCESS (0) になります。

レジストリが変更され、コンピューターが再起動されると、グローバル ロガー セッションが自動的に開始され、他のセッションと同様に使用されます。1 つの例外があります。グローバル ロガー セッションを参照するには、WMI_GLOBAL_LOGGER_ID定数ハンドル (Wmistr.h で定義) を使用します。 この定数は、セッション ハンドルを受け入れるイベント トレース関数の引数として使用できます。 セッション名を受け入れる関数では、GLOBAL_LOGGER_NAMEを使用します。

グローバル ロガー コントローラーは、プロバイダーを有効にするために EnableTrace 関数を呼び出しません。 プロバイダーは、グローバル ロガー セッションが開始されたかどうかを判断し、それ自体を有効にする役割を担います。

グローバル ロガー セッションが開始されているかどうかを確認するには、 ControlTrace 関数を呼び出し、 SessionHandle を WMI_GLOBAL_LOGGER_ID に設定し、 ControlCodeEVENT_TRACE_CONTROL_QUERYに設定します。 ControlTrace 呼び出しが成功した場合、グローバル ロガー セッションが存在し、プロバイダーはそれ自体を有効にして、グローバル ロガー セッションにイベントを記録できます (グローバル ロガーがアクティブでない場合、ControlTrace 関数はERROR_WMI_INSTANCE_NOT_FOUNDを返します)。

通常、プロバイダーを有効にする場合、コントローラーは有効化フラグとレベルをプロバイダーに渡す役割を担いますが、グローバル ロガー コントローラーはプロバイダーを有効にしないため、必要に応じてこの情報をプロバイダー自身に渡す必要があります。

グローバル ロガー セッションは限られたリソースであり、慎重に使用する必要があります。 ブート プロセス中に情報をキャプチャするサービスでは、グローバル ロガー セッションを使用するのではなく、コントローラー ロジックをそれ自体に追加することを検討する必要があります。

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

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

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