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 值之一:
返回代码 | 描述 |
---|---|
|
指定的例程现已注册到作系统。 每当创建新进程时,作系统都调用此例程。 |
|
指定的例程已注册,或者作系统已达到注册进程创建回调例程的限制。 |
|
包含回调例程指针的图像在其映像标头中未设置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) |