WPP ソフトウェア トレース

このセクションでは、 Windows ソフトウェア トレース プリプロセッサ (WPP) を使用して、ソフトウェア コンポーネント (トレース プロバイダー) の操作をトレースする方法について説明します。 トレース プロバイダーには、次のいずれかを指定できます。

  • カーネル モード ドライバー

  • ユーザー モード ドライバー、アプリケーション、またはダイナミック リンク ライブラリ (DLL)。

WPP ソフトウェア トレースは、トレース プロバイダーの操作のトレースを簡略化する方法を追加することで、 WMI イベント トレース を補完および強化します。 これは、トレース プロバイダーがリアルタイムのバイナリ メッセージをログに記録するための効率的なメカニズムです。 その後、ログに記録されたメッセージを、トレース プロバイダーの操作の人間が判読できるトレースに変換できます。

WPP ソフトウェア トレースを使用する必要がある場合

WPP ソフトウェア トレースは、開発時のコードのデバッグを主に目的としています。 開発中のトレースに加えて、構造化 ETW イベントに関心のあるアプリケーションが使用できるイベントを発行する場合は、次のコマンドを使用します。

詳細については、「WPP ソフトウェア トレースまたは Windows イベント トレーシング (ETW) API を使用するタイミング」を参照してください 。

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 プリプロセッサ を参照してください。

  • ドライバーまたはコンポーネントをインストールします。 トレース セッションを開始し、トレース メッセージを記録します。 TraceViewTracelogTracefmtTracepdb などのソフトウェア トレース用のツールを使用して、トレース セッションの構成、開始、停止、トレース メッセージの表示とフィルター処理を行います。 これらのツールは、Windows Driver Kit (WDK) に含まれています。

このセクションの内容

注: Windows イベント トレーシング (ETW) と WPP では、ほとんどの種類のカーネル モード ドライバーとユーザー モード ドライバーがサポートされています。 ただし、ETW と WPP は、ミニポート ドライバーなど、特定の種類のドライバーでは使用できない型を使用します。 特定のドライバーの種類がサポートされているかどうかを確認するには、ドライバーに基本的な WPP マクロ (WPP_INIT_TRACINGWPP_CLEANUPなど) を追加します。 使用されている型が定義されていないためにコードがコンパイルされない場合、ETW と WPP はドライバーの種類をサポートできません。

ETW の詳細については、イベント トレーシングに関する記事を参照してください。

注: WPP トレース プロバイダーは、一度に 1 つのトレース セッションでのみ有効にできます。 詳しくは、「WPP プロバイダー」をご覧ください。

WPP ソフトウェア トレースをサポートする WMI ライブラリサポート ルーチンの詳細については、次を参照してください。

WmiQueryTraceInformation

WmiTraceMessage

WmiTraceMessageVa