このセクションでは、 Windows ソフトウェア トレース プリプロセッサ (WPP) を使用して、ソフトウェア コンポーネント (トレース プロバイダー) の操作をトレースする方法について説明します。 トレース プロバイダーには、次のいずれかを指定できます。
カーネル モード ドライバー。
ユーザー モード ドライバー、アプリケーション、またはダイナミック リンク ライブラリ (DLL)。
WPP ソフトウェア トレースは、トレース プロバイダーの操作を簡略にトレースする方法を追加することで、WMI イベント トレースを補完および強化します。 これは、トレース プロバイダーがリアルタイムのバイナリ メッセージをログに記録するための効率的なメカニズムです。 その後、ログに記録されたメッセージを人間が判読できる形でトレース プロバイダーの操作記録に変換できます。
WPP ソフトウェア トレースを使用する必要がある場合 |
---|
WPP ソフトウェア トレースは、開発時のコードのデバッグを主に目的としています。 開発中のトレースに加えて、構造化 ETW イベントに関心のあるアプリケーションが使用できるイベントを発行する場合は、次のコマンドを使用します。
|
WPP ソフトウェア トレースを使用したメッセージのログ記録は、Windows イベント ログ サービスの使用と似ています。 ドライバーは、メッセージ ID と書式設定されていないバイナリ データをログ ファイルに記録します。 その後、後処理プログラムはログ ファイル内の情報を人間が判読できる形式に変換します。 ただし、WPP ソフトウェア トレースでは、イベント ログ サービスでサポートされる形式よりも高い能力と柔軟性を備えたメッセージ形式がサポートされています。 たとえば、WPP ソフトウェア トレースには、IP アドレス、GUID、システム ID、タイム スタンプ、およびその他の便利なデータ型が組み込まれています。 さらに、ユーザーはアプリケーションに関連するカスタム データ型を追加できます。
WPP ソフトウェア トレース プロセスの概要
ドライバーまたはアプリケーションに WPP ソフトウェア トレースを追加するための基本的なプロセスには、次の手順が含まれています。 WDK で提供されている Visual Studio テンプレートのいずれかを使用して WDF ドライバーを作成すると、作業の多くが行われます。
ドライバーまたはアプリケーションを トレース プロバイダーとして一意に識別するコントロール GUID を定義します。 プロバイダーは、 WPP_CONTROL_GUIDS マクロの定義と 、Tracelog または別の トレース コントローラーによって使用される関連するコントロール ファイルで、この GUID を指定します。
「Windows ドライバーへの WPP ソフトウェア トレースの追加」および「WPP ソフトウェア トレース リファレンス」の説明に従って、必要な WPP 関連の C プリプロセッサ ディレクティブと WPP マクロ呼び出しをプロバイダーのソース ファイルに追加します。
Windows ドライバーへの WPP ソフトウェア トレースの追加の 手順 6 で説明されているように、WPP プリプロセッサを実行し、ドライバーをビルドするように Visual Studio プロジェクトを変更します。 その他のビルド時間オプションについては、 WPP プリプロセッサ を参照してください。
ドライバーまたはコンポーネントをインストールします。 トレース セッションを開始し、トレース メッセージを記録します。 TraceView、Tracelog、Tracefmt、Tracepdb などのソフトウェア トレース用のツールを使用して、トレース セッションの構成、開始、停止、トレース メッセージの表示とフィルター処理を行います。 これらのツールは、Windows Driver Kit (WDK) に含まれています。
このセクションでは...
- Windows ドライバーへの WPP ソフトウェア トレースの追加
- トレースを記録するインフライトトレースレコーダー
- トレース プロバイダーでの WPP ソフトウェア トレースの使用
- トレース プロバイダーへの WPP マクロの追加
- WPP プリプロセッサ
- WDF ドライバーのトレースと診断可能性
手記 Event Tracing for Windows (ETW) と WPP では、ほとんどの種類のカーネル モード ドライバーとユーザー モード ドライバーがサポートされています。 ただし、ETW と WPP は、ミニポート ドライバーなど、特定の種類のドライバーでは使用できない型を使用します。 特定のドライバーの種類がサポートされているかどうかを確認するには、ドライバーに基本的な WPP マクロ ( WPP_INIT_TRACING や WPP_CLEANUPなど) を追加します。 使用されている型が定義されていないためにコードがコンパイルされない場合、ETW と WPP はドライバーの種類をサポートできません。
ETW の詳細については、「 Windows のイベント トレース」を参照してください。
手記 WPP トレース プロバイダーは、一度に 1 つのトレース セッションでのみ有効にすることができます。 詳細については、 WPP プロバイダーを 参照してください。
WPP ソフトウェア トレースをサポートする WMI ライブラリサポート ルーチンの詳細については、次を参照してください。