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

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

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

要求

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

另请参阅

PCREATE_PROCESS_NOTIFY_ROUTINE

PsGetCurrentProcessId

PsSetCreateProcessNotifyRoutineEx

PsSetCreateThreadNotifyRoutine

PsSetLoadImageNotifyRoutine