TraceProcessor を試して、Windows イベント トレーシング (ETW) トレースのデータにアクセスします。 TraceProcessor を使用すると、ETW トレース データに .NET オブジェクトとしてアクセスできます。
このクイック スタートでは、次の方法を学習します。
- TraceProcessing NuGet パッケージをインストールします。
- TraceProcessor を作成します。
- TraceProcessor を使用して、トレースに含まれるプロセス コマンド ラインにアクセスします。
[前提条件]
Visual Studio 2019
TraceProcessing NuGet パッケージをインストールする
.NET TraceProcessing は、次のパッケージ ID を持つ NuGet から使用できます。
Microsoft.Windows.EventTracing.Processing.All
このパッケージをコンソール アプリで使用して、ETW トレース (.etl ファイル) に含まれるプロセス コマンド ラインを一覧表示できます。
新しい .NET コンソール アプリを作成します。 Visual Studio で、[ファイル]、[新規作成]、[プロジェクト]、[...] の順に選択し、C# のコンソール アプリ テンプレートを選択します。
プロジェクト名 (TraceProcessorQuickstart など) を入力し、[作成] を選択します。
ソリューション エクスプローラーで[依存関係]を右クリックし、[NuGet パッケージの管理]を選択します。..をクリックし、[参照] タブに切り替えます。
[検索] ボックスに「Microsoft.Windows.EventTracing.Processing.All」と入力し、検索します。
その名前の NuGet パッケージにインストールを選択し、NuGet ウィンドウを閉じます。
TraceProcessor を作成する
Program.csを次の内容に変更します。
using Microsoft.Windows.EventTracing; using Microsoft.Windows.EventTracing.Processes; using System; class Program { static void Main(string[] args) { if (args.Length != 1) { Console.Error.WriteLine("Usage: <trace.etl>"); return; } using (ITraceProcessor trace = TraceProcessor.Create(args[0])) { // TODO: call trace.Use... trace.Process(); Console.WriteLine("TODO: Access data from the trace"); } } }
プロジェクトの実行時に使用するトレース名を指定します。
ソリューション エクスプローラーで、プロジェクトを右クリックし、[プロパティ] を選択します。 [デバッグ] タブに切り替え、アプリケーション引数にトレース (.etl ファイル) へのパスを入力します。
トレース ファイルがまだない場合は、 Windows パフォーマンス レコーダー を使用して作成できます。
アプリケーションを実行します。
[デバッグ]、[デバッグなしで開始] の順に選択して、コードを実行します。
TraceProcessor を使用して、トレースに含まれるプロセス コマンド ラインにアクセスする
Program.csを次の内容に変更します。
using Microsoft.Windows.EventTracing; using Microsoft.Windows.EventTracing.Processes; using System; class Program { static void Main(string[] args) { if (args.Length != 1) { Console.Error.WriteLine("Usage: <trace.etl>"); return; } using (ITraceProcessor trace = TraceProcessor.Create(args[0])) { IPendingResult<IProcessDataSource> pendingProcessData = trace.UseProcesses(); trace.Process(); IProcessDataSource processData = pendingProcessData.Result; foreach (IProcess process in processData.Processes) { Console.WriteLine(process.CommandLine); } } } }
アプリケーションをもう一度実行する
今回は、トレースの記録中に実行されていたすべてのプロセスのコマンド ラインの一覧が表示されます。
次のステップ
このクイック スタートでは、コンソール アプリケーションを作成し、TraceProcessor をインストールし、それを使用して ETW トレースからプロセス コマンド ラインにアクセスしました。 これで、トレース データにアクセスするアプリケーションが作成されました。
プロセス情報は、アプリケーションがアクセスできる ETW トレースに格納されているさまざまな種類のデータの 1 つに過ぎません。
次のステップは、TraceProcessor とアクセスできるその他のデータソースを詳細に確認することです。
Windows developer