EnableTrace

トレースセッション コントローラは、EnableTrace を呼び出して ETW イベントプロバイダがトレースセッションにイベントをどのようにログ記録するかを構成する。EnableTraceEx2 関数がこの関数に代わる。

EnableTrace Enable, EnableFlag, EnableLevel, ControlGuid, TraceHandle

Enable : [int] プロバイダからのイベント受信を有効化する場合、またはプロバイダからのイベント受信時に使用する設定を調整する場合 (たとえばレベルやキーワードを変更する場合) は 1 を設定する。プロバイダからのイベント受信を無効化する場合は 0 を設定する。
EnableFlag : [int] プロバイダに書き込ませたいイベントのカテゴリを決定するキーワードの 32 ビット ビットマスク。プロバイダは通常、イベントのキーワード ビットがこの値で設定されたビットの **いずれか** と一致する場合、またはイベントにキーワード ビットが設定されていない場合、加えて _EnableLevel_ の条件を満たす場合にイベントを書き込む。> [!Note] > EventRegister ベースのプロバイダは 64 ビット キーワードをサポートする。64 ビット _MatchAnyKeyword_ マスクを使用してプロバイダを有効化するには **EnableTraceEx2** を使用する。
EnableLevel : [int] プロバイダに書き込ませたいイベントの最大レベルを示す値。プロバイダは通常、イベントのレベルがこの値以下であり、かつ _EnableFlag_ の条件を満たす場合にイベントを書き込む。この値は 1 から 255 の範囲でなければならない。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_ で定義されている。
ControlGuid : [var] 有効化または無効化するイベントプロバイダの制御 GUID (プロバイダ ID)。
TraceHandle : [int] プロバイダを構成するイベントトレーシングセッションのハンドル。新しいトレースが開始されたとき、[StartTrace](/windows/win32/api/evntrace/nf-evntrace-starttracea) 関数がこのハンドルを返す。既存のトレースのハンドルを取得するには、[ControlTrace](/windows/win32/api/evntrace/nf-evntrace-controltracew) を使用してトレース名に基づいてトレースプロパティをクエリし、返された `EVENT_TRACE_PROPERTIES` データの **Wnode.HistoricalContext** フィールドからハンドルを取得する。

(プラグイン / モジュール : advapi32.dll)

解説

トレースセッション コントローラは、EnableTrace を呼び出して ETW
イベントプロバイダがトレースセッションにイベントをどのようにログ記録するかを構成する。EnableTraceEx2
関数がこの関数に代わる。

[戻り値]
関数が成功した場合、戻り値は ERROR_SUCCESS となる。失敗した場合、戻り値は [system error
codes](/windows/win32/debug/system-error-codes)
のいずれかとなる。一般的なエラーとその原因を以下に示す。- **ERROR_INVALID_PARAMETER**
次のいずれかが真である。- _ControlGuid_ が **NULL** である。- _TraceHandle_ が **NULL**
である。- **ERROR_INVALID_FUNCTION** プロバイダが登録されていない場合は有効化フラグとレベルを変更できない。-
**ERROR_WMI_GUID_NOT_FOUND** プロバイダが登録されていない。KB307331 または Windows 2000
Service Pack 4
がインストールされていて、プロバイダが登録されていない場合に発生する。このエラーを避けるために、プロバイダをあらかじめ登録する必要がある。-
**ERROR_NO_SYSTEM_RESOURCES** プロバイダを有効にできるトレース セッション数を超過した。-
**ERROR_ACCESS_DENIED** 管理者特権を持つユーザー、`Performance Log Users`
グループのユーザー、`LocalSystem`、`LocalService`、`NetworkService`
として実行されているサービスのみが、クロス プロセス
セッションに対してイベントプロバイダを有効化できる。制限付きユーザーにイベントプロバイダを有効化する機能を付与するには、そのユーザーを
`Performance Log Users`
グループに追加するか、[EventAccessControl](/windows/desktop/api/evntcons/nf-evntcons-eventaccesscontrol)
を参照する。**Windows XP と Windows 2000:** 誰でもイベントプロバイダを有効化できる。

[備考]
イベント トレース
コントローラは、この関数を呼び出してセッションにイベントを書き込むイベントプロバイダを構成する。たとえば、コントローラはプロバイダからのイベント収集を開始する、プロバイダから収集しているイベントのレベルやキーワードを調整する、またはプロバイダからのイベント収集を停止するためにこの関数を呼び出すことができる。この関数は非推奨である。追加機能のため、新しいコードでは
[EnableTraceEx2](/windows/win32/api/evntrace/nf-evntrace-enabletraceex2)
を使用すべきである。次の 2 つの関数呼び出しは等価である。
(以下省略)

情報

プラグイン / モジュールadvapi32.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の advapi32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_advapi32_gen2.hs