PsSetCreateProcessNotifyRoutineEx2 函数 (ntddk.h)

PsSetCreateProcessNotifyRoutineEx2 例程注册或删除回调例程,在创建或删除进程时通知调用方。

语法

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

参数

[in] NotifyType

PSCREATEPROCESSNOTIFYTYPE类型值,指示进程通知的类型。

[in] NotifyInformation

指定类型的进程通知的通知信息的地址。 如果 NotifyTypePsCreateProcessNotifySubsystemsNotifyInformation 是指定调用方提供的进程创建回调入口点的 PCREATE_PROCESS_NOTIFY_ROUTINE_EX

[in] Remove

一个布尔值,该值指定 PsSetCreateProcessNotifyRoutineEx2 是否会在回调例程列表中添加或删除指定的例程。 如果此参数 TRUE,则会从回调例程列表中删除指定的例程。 如果此参数 FALSE,则指定的例程将添加到回调例程列表中。 如果 删除TRUE,系统还会等待所有正在进行的回调例程在返回之前完成。

返回值

PsSetCreateProcessNotifyRoutineEx2 返回以下 NTSTATUS 值之一:

返回代码 描述
STATUS_SUCCESS
指定的例程现已注册到作系统。 每当创建新进程时,作系统都调用此例程。
STATUS_INVALID_PARAMETER
指定的例程已注册,或者作系统已达到注册进程创建回调例程的限制。

NotifyTypePsCreateProcessNotifySubsystems

STATUS_ACCESS_DENIED
包含回调例程指针的图像在其映像标头中未设置IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY。

言论

驱动程序可以调用 PsSetCreateProcessNotifyRoutineEx2 来注册其进程创建通知例程。

注册驱动程序提供的例程后,使用创建或删除的进程的唯一 ID(由 ProcessId指示)调用该例程。 ParentId 标识新进程的父进程(这是用于优先级、相关性、配额、令牌和处理继承等的父进程),如果使用继承句柄选项创建。 如果创建时没有继承句柄选项,则父进程 ID 为 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 符合性规则 HwStorPortProhibitedDDI、PowerIrpDDis

另请参阅

PCREATE_PROCESS_NOTIFY_ROUTINE_EX

PsSetCreateProcessNotifyRoutine

PsSetCreateProcessNotifyRoutineEx