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 を呼び出します。 このような場合、 EnableTraceSourceIdGUID_NULL に設定して呼び出されます。

TraceId

[in] IsEnabled

プロバイダーからのイベントの受信を有効にする場合、またはプロバイダーからイベントを受信するときに使用する設定を調整するには、1 に設定します (レベルやキーワードを変更する場合など)。 プロバイダーからのイベントの受信を無効にするには、0 に設定します。

[in] Level

プロバイダーが書き込むイベントの最大レベルを示す 値。 プロバイダーは、通常、イベントのレベルがこの値以下の場合、 MatchAnyKeywordMatchAllKeyword の条件を満たすだけでなく、イベントを書き込みます。

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_LEVELevntrace.h で定義されます。 同等 WINMETA_LEVEL の定数は winmeta.h で定義されます。

[in] MatchAnyKeyword

プロバイダーが書き込むイベントのカテゴリを決定するキーワードの 64 ビット ビットマスク。 プロバイダーは、通常、イベントのキーワード ビットがこの値に設定 されているビットのいずれか と一致する場合、またはイベントにキーワード ビットが設定されていない場合、 Level および MatchAllKeyword の条件を満たすだけでなく、イベントを書き込みます。

[in] MatchAllKeyword

プロバイダーが書き込むイベントを制限するキーワードの 64 ビット ビットマスク。 プロバイダーは、通常、イベントのキーワード ビットがこの値に設定 されているすべての ビットと一致する場合、またはイベントにキーワード ビットが設定されていない場合に、 LevelMatchAnyKeyword の条件を満たすだけでなく、イベントを書き込みます。

この値は、多くの場合、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

    次のいずれかが当てはまります。

    • ProviderIdNULL です
    • TraceHandleNULL です
  • ERROR_INVALID_FUNCTION

    プロバイダーが登録されていない場合は、レベルを更新できません。

  • ERROR_NO_SYSTEM_RESOURCES

    プロバイダーを有効にできるトレース セッションの数を超えました。

  • ERROR_ACCESS_DENIED

    管理者特権を持つユーザー、グループ内のPerformance Log Usersユーザー、および 、、または NetworkService としてLocalServiceLocalSystem実行されているサービスを持つユーザーのみが、クロスプロセス セッションに対してイベント プロバイダーを有効にすることができます。 制限付きユーザーにイベント プロバイダーを有効にする機能を付与するには、グループに 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

こちらもご覧ください

StartTrace

EnableTraceEx2