PsSetCreateProcessNotifyRoutineEx 函数 (ntddk.h)

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

语法

NTSTATUS PsSetCreateProcessNotifyRoutineEx(
  [in] PCREATE_PROCESS_NOTIFY_ROUTINE_EX NotifyRoutine,
  [in] BOOLEAN                           Remove
);

参数

[in] NotifyRoutine

指向要注册或删除的 PCREATE_PROCESS_NOTIFY_ROUTINE_EX 例程的指针。 每当创建新进程时,作系统都调用此例程。

[in] Remove

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

返回值

PsSetCreateProcessNotifyRoutineEx 返回以下 NTSTATUS 值之一:

返回代码 描述
STATUS_SUCCESS
指定的例程现已注册到作系统。 每当创建新进程时,作系统都调用此例程。
STATUS_INVALID_PARAMETER
指定的例程已注册,或者作系统已达到注册进程创建回调例程的限制。
STATUS_ACCESS_DENIED
包含回调例程指针的图像在其映像标头中未设置IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY。

言论

最高级别的驱动程序可以调用 PsSetCreateProcessNotifyRoutineEx 来注册 PCREATE_PROCESS_NOTIFY_ROUTINE_EX 例程。 可安装文件系统(IFS)或最高级别的系统分析驱动程序可能会注册进程创建回调例程,以跟踪针对整个系统驱动程序的内部状态创建和删除的进程。

驱动程序必须在卸载之前删除它注册的任何回调例程。 可以通过调用 PsSetCreateProcessNotifyRoutineEx 来删除回调例程,Remove 设置为 true。 驱动程序不得从 PCREATE_PROCESS_NOTIFY_ROUTINE_EX 回调例程的实现中发出此调用。

作系统在关键区域中PASSIVE_LEVEL调用驱动程序的进程通知例程,正常内核 APC 禁用。 创建进程时,进程通知例程在创建新进程的线程的上下文中运行。 删除进程后,进程通知例程将在最后一个线程的上下文中运行,以退出进程。

要求

要求 价值
最低支持的客户端 从 SP1 和 Windows Server 2008 开始提供 Windows Vista。
目标平台 普遍
标头 ntddk.h (包括 Ntddk.h)
NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 符合性规则 HwStorPortProhibitedDIS(storport)PowerIrpDDis(wdm)

另请参阅

PCREATE_PROCESS_NOTIFY_ROUTINE_EX

PS_CREATE_NOTIFY_INFO

PsSetCreateProcessNotifyRoutine