EnableTraceEx 関数 (evntrace.h)
トレース セッション コントローラーは EnableTraceEx を 呼び出して、ETW イベント プロバイダーがイベントをトレース セッションに記録する方法を構成します。
この関数は、現在使用されていません。 EnableTraceEx2 関数は、この関数よりも優先されます。
構文
ULONG WMIAPI EnableTraceEx(
[in] LPCGUID ProviderId,
[in, optional] LPCGUID SourceId,
CONTROLTRACE_ID TraceId,
[in] ULONG IsEnabled,
[in] UCHAR Level,
[in] ULONGLONG MatchAnyKeyword,
[in] ULONGLONG MatchAllKeyword,
[in] ULONG EnableProperty,
[in, optional] PEVENT_FILTER_DESCRIPTOR EnableFilterDesc
);
パラメーター
[in] ProviderId
構成するイベント プロバイダーのプロバイダー ID (制御 GUID)。
[in, optional] SourceId
この構成要求のソースを一意に識別できる GUID、またはソース ID が必要ない場合は NULL ( SourceId を に &GUID_NULL
設定することと同じです)。 指定した場合、この値はプロバイダーの EnableCallback を呼び出すときに SourceId パラメーターとして使用されます。
注意
EnableTrace の呼び出しとプロバイダーの EnableCallback への対応する呼び出しの間には、常に直接マッピングが存在するとは限りません。 たとえば、まだ登録されていないプロバイダーに対して EnableTrace が呼び出された場合、EnableCallback の呼び出しは登録が行われるまで延期され、トレース コンシューマー セッションが停止した場合、対応する EnableTrace の呼び出しがなかった場合でも、ETW は EnableCallback を呼び出します。 このような場合、 EnableTrace は SourceId を GUID_NULL に設定して呼び出されます。
TraceId
[in] IsEnabled
プロバイダーからのイベントの受信を有効にする場合、またはプロバイダーからイベントを受信するときに使用する設定を調整するには、1 に設定します (レベルやキーワードを変更する場合など)。 プロバイダーからのイベントの受信を無効にするには、0 に設定します。
[in] Level
プロバイダーが書き込むイベントの最大レベルを示す 値。 プロバイダーは、通常、イベントのレベルがこの値以下の場合、 MatchAnyKeyword と MatchAllKeyword の条件を満たすだけでなく、イベントを書き込みます。
Microsoft では、次に示すように、レベル 1 から 5 のセマンティクスを定義します。 値が小さいほど、より重大なイベントを示します。 EnableLevel の各値は、指定されたレベルとより厳しいレベルをすべて有効にします。 たとえば、 を指定 TRACE_LEVEL_WARNING
すると、コンシューマーは警告、エラー、重大なイベントを受け取ります。
値 | 意味 |
---|---|
TRACE_LEVEL_CRITICAL (1) | 異常終了イベントまたは終了イベント |
TRACE_LEVEL_ERROR (2) | 重大なエラー イベント |
TRACE_LEVEL_WARNING (3) | 割り当てエラーなどの警告イベント |
TRACE_LEVEL_INFORMATION (4) | エラー以外の情報イベント |
TRACE_LEVEL_VERBOSE (5) | 詳細な診断イベント |
定数は TRACE_LEVEL
evntrace.h で定義されます。 同等 WINMETA_LEVEL
の定数は winmeta.h で定義されます。
[in] MatchAnyKeyword
プロバイダーが書き込むイベントのカテゴリを決定するキーワードの 64 ビット ビットマスク。 プロバイダーは、通常、イベントのキーワード ビットがこの値に設定 されているビットのいずれか と一致する場合、またはイベントにキーワード ビットが設定されていない場合、 Level および MatchAllKeyword の条件を満たすだけでなく、イベントを書き込みます。
[in] MatchAllKeyword
プロバイダーが書き込むイベントを制限するキーワードの 64 ビット ビットマスク。 プロバイダーは、通常、イベントのキーワード ビットがこの値に設定 されているすべての ビットと一致する場合、またはイベントにキーワード ビットが設定されていない場合に、 Level と MatchAnyKeyword の条件を満たすだけでなく、イベントを書き込みます。
この値は、多くの場合、0 に設定されます。
[in] EnableProperty
このプロバイダーからイベントを収集するときに ETW ランタイムが有効にする必要がある特別な動作を指定するフラグ。 特別な動作を有効にするには、次のフラグを 1 つ以上指定します。 それ以外の場合は、 EnableProperty を 0 に設定します。
注意
これらのフラグのいくつかは、ETW が各イベントに追加情報を含める必要があることを示しています。 データは、イベントの 拡張データ項目 セクションに書き込まれます。
値 | 意味 |
---|---|
EVENT_ENABLE_PROPERTY_SID | 拡張データにユーザーのセキュリティ識別子 (SID) を含めます。 |
EVENT_ENABLE_PROPERTY_TS_ID | 拡張データにターミナル セッション識別子を含めます。 |
EVENT_ENABLE_PROPERTY_IGNORE_KEYWORD_0 | トレース セッションでは、キーワードが 0 のイベントを記録しないでください。 |
[in, optional] EnableFilterDesc
フィルター データを指す EVENT_FILTER_DESCRIPTOR 構造体。 プロバイダーはこれを使用してデータをフィルター処理し、フィルター条件に一致しないイベントがセッションに書き込まれないようにします。 プロバイダーは、データのレイアウトと、フィルターをイベントのデータに適用する方法を決定します。 セッションでプロバイダーに渡すことができるフィルターは 1 つだけです。
セッションは TdhEnumerateProviderFilters 関数を呼び出して、プロバイダーがサポートを登録したフィルターを検索できます。
戻り値
関数が成功した場合、戻り値はERROR_SUCCESS。
関数が失敗した場合、戻り値は システム エラー コードの 1 つです。 一般的なエラーとその原因を次に示します。
ERROR_INVALID_PARAMETER
次のいずれかが当てはまります。
- ProviderId が NULL です。
- TraceHandle は NULL です。
ERROR_INVALID_FUNCTION
プロバイダーが登録されていない場合は、レベルを更新できません。
ERROR_NO_SYSTEM_RESOURCES
プロバイダーを有効にできるトレース セッションの数を超えました。
ERROR_ACCESS_DENIED
管理者特権を持つユーザー、グループ内の
Performance Log Users
ユーザー、および 、、またはNetworkService
としてLocalService
LocalSystem
実行されているサービスを持つユーザーのみが、クロスプロセス セッションに対してイベント プロバイダーを有効にすることができます。 制限付きユーザーにイベント プロバイダーを有効にする機能を付与するには、グループにPerformance Log Users
追加するか、「 EventAccessControl」を参照してください。Windows XP と Windows 2000: イベント プロバイダーは誰でも有効にできます。
注釈
イベント トレース コントローラーは、この関数を呼び出して、セッションにイベントを書き込むイベント プロバイダーを構成します。 たとえば、コントローラーは、プロバイダーからのイベントの収集を開始したり、プロバイダーから収集されるイベントのレベルまたはキーワードを調整したり、プロバイダーからのイベントの収集を停止したりするために、この関数を呼び出す場合があります。
この関数は、現在使用されていません。 追加の機能については、新しいコードで EnableTraceEx2 を使用する必要があります。
ほとんどの場合、 EnableTraceEx の呼び出しは、次のように EnableTraceEx2 に変換できます。
// Obsolete:
Status =
EnableTraceEx(
ProviderId,
NULL, // SourceId
TraceHandle,
IsEnabled,
Level,
MatchAnyKeyword,
MatchAllKeyword,
0, // EnableProperty
NULL); // EnableFilterDesc
// Updated equivalent code:
Status = EnableTraceEx2(
TraceHandle,
ProviderId,
IsEnabled,
Level,
MatchAnyKeyword,
MatchAllKeyword,
0, // Timeout
NULL); // EnableParameters
より複雑なシナリオでは、 EnableTraceEx の呼び出しを次のように EnableTraceEx2 に変換できます。
// Obsolete:
Status =
EnableTraceEx(
ProviderId,
SourceId,
TraceHandle,
IsEnabled,
Level,
MatchAnyKeyword,
MatchAllKeyword,
EnableProperty,
EnableFilterDesc);
// Updated equivalent code:
ENABLE_TRACE_PARAMETERS EnableParameters = {
ENABLE_TRACE_PARAMETERS_VERSION_2,
EnableProperty,
0, // ControlFlags
SourceId ? *SourceId : GUID_NULL,
EnableFilterDesc,
EnableFilterDesc ? 1 : 0 };
Status = EnableTraceEx2(
TraceHandle,
ProviderId,
IsEnabled,
Level,
MatchAnyKeyword,
MatchAllKeyword,
0, // Timeout
&EnableParameters);
セッションのプロバイダーを構成するセマンティクスの詳細については、 EnableTraceEx2 のドキュメントを参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ | UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2008 [デスクトップ アプリ | UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | evntrace.h |
Library | Advapi32.lib |
[DLL] | Advapi32.dll |