イベント トレースの新機能

このセクションでは、各リリースで Event Tracing for Windows に追加された新機能について説明します。

Windows 10 バージョン 1709

ETW では、必要に応じて、セッションに対して有効になっているすべてのプロバイダーのバイナリを追跡できるようになりました。 追跡は、呼び出しの前にセッションに対して有効にされたプロバイダーと、セッションで有効になっている今後のすべてのプロバイダーに対して遡及的に適用されます。 オペレーティング システムで許可されているシステム ロガーの現在構成されている最大数に対してクエリを実行することもできます。 詳細については、TRACE_INFO_CLASS列挙の TraceProviderBinaryTracking および TraceMaxLoggersQuery 値に加え、追加のイベント トレース データの取得に関するページを参照してください。

ETW では、イベント名に基づいてイベントをフィルター処理できるようになりました。 スタックをキャプチャするイベントを決定することもできます。 詳細については、EVENT_FILTER_DESCRIPTOR構造体の EVENT_FILTER_TYPE_EVENT_NAMEEVENT_FILTER_TYPE_STACKWALK_NAMEおよびEVENT_FILTER_TYPE_STACKWALK_LEVEL_KW 値、および関連付けられている EVENT_FILTER_EVENT_NAME および EVENT_FILTER_LEVEL_KW 構造体に関 する ページを参照してください。

Windows 10

TraceLogging は ETW に基づいて構築されており、ネイティブ、.NET、WinRT 開発者向けのコードを簡単にインストルメント化する方法を提供します。 TraceLogging を使用すると、構造化データをイベントに含め、イベントを関連付け、個別のインストルメンテーション マニフェスト XML ファイルを必要としません。

プロバイダーの特徴は、 個々のプロバイダー登録により多くのデータを添付する方法として追加されました。 これらは、マニフェスト ベースまたはトレース ログ プロバイダーに使用できます。 これには現在、プロバイダー名またはプロバイダー グループを個々のプロバイダー登録に追加するためのサポートが含まれています。 プロバイダー グループは、複数の ETW プロバイダーを、所属するグループによって集計して制御できるようにする新機能です。

定期的なキャプチャ状態は、キャプチャ状態通知をプロバイダーに定期的に送信できるようにする方法です。 これが有効になっている場合、通知は、以前に現在のセッションに対して有効にされたプロバイダー登録にのみ送信されます。 各プロバイダーは、通知に対する独自の応答 (存在する場合) を定義できます。 実装の詳細については、「 TRACE_PERIODIC_CAPTURE_STATE_INFO」を参照してください。

Windows 8.1 および Windows Server 2012 R2

Windows 8.1 および Windows Server 2012 R2 のイベント トレースに次の機能が追加されました。

EnableTraceEx2 関数で使用されるイベント ペイロード、スコープ、スタック ウォーク フィルターの使用をサポートする関数、およびロガー セッション内の特定の条件をフィルター処理するためのENABLE_TRACE_PARAMETERSおよびEVENT_FILTER_DESCRIPTOR構造体。 詳細については、次を参照してください。

さらに、 EnableTraceEx2 関数と、これらの機能で使用される ENABLE_TRACE_PARAMETERS および EVENT_FILTER_DESCRIPTOR 構造については、大幅に改訂されたドキュメントを参照してください。

新しい TdhCreatePayloadFilter 関数で使用されるトレース セッション内の 1 つのフィールドと、イベント ID とスタック ウォーク フィルターで使用される新しい構造体をフィルター処理する方法を記述するイベント ペイロード フィルター述語を定義する構造体。 詳細については、次を参照してください。

プロバイダー マニフェストに存在するイベントに関する情報を取得する関数。 詳細については、次を参照してください。

新しい TdhEnumerateManifestProviderEvents 関数によって使用されるプロバイダー マニフェスト内のイベントの配列を定義する構造体。 詳細については、次を参照してください。

Windows 8 と Windows Server 2012

Windows 8とWindows Server 2012のイベント トレースに次の機能が追加されました。

登録オブジェクトに対する操作を実行し、イベント ペイロードの解析を提供し、トレース プロバイダーの参照、イベント トレース セッション設定のクエリを実行し、ログに記録されたトレース ファイルを処理する関数。 詳細については、次を参照してください。

トレース プロセスとイベントのログ記録時、特定のイベントのデータへのアクセス、およびイベント トレース ログ (ETL) ファイルの操作を可能にするリロガー機能へのアクセスに関する情報をリロガーに提供するインターフェイス。 詳細については、次を参照してください。

新しい関数とインターフェイスで使用される追加の列挙。 詳細については、次を参照してください。

Windows 7 と Windows Server 2008 R2

このリリースでは、次の機能が追加されました。

  • プロバイダーがマニフェストでフィルターを定義する機能。 Windows Vista では、コントローラーはフィルター データをプロバイダーに渡すことができます。 ただし、フィルター データのレイアウトはマニフェストで定義されていないため、プロバイダーは、コントローラーにフィルター定義を提供するために他の手段を使用する必要があります。 このリリースでは、プロバイダーはマニフェストでフィルター定義を定義できます (ProviderType 複合型の filters 属性を参照)。 その後、コントローラーは TdhEnumerateProviderFilters 関数を使用してフィルター定義を決定できます。 フィルターを使用するプロバイダーは、 EventWriteEx 関数を使用してイベントを書き込む必要があります。
  • 1 つのバッファーを使用して、複数のプロセッサで生成されたイベントを収集する機能。 1 つのバッファーを使用すると、マルチプロセッサ コンピューターでイベントが順序外に表示されなくなります。 詳細については、「 EVENT_TRACE_NO_PER_PROCESSOR_BUFFERING ログ モード」を参照してください。 既定では、ETW はプロセッサごとのバッファーを使用します。
  • イベントのスタック トレースをキャプチャする機能。 カーネル イベントのスタック トレースを有効にするには、 TraceSetInformation 関数を参照してください。 ユーザー イベントのスタック トレースを有効にするには、 ENABLE_TRACE_PARAMETERSEnableProperty メンバーの EVENT_ENABLE_PROPERTY_STACK_TRACE フラグを参照してください。
  • EVENT_TRACE_PRIVATE_LOGGER_MODE ログ モードを使用してEVENT_TRACE_BUFFERING_MODEまたはEVENT_TRACE_FILE_MODE_NEWFILEログ モードを指定する機能 (「ログ モード定数」を参照)。
  • プロバイダーを同期的に有効にする機能。 既定では、プロバイダーは非同期的に有効になります。 プロバイダーを同期的に有効にするには、EnableTraceEx2Timeout パラメーターを設定します。
  • コントローラーがプロバイダーに状態のログ記録を要求する機能。 詳細については、EnableTraceEx2ControlCode パラメーターのEVENT_CONTROL_CODE_CAPTURE_STATE フラグを参照してください。
  • コンシューマーが TdhFormatProperty 関数を使用してイベント データを書式設定する機能。
  • プロバイダーが含まれていないコンピューターでマニフェスト イベントをデコードする機能。 詳細については、 TdhLoadManifest 関数を参照してください。

このリリースでは、次の関数が追加されました。

このリリースでは、次の構造体が追加されました。

このリリースでは、次の列挙が追加されました。

このリリースでは、次の MOF クラスが追加されました。