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 関数は、次の一覧から状態コードを返します。
リターン コード | 説明 |
---|---|
|
イベント プロバイダーが ETW に正常に登録されたことを示します。 |
|
パラメーターが無効であることを示します。 |
|
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) |