クイック スタート: 最初のトレースを処理する

Windows イベント トレーシング (ETW) トレース内のデータにアクセスするのに、TraceProcessor をお試しください。 TraceProcessor を使用すると、ETW トレースのデータに .NET オブジェクトとしてアクセスできます。

このクイック スタートでは、次を行う方法について説明します。

  1. TraceProcessing NuGet パッケージをインストールする。
  2. TraceProcessor を作成する。
  3. TraceProcessor を使用して、トレースに含まれるプロセス コマンド ラインにアクセスする。

前提条件

Visual Studio 2019

TraceProcessing NuGet パッケージをインストールする

.NET TraceProcessing は、NuGet から次のパッケージ ID を使用して入手できます。

Microsoft.Windows.EventTracing.Processing.All

このパッケージをコンソール アプリで使用して、ETW トレース (.etl ファイル) に含まれるプロセスのコマンド ラインの一覧を表示できます。

  1. 新しい .NET コンソール アプリを作成します。 Visual Studio で、[ファイル]、[新規作成]、[プロジェクト]、[...] の順に選択し、C# のコンソール アプリ テンプレートを選択します。

    プロジェクトの名前 (例: TraceProcessorQuickstart) を入力し、[作成] を選択します。

  2. ソリューション エクスプローラーで、[依存関係] を右クリックし、[NuGet パッケージの管理...] を選択して、[参照] タブに切り替えます。

  3. [検索] ボックスに「Microsoft.Windows.EventTracing.Processing.All」と入力して検索します。

    その名前の NuGetパッケージで [インストール] を選択し、その NuGet のウィンドウを閉じます。

TraceProcessor を作成する

  1. 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");
            }
        }
    }
    
  2. プロジェクトの実行中に使用するトレース名を指定します。

    ソリューション エクスプローラーで、プロジェクトを右クリックして、[プロパティ] を選択します。 [デバッグ] タブに切り替えて、[アプリケーション引数] にトレース (.etl ファイル) へのパスを入力します。

    まだトレース ファイルがない場合は、Windows パフォーマンス レコーダーを使用して作成できます。

  3. アプリケーションを実行します。

    [デバッグ]、[デバッグなしで開始] を選択してコードを実行します。

TraceProcessor を使用して、トレースに含まれるプロセスのコマンド ラインにアクセスする

  1. 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);
                }
            }
        }
    }
    
  2. アプリケーションをもう一度実行する

    今回は、トレースの記録中に実行されていたすべてのプロセスのコマンド ラインの一覧が表示されます。

次の手順

このクイックスタートでは、コンソール アプリケーションを作成し、TraceProcessor をインストールして、それを使用して ETW トレースからプロセスのコマンド ラインにアクセスしました。 これで、トレース データにアクセスするアプリケーションが作成されました。

プロセス情報は、アプリケーションでアクセスできる、ETW トレースに格納されている多くの種類のデータの 1 つに過ぎません。

次の手順では、TraceProcessor の詳細を確認し、そこでアクセスできるその他のデータ ソースについて説明します。