共用方式為


PsSetCreateProcessNotifyRoutineEx2 函式 (ntddk.h)

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

語法

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

參數

[in] NotifyType

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

[in] NotifyInformation

指定行程通知類型的通知信息位址。 如果 NotifyTypePsCreateProcessNotifySubsystemsNotifyInformation 是指定呼叫端所提供進程建立回呼進入點的 PCREATE_PROCESS_NOTIFY_ROUTINE_EX

[in] Remove

布爾值,指定 PsSetCreateProcessNotifyRoutineEx2 是否會從回呼例程清單中新增或移除指定的例程。 如果此參數 TRUE,則會從回呼例程清單中移除指定的例程。 如果此參數 FALSE,則指定的例程會新增至回呼例程清單。 如果 移除為 TRUE,系統也會等候所有內部回呼例程在傳回之前完成。

傳回值

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

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

NotifyType 不是 PsCreateProcessNotifySubsystems

STATUS_ACCESS_DENIED
包含回呼例程指標的影像未在其映像標頭中設定IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY。

言論

驅動程式可以呼叫 PsSetCreateProcessNotifyRoutineEx2 來註冊其程式建立通知例程。

註冊驅動程式提供的例程之後,會以所建立或刪除進程的唯一標識碼(以 ProcessId表示)呼叫。 ParentId 識別新進程的父進程(這是使用繼承句柄選項建立時用於優先順序、親和性、配額、令牌和句柄繼承的父進程等等)。 如果建立時沒有繼承句柄選項,則父進程標識碼為 NULL。

如果 建立 值為 TRUE,則會建立子系統進程;FALSE 表示進程已刪除。

建立進程時,會在建立進程的第一個線程之後叫用回呼函式。 相反地,為了刪除,函式會在進程的最後一個線程終止且位址空間即將刪除之後叫用。 只有在建立和刪除進程且未建立線程的情況下,才叫用回呼進行刪除,而不需取得建立呼叫。

驅動程式必須移除在卸除之前註冊的任何回呼函式。 您可以使用 remove = TRUE呼叫 PsSetCreateProcessNotifyRoutineEx2 來移除回呼。

要求

要求 價值
最低支援的用戶端 Windows 10 版本 1703
支援的最低伺服器 Windows Server 2016
目標平臺 普遍
標頭 ntddk.h (包括 Ntddk.h)
連結庫 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 合規性規則 HwStorPortProhibitedDDIs, PowerIrpDDis

另請參閱

PCREATE_PROCESS_NOTIFY_ROUTINE_EX

PsSetCreateProcessNotifyRoutine

PsSetCreateProcessNotifyRoutineEx