EtwRegister 関数 (wdm.h)

EtwRegister 関数はイベント プロバイダーを登録し、プロバイダーがトレースを開始する前に呼び出す必要があります。 EtwRegister 関数は、ユーザー モード EventRegister 関数に対応するカーネル モードです。 関数は、追加のイベント フィルター機能を提供するために使用できるオプションのコールバック関数へのポインターを提供することもできます。

構文

NTSTATUS EtwRegister(
  [in]           LPCGUID            ProviderId,
  [in, optional] PETWENABLECALLBACK EnableCallback,
  [in, optional] PVOID              CallbackContext,
  [out]          PREGHANDLE         RegHandle
);

パラメーター

[in] ProviderId

イベント プロバイダー GUID へのポインター。

[in, optional] EnableCallback

省略可能なコールバック関数へのポインター。 コールバック関数は、追加のイベント フィルター機能を提供します。 コールバック関数はユーザー定義です。

[in, optional] CallbackContext

関数は、コールバックが行われると、オプションのコールバック コンテキストを返します。 プロバイダーを登録するときに、省略可能なコンテキストを指定できます。 CallbackContext パラメーターは、C++ クラスのように、1 つのコールバックが複数のプロバイダーによって共有されるシナリオをサポートします。 CallbackContext は、有効化コールバックのターゲット プロバイダー インスタンスを区別する方法を提供します。

[out] RegHandle

関数呼び出しが成功した場合にプロバイダー登録ハンドルを受け取る変数へのポインター。

戻り値

EtwRegister 関数は、次の一覧から状態コードを返します。

リターン コード 説明
STATUS_SUCCESS
イベント プロバイダーが ETW に正常に登録されたことを示します。
STATUS_INVALID_PARAMETER
パラメーターが無効であることを示します。
STATUS_Xxx
NTSTATUS 値で指定された理由で要求が失敗したことを示します。 実際の状態のリターン コードの詳細については、Ntstatus.h を参照してください。

注釈

カーネル モード ドライバーは、イベントをトレースする前に、 EtwRegister 関数を使用してイベント プロバイダーとして登録する必要があります。 カーネル モード ドライバーが EtwRegister を呼び出すと、関数は登録ハンドルを返します。 この登録ハンドルを使用すると、特定のプロバイダーに対してキーワード (keyword)またはレベルが有効になっているかどうかをテストし、イベント トレースとログ関数を呼び出すことができます。 トレースが完了したら、ドライバーは EtwUnregister 関数を呼び出してプロバイダーの登録を解除する必要があります。 EtwRegister の呼び出しごとに、EtwUnregister への対応する呼び出しが必要です。 イベント プロバイダーの登録解除に失敗すると、プロセスに関連付けられているコールバック関数が無効になったため、プロセスがアンロードされたときにエラーが発生する可能性があります。 EtwRegister 関数と EtwUnregister 関数によってバインドされたコードの外側にあるトレース呼び出し行う必要はありません。 最適なパフォーマンスを得る場合は、DriverEntry ルーチンで EtwRegister 関数を呼び出し、DriverUnload ルーチンで EtwUnregister 関数を呼び出すことができます。

EtwRegister の呼び出し元は、システム スレッドのコンテキストで IRQL = PASSIVE_LEVELで実行されている必要があります。

要件

要件
サポートされている最小のクライアント Windows Vista 以降のバージョンの Windows で使用できます。
対象プラットフォーム ユニバーサル
Header wdm.h (Wdm.h、Ntddk.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI コンプライアンス規則 HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

こちらもご覧ください

EtwUnregister