PsSetCreateProcessNotifyRoutine 関数 (ntddk.h)

PsSetCreateProcessNotifyRoutine ルーチンは、プロセスが作成または削除されるたびに呼び出されるルーチンの一覧に、ドライバー指定のコールバック ルーチンを追加するか、そこから削除します。

構文

NTSTATUS PsSetCreateProcessNotifyRoutine(
  [in] PCREATE_PROCESS_NOTIFY_ROUTINE NotifyRoutine,
  [in] BOOLEAN                        Remove
);

パラメーター

[in] NotifyRoutine

呼び出し元が指定したプロセス作成コールバック ルーチンのエントリ ポイントを指定します。 「PCREATE_PROCESS_NOTIFY_ROUTINE」を参照してください。

[in] Remove

NotifyRoutine で指定されたルーチンをシステムの通知ルーチンの一覧に追加するか、システムから削除するかを示します。 FALSE の場合、指定したルーチンがリストに追加されます。 TRUE の場合、指定したルーチンがリストから削除されます。

戻り値

PsSetCreateProcessNotifyRoutine は、次のいずれかを返すことができます。

リターン コード 説明
STATUS_SUCCESS
指定された NotifyRoutine がシステムに登録されるようになりました。
STATUS_INVALID_PARAMETER
指定された NotifyRoutine は既に登録されているため、この呼び出しは冗長呼び出しであるか、システムがプロセス作成コールバックを登録するための制限に達しました。

注釈

最上位レベルのドライバーは 、PsSetCreateProcessNotifyRoutine を呼び出して、 PCREATE_PROCESS_NOTIFY_ROUTINEとして実装されたプロセス作成通知ルーチンを設定できます。

IFS または最高レベルのシステム プロファイル ドライバーでは、プロセス作成コールバックを登録して、ドライバーの内部状態に対するプロセスのシステム全体の作成と削除を追跡できます。 Windows Vista 以降のバージョンの Windows の場合、システムは最大 64 個のプロセス作成コールバック ルーチンを登録できます。

ドライバーは、アンロードする前に登録されているコールバックをすべて削除する必要があります。 コールバックを削除するには、 PsSetCreateProcessNotifyRemove = TRUE を呼び出します。 ドライバーは、 PCREATE_PROCESS_NOTIFY_ROUTINE コールバック ルーチンの実装からこの呼び出しを行う必要があります。

ドライバー指定のルーチンが登録されると、入力 ProcessId ハンドルによって指定された新しく作成されたプロセス内で最初のスレッドが作成された直後に、CreateTRUE に設定された状態で呼び出されます。 入力 ParentId ハンドルは、新しく作成されたプロセスの親プロセスを識別します (これは、優先度、アフィニティ、クォータ、トークン、ハンドル継承などに使用される親です)。

要件

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

こちらもご覧ください

PCREATE_PROCESS_NOTIFY_ROUTINE

PsGetCurrentProcessId

PsSetCreateProcessNotifyRoutineEx

PsSetCreateThreadNotifyRoutine

PsSetLoadImageNotifyRoutine