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 值:
傳回碼 | Description |
---|---|
|
指定的例程現在會向操作系統註冊。 每當建立新的進程時,操作系統就會呼叫這個例程。 |
|
指定的例程已註冊,或操作系統已達到註冊進程建立回呼例程的限制。 |
|
包含回呼例程指標的映像未在其映像標頭中設定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) |