PsSetCreateProcessNotifyRoutineEx2 函式 (ntddk.h)
PsSetCreateProcessNotifyRoutineEx2 例程會註冊或刪除回呼例程,以在建立或刪除進程時通知呼叫端。
語法
NTSTATUS PsSetCreateProcessNotifyRoutineEx2(
[in] PSCREATEPROCESSNOTIFYTYPE NotifyType,
[in] PVOID NotifyInformation,
[in] BOOLEAN Remove
);
參數
[in] NotifyType
PSCREATEPROCESSNOTIFYTYPE 類型值,指出進程通知的類型。
[in] NotifyInformation
指定行程通知類型的通知信息位址。 如果 NotifyType 是 PsCreateProcessNotifySubsystems,NotifyInformation 是PCREATE_PROCESS_NOTIFY_ROUTINE_EX,指定呼叫端提供進程建立回呼的進入點。
[in] Remove
布爾值,指定 PsSetCreateProcessNotifyRoutineEx2 是否會從回呼例程清單中新增或移除指定的例程。 如果此參數為 TRUE,則會從回呼例程清單中移除指定的例程。 如果此參數為 FALSE,則會將指定的例程新增至回呼例程清單。 如果 Remove 為 TRUE,系統也會等待所有執行中的回呼例程完成,然後再傳回。
傳回值
PsSetCreateProcessNotifyRoutineEx2 會傳回下列其中一個 NTSTATUS 值:
傳回碼 | Description |
---|---|
|
指定的例程現在已向操作系統註冊。 每當建立新的進程時,操作系統就會呼叫此例程。 |
|
指定的例程已註冊,或操作系統已達到註冊進程建立回呼例程的限制。
NotifyType 不是 PsCreateProcessNotifySubsystems。 |
|
包含回呼例程指標的映像未在其映像標頭中設定IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY。 |
備註
驅動程式可以呼叫 PsSetCreateProcessNotifyRoutineEx2 來註冊其程式建立通知例程。
註冊驅動程式提供的例程之後,會使用 由已 建立或刪除進程之 Process) Id 所指示的唯一標識碼 (呼叫。 ParentId 會識別新進程的父進程, (這是用於優先順序、親和性、配額、令牌和處理繼承的父進程,如果是使用繼承句柄選項建立,則) 。 如果建立時沒有繼承句柄選項,則父進程標識碼為 NULL。
如果 Create 值為 TRUE,則會建立子系統進程;FALSE 表示進程已刪除。
建立進程時,會在建立進程的第一個線程之後叫用回呼函式。 相反地,為了刪除,會在進程的最後一個線程終止且即將刪除位址空間之後叫用 函式。 只有在建立和刪除進程時,才會叫用回呼進行刪除,而不需要建立線程的情況下進行建立呼叫。
驅動程式必須移除它卸除之前所註冊的任何回呼函式。 您可以使用 Remove = TRUE 呼叫 PsSetCreateProcessNotifyRoutineEx2 來移除回呼。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 10 (版本 1703) |
最低支援的伺服器 | Windows Server 2016 |
目標平台 | Universal |
標頭 | ntddk.h (包含 Ntddk.h) |
程式庫 | NtosKrnl.lib |
Dll | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI 合規性規則 | HwStorPortProhibitedDIS、 PowerIrpDDis |
另請參閱
PCREATE_PROCESS_NOTIFY_ROUTINE_EX