PsSetCreateProcessNotifyRoutineEx2 函数 (ntddk.h)
PsSetCreateProcessNotifyRoutineEx2 例程注册或删除回调例程,在创建或删除进程时通知调用方。
语法
NTSTATUS PsSetCreateProcessNotifyRoutineEx2(
[in] PSCREATEPROCESSNOTIFYTYPE NotifyType,
[in] PVOID NotifyInformation,
[in] BOOLEAN Remove
);
参数
[in] NotifyType
PSCREATEPROCESSNOTIFYTYPE类型值,指示进程通知的类型。
[in] NotifyInformation
指定类型的进程通知的通知信息的地址。 如果 NotifyTypePsCreateProcessNotifySubsystems,NotifyInformation 是指定调用方提供的进程创建回调入口点的 PCREATE_PROCESS_NOTIFY_ROUTINE_EX。
[in] Remove
一个布尔值,该值指定 PsSetCreateProcessNotifyRoutineEx2 是否会在回调例程列表中添加或删除指定的例程。 如果此参数 TRUE,则会从回调例程列表中删除指定的例程。 如果此参数 FALSE,则指定的例程将添加到回调例程列表中。 如果 删除TRUE,系统还会等待所有正在进行的回调例程在返回之前完成。
返回值
PsSetCreateProcessNotifyRoutineEx2 返回以下 NTSTATUS 值之一:
返回代码 | 描述 |
---|---|
|
指定的例程现已注册到作系统。 每当创建新进程时,作系统都调用此例程。 |
|
指定的例程已注册,或者作系统已达到注册进程创建回调例程的限制。
NotifyType 未 PsCreateProcessNotifySubsystems。 |
|
包含回调例程指针的图像在其映像标头中未设置IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY。 |
言论
驱动程序可以调用 PsSetCreateProcessNotifyRoutineEx2 来注册其进程创建通知例程。
注册驱动程序提供的例程后,使用创建或删除的进程的唯一 ID(由 ProcessId指示)调用该例程。 ParentId 标识新进程的父进程(这是用于优先级、相关性、配额、令牌和处理继承等的父进程),如果使用继承句柄选项创建。 如果创建时没有继承句柄选项,则父进程 ID 为 NULL。
如果 创建 值为 TRUE,则创建子系统进程;FALSE 指示已删除进程。
创建进程后,将仅在创建进程中的第一个线程之后调用回调函数。 相反,对于删除,将在进程的最后一个线程终止且地址空间即将删除之后调用该函数。 只有在创建和删除进程且未创建线程的情况下,才调用回调进行删除。
驱动程序必须在卸载之前删除它注册的任何回调函数。 可以通过调用 Remove = TRUE调用 PsSetCreateProcessNotifyRoutineEx2 来删除回调。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows 10 版本 1703 |
支持的最低服务器 | Windows Server 2016 |
目标平台 | 普遍 |
标头 | ntddk.h (包括 Ntddk.h) |
库 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI 符合性规则 | HwStorPortProhibitedDDI、PowerIrpDDis |
另请参阅
PCREATE_PROCESS_NOTIFY_ROUTINE_EX