次の方法で共有


グローバル ロガー セッションにログ記録する方法

グローバル ロガー トレース セッションにログを記録するようにドライバーを構成するには、次の手順に従います。

  1. 次の定義をドライバー コードに追加します。 WPP_CONTROL_GUIDS マクロ定義と トレース メッセージ ヘッダー ファイルの include ステートメントの間に定義を挿入します。

    #define WPP_GLOBALLOGGER
    
  2. Tracelog を使用して、グローバル ロガー トレース セッションを構成します。 もっとも簡単なコマンドは次のようになります。

    tracelog -start GlobalLogger
    

    グローバル ロガー トレース セッションを構成するためのパラメーターを含む完全な手順については、「Tracelog コマンド構文」および「グローバル ロガー トレース セッション」を参照してください。

    例については、「例 13: グローバル ロガー セッションの作成」を参照してください。

    このコマンドはトレース セッションを作成して構成しますが、システムを再起動するまでセッションは開始されません (手順 5)。

  3. HKLM\System\CurrentControlSet\Control\WMI\GlobalLogger サブキーの下に、トレース プロバイダーの コントロール GUID という名前のサブキーを追加します。 Windows Vista 以降のバージョンの Windows では、コントロール GUID は中かっこ ( {} ) で囲む必要があります。

    tracelog -start GlobalLogger コマンドは、 GlobalLogger サブキーをレジストリに追加します。 ControlGUID サブキーは、グローバル ロガー トレース セッションの トレース プロバイダー としてドライバーを確立します。

    たとえば、Windows XP を実行しているコンピューターでグローバル ロガー トレース セッションにログを記録するように Tracedrv サンプル ドライバーを構成するには、 Tracedrv コントロール GUID、d58c126f-b309-11d1-969e-0000f875a5bc: HKLM\SYSTEM\CurrentControlSet\Control\WMI\GlobalLogger\d58c126f-b309-11d1-969e-0000f875a5bc という名前のサブキーを追加します。

    ソフトウェア トレース用に設計されたサンプル ドライバーである TraceDrv は、GitHub の Windows ドライバー サンプル リポジトリで入手できます。

  4. トレース プロバイダーを構成するには、 ControlGUID サブキーに次のレジストリ エントリを追加します。 これらのエントリは省略可能であり、その値はドライバーによって定義されます。

    エントリ名 データの種類 説明

    フラグ

    REG_DWORD

    プロバイダーの トレース フラグ を指定します。

    フラグの意味は、各トレース プロバイダーによって個別に決定されます。 通常、フラグは、段階的に詳細になるレポート レベルを表します。

    Level

    REG_DWORD

    プロバイダーの トレース レベル を指定します。

    レベル 値の意味は、各トレース プロバイダーによって個別に決定されます。 通常、トレース レベルはイベントの重大度 (情報、警告、またはエラー) を表します。

Flags エントリの名前は複数形で、 Level エントリの名前は単数形であることに注意してください。

  1. システムを再起動します。 これにより、グローバル ロガー トレース セッションが開始されます。

テストが完了したら、 ControlGUID サブキーを削除するか、 GlobalLogger サブキーの Start エントリ の値を 0 に設定します。 そうしないと、システムを再起動するたびにグローバル ロガー セッションが実行され、ドライバーがログに記録されます。

コメント

WPP_GLOBALLOGGERが存在する場合、WPP はレジストリを読み取るコードを追加し、グローバル ロガー セッションが実行されているかどうか、およびドライバーがグローバル ロガー セッションへのトレースを有効にしているかどうかを判断します。 このコードは、ドライバーが標準トレース セッションから受信する有効化通知の代わりに使用されます。

また、グローバル ロガー セッションではコールバック通知が提供されないため、Windows ではコールバックが発生したと見なされ、それに応じて続行されます。

WPP 定義では少量のコードのみが生成されるため、テスト後にコードから削除する必要はありません。