PsSetCreateProcessNotifyRoutineEx2 函式 (ntddk.h)

PsSetCreateProcessNotifyRoutineEx2 例程會註冊或刪除回呼例程,以在建立或刪除進程時通知呼叫端。

語法

NTSTATUS PsSetCreateProcessNotifyRoutineEx2(
  [in] PSCREATEPROCESSNOTIFYTYPE NotifyType,
  [in] PVOID                     NotifyInformation,
  [in] BOOLEAN                   Remove
);

參數

[in] NotifyType

PSCREATEPROCESSNOTIFYTYPE 類型值,指出進程通知的類型。

[in] NotifyInformation

指定行程通知類型的通知信息位址。 如果 NotifyTypePsCreateProcessNotifySubsystems,NotifyInformationPCREATE_PROCESS_NOTIFY_ROUTINE_EX,指定呼叫端提供進程建立回呼的進入點。

[in] Remove

布爾值,指定 PsSetCreateProcessNotifyRoutineEx2 是否會從回呼例程清單中新增或移除指定的例程。 如果此參數為 TRUE,則會從回呼例程清單中移除指定的例程。 如果此參數為 FALSE,則會將指定的例程新增至回呼例程清單。 如果 RemoveTRUE,系統也會等待所有執行中的回呼例程完成,然後再傳回。

傳回值

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

傳回碼 Description
STATUS_SUCCESS
指定的例程現在已向操作系統註冊。 每當建立新的進程時,操作系統就會呼叫此例程。
STATUS_INVALID_PARAMETER
指定的例程已註冊,或操作系統已達到註冊進程建立回呼例程的限制。

NotifyType 不是 PsCreateProcessNotifySubsystems

STATUS_ACCESS_DENIED
包含回呼例程指標的映像未在其映像標頭中設定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

PsSetCreateProcessNotifyRoutine

PsSetCreateProcessNotifyRoutineEx