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,則會將指定的例程新增至回呼例程清單。 如果 RemoveTRUE,系統也會等候所有執行中的回呼例程在傳回之前完成。

傳回值

PsSetCreateProcessNotifyRoutineEx 會傳回下列其中一個 NTSTATUS 值:

傳回碼 Description
STATUS_SUCCESS
指定的例程現在會向操作系統註冊。 每當建立新的進程時,操作系統就會呼叫這個例程。
STATUS_INVALID_PARAMETER
指定的例程已註冊,或操作系統已達到註冊進程建立回呼例程的限制。
STATUS_ACCESS_DENIED
包含回呼例程指標的映像未在其映像標頭中設定IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY。

備註

最高層級驅動程式可以呼叫 PsSetCreateProcessNotifyRoutineEx 來註冊 PCREATE_PROCESS_NOTIFY_ROUTINE_EX 例程。 可安裝的文件系統 (IFS) 或最高層級的系統分析驅動程式可能會註冊進程建立回呼例程,以追蹤針對整個系統驅動程式的內部狀態建立和刪除哪些進程。

驅動程式必須移除它卸除之前所註冊的任何回呼例程。 您可以呼叫 PsSetCreateProcessNotifyRoutineEx 並將 Remove 設定為 TRUE 來移除回呼例程。 驅動程式不得從其 實作PCREATE_PROCESS_NOTIFY_ROUTINE_EX 回呼例程進行此呼叫。

操作系統會在已停用 一般核心 APC 的重要區域中,於PASSIVE_LEVEL呼叫驅動程式的進程通知例程。 建立進程時,進程通知例程會在建立新進程的線程內容中執行。 刪除進程時,進程通知例程會在最後一個線程的內容中執行,以結束進程。

規格需求

需求
最低支援的用戶端 從 Windows Vista SP1 和 Windows Server 2008 開始提供。
目標平台 Universal
標頭 ntddk.h (包含 Ntddk.h)
程式庫 NtosKrnl.lib
Dll NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 合規性規則 HwStorPortProhibitedDIS (storport) PowerIrpDDis (wdm)

另請參閱

PCREATE_PROCESS_NOTIFY_ROUTINE_EX

PS_CREATE_NOTIFY_INFO

PsSetCreateProcessNotifyRoutine