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 个进程创建回调例程。

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

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

要求

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

另请参阅

PCREATE_PROCESS_NOTIFY_ROUTINE

PsGetCurrentProcessId

PsSetCreateProcessNotifyRoutineEx

PsSetCreateThreadNotifyRoutine

PsSetLoadImageNotifyRoutine