SystemTraceProvider セッションの構成と開始
SystemTraceProvider は、Windows 7、Windows Server 2008 R2 以降でサポートされているカーネル イベントの定義済みセットを持つカーネル プロバイダーです。 Windows 7 および Windows Server 2008 R2 では、SystemTraceProvider は NT カーネル ロガー セッションにのみ使用できます。
Windows 8、Windows Server 2012以降では、SystemTraceProvider は最大 8 つのロガー セッションに対して多重化できます。 ロガー セッションの最初の 2 つのスロットは、NT カーネル ロガーと循環カーネル コンテキスト ロガー 用に予約されています。
NT カーネル ロガー セッションをトレース プロバイダーとして使用する方法の詳細については、「 NT カーネル ロガー セッションの構成と開始」を参照してください。
Windows 10 SDK ビルド 20348 以降では、SystemTraceProvider は個別のシステム プロバイダーを使用して構成できます。これは、Windows イベント プロバイダーの標準イベント トレースのように EnableTraceEx2 で制御できます。 システム プロバイダー、キーワード、および対応するレガシ フラグとグループの完全な一覧については、「システム プロバイダー」を参照してください。
SystemTraceProvider セッションを有効にする
SystemTraceProvider が NT カーネル ロガー以外のセッションを開始できるようにするには、次のコマンドを実行します。
tracelog -start MySession -f c:\Kernel1.etl -eflag PROC_THREAD+LOADER+CSWITCH
プログラムによって SystemTraceProvider が NT カーネル ロガー以外のセッションを開始できるようにするには、次の手順を使用します。
プライベート ロガー名を定義します。
#define PRIVATE_LOGGER_NAME L"一部のプライベート トレース セッション"
コントローラーで、 EVENT_TRACE_PROPERTIES 構造体の次のメンバーを設定します。
LogFileMode を EVENT_TRACE_SYSTEM_LOGGER_MODE に設定します。
KERNEL_LOGGER_NAMEの代わりに、LoggerName をプライベート ロガーに設定します。
EVENT_TRACE_PROPERTIES構造体の Wnode.Guid メンバーが SystemTraceControlGuid に設定されていないことを確認します。 このメンバーに新しい GUID を 割り当てる必要があります。
コンシューマーで、EVENT_TRACE_LOGFILE構造体の LoggerName メンバーをこのプライベート ロガーに設定します。
Note
管理者以外または TCB 以外のプロセスが、サードパーティアプリケーションの代わりに SystemTraceProvider を使用してプロファイリング トレース セッションを開始できるようにする場合は、ユーザー プロファイル特権を付与してから、このユーザーをセッション GUID (ロガー セッション用に作成) とシステム トレース プロバイダー GUID の両方に追加して、システム トレース プロバイダー を 有効にする必要があります。 詳細については、 EventAccessControl 関数を参照してください。
関連トピック