PsSetCreateProcessNotifyRoutineEx 関数 (ntddk.h)
PsSetCreateProcessNotifyRoutineEx ルーチンは、プロセスの作成時または終了時に呼び出し元に通知するコールバック ルーチンを登録または削除します。
構文
NTSTATUS PsSetCreateProcessNotifyRoutineEx(
[in] PCREATE_PROCESS_NOTIFY_ROUTINE_EX NotifyRoutine,
[in] BOOLEAN Remove
);
パラメーター
[in] NotifyRoutine
登録または削除する PCREATE_PROCESS_NOTIFY_ROUTINE_EX ルーチンへのポインター。 オペレーティング システムは、新しいプロセスが作成されるたびにこのルーチンを呼び出します。
[in] Remove
PsSetCreateProcessNotifyRoutineEx がコールバック ルーチンの一覧で指定したルーチンを追加または削除するかどうかを指定するブール値。 このパラメーターが TRUE の場合、指定されたルーチンはコールバック ルーチンの一覧から削除されます。 このパラメーターが FALSE の場合、指定したルーチンがコールバック ルーチンの一覧に追加されます。 Remove が TRUE の場合、システムは、すべてのインフライト コールバック ルーチンが完了するまで待機してから、 を返します。
戻り値
PsSetCreateProcessNotifyRoutineEx は 、次のいずれかの NTSTATUS 値を返します。
リターン コード | 説明 |
---|---|
|
指定されたルーチンがオペレーティング システムに登録されました。 オペレーティング システムは、新しいプロセスが作成されるたびにこのルーチンを呼び出します。 |
|
指定されたルーチンが既に登録されているか、オペレーティング システムがプロセス作成コールバック ルーチンを登録するための制限に達しました。 |
|
コールバック ルーチン ポインターを含むイメージには、イメージ ヘッダーにIMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITYが設定されていませんでした。 |
注釈
最上位レベルのドライバーは 、PsSetCreateProcessNotifyRoutineEx を呼び出して 、PCREATE_PROCESS_NOTIFY_ROUTINE_EX ルーチンを登録できます。 インストール可能なファイル システム (IFS) または最高レベルのシステム プロファイル ドライバーは、システム全体でドライバーの内部状態に対して作成および削除されるプロセスを追跡するプロセス作成コールバック ルーチンを登録する場合があります。
ドライバーは、アンロードする前に登録されているコールバック ルーチンを削除する必要があります。 コールバック ルーチンを削除するには、 PsSetCreateProcessNotifyRoutineEx を呼び出し、 Remove を TRUE に設定 します。 ドライバーは、 PCREATE_PROCESS_NOTIFY_ROUTINE_EX コールバック ルーチンの実装からこの呼び出しを行う必要があります。
オペレーティング システムは、 通常のカーネル APC が 無効になっているクリティカルリージョン内のPASSIVE_LEVELでドライバーのプロセス通知ルーチンを呼び出します。 プロセスが作成されると、プロセス通知ルーチンは、新しいプロセスを作成したスレッドのコンテキストで実行されます。 プロセスが削除されると、プロセス通知ルーチンは、プロセスから終了する最後のスレッドのコンテキストで実行されます。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | SP1 および Windows Server 2008 で Windows Vista 以降で使用できます。 |
対象プラットフォーム | ユニバーサル |
Header | ntddk.h (Ntddk.h を含む) |
Library | NtosKrnl.lib |
[DLL] | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI コンプライアンス規則 | HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm) |