PsSetCreateProcessNotifyRoutine 函数 (ntddk.h)

PsSetCreateProcessNotifyRoutine 例程在创建或删除进程时要调用的例程列表中添加驱动程序提供的回调例程,或者从中删除该例程。

语法

NTSTATUS PsSetCreateProcessNotifyRoutine(
  [in] PCREATE_PROCESS_NOTIFY_ROUTINE NotifyRoutine,
  [in] BOOLEAN                        Remove
);

参数

[in] NotifyRoutine

指定调用方提供的进程创建回调例程的入口点。 请参阅 PCREATE_PROCESS_NOTIFY_ROUTINE

[in] Remove

指示是否应在系统的通知例程列表中添加或删除 NotifyRoutine 指定的例程。 如果 为 FALSE,则将指定的例程添加到列表中。 如果 为 TRUE,则从列表中删除指定的例程。

返回值

PsSetCreateProcessNotifyRoutine 可以返回下列值之一:

返回代码 说明
STATUS_SUCCESS
给定的 NotifyRoutine 现已注册到系统。
STATUS_INVALID_PARAMETER
给定的 NotifyRoutine 已注册,因此此调用是冗余调用,或者系统已达到注册进程创建回调的限制。

注解

最高级别的驱动程序可以调用 PsSetCreateProcessNotifyRoutine 来设置其作为 PCREATE_PROCESS_NOTIFY_ROUTINE实现的进程创建通知例程。

IFS 或最高级别的系统分析驱动程序可能会注册进程创建回调,以跟踪系统范围内针对驱动程序的内部状态创建和删除进程的情况。 对于 Windows Vista 和更高版本的 Windows,系统最多可以注册 64 个进程创建回调例程。

驱动程序必须在卸载之前删除它注册的任何回调。 可以通过使用 RemoveTRUE 调用 PsSetCreateProcessNotify删除 = 回调。 驱动程序不得从其 PCREATE_PROCESS_NOTIFY_ROUTINE 回调例程的实现中发出此调用。

注册驱动程序提供的例程后,在输入 ProcessId 句柄指定的新创建的进程中创建初始线程后,将创建设置为TRUE 时调用该例程。 输入 ParentId 句柄标识新创建的进程的父进程, (这是用于优先级、相关性、配额、令牌和处理继承等) 的父进程。

要求

要求
最低受支持的客户端 从 Windows 2000 开始可用。
目标平台 通用
标头 ntddk.h (包括 Ntddk.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 符合性规则 HwStorPortProhibitedDDI (storport) IrqlPsPassive (wdm) PowerIrpDDis (wdm)

另请参阅

PCREATE_PROCESS_NOTIFY_ROUTINE

PsGetCurrentProcessId

PsSetCreateProcessNotifyRoutineEx

PsSetCreateThreadNotifyRoutine

PsSetLoadImageNotifyRoutine