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