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

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

Windows 10 バージョン 1709

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

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 ファイルを必要としません。

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

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

Windows 8.1 および Windows Server 2012 R2

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

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_BUFFERING_MODEまたはEVENT_TRACE_FILE_MODE_NEWFILEログ モードをEVENT_TRACE_PRIVATE_LOGGER_MODEログ モードで指定する機能 (「ログ モード定数」を参照)。
  • プロバイダーを同期的に有効にする機能。 既定では、プロバイダーは非同期的に有効になります。 プロバイダーを同期的に有効にするには、EnableTraceEx2Timeout パラメーターを設定します。
  • プロバイダーがその状態をログに記録するようにコントローラーが要求する機能。 詳細については、EnableTraceEx2ControlCode パラメーターのEVENT_CONTROL_CODE_CAPTURE_STATE フラグを参照してください。
  • コンシューマーが TdhFormatProperty 関数を使用してイベント データを書式設定する機能。
  • プロバイダーが含まれていないコンピューター上のマニフェスト イベントをデコードする機能。 詳細については、 TdhLoadManifest 関数を参照してください。

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

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

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

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