PsSetCreateProcessNotifyRoutineEx2 函式 (ntddk.h)
PsSetCreateProcessNotifyRoutineEx2 例程會註冊或移除回呼例程,以在建立或刪除進程時通知呼叫端。
語法
NTSTATUS PsSetCreateProcessNotifyRoutineEx2(
[in] PSCREATEPROCESSNOTIFYTYPE NotifyType,
[in] PVOID NotifyInformation,
[in] BOOLEAN Remove
);
參數
[in] NotifyType
PSCREATEPROCESSNOTIFYTYPE-type 值,指出進程通知的類型。
[in] NotifyInformation
指定行程通知類型的通知信息位址。 如果 NotifyTypePsCreateProcessNotifySubsystems,NotifyInformation 是指定呼叫端所提供進程建立回呼進入點的 PCREATE_PROCESS_NOTIFY_ROUTINE_EX。
[in] Remove
布爾值,指定 PsSetCreateProcessNotifyRoutineEx2 是否會從回呼例程清單中新增或移除指定的例程。 如果此參數 TRUE,則會從回呼例程清單中移除指定的例程。 如果此參數 FALSE,則指定的例程會新增至回呼例程清單。 如果 移除為 TRUE,系統也會等候所有內部回呼例程在傳回之前完成。
傳回值
PsSetCreateProcessNotifyRoutineEx2 會傳回下列其中一個 NTSTATUS 值:
傳回碼 | 描述 |
---|---|
|
指定的例程現在已向作系統註冊。 每當建立新的進程時,作系統就會呼叫此例程。 |
|
指定的例程已註冊,或作系統已達到註冊進程建立回呼例程的限制。
NotifyType 不是 PsCreateProcessNotifySubsystems。 |
|
包含回呼例程指標的影像未在其映像標頭中設定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