次の方法で共有


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

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

このクイック スタートでは、次の方法を学習します。

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

[前提条件]

Visual Studio 2019

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

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

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 とアクセスできるその他のデータソースを詳細に確認することです。