Поделиться через


Функция PsSetCreateProcessNotifyRoutineEx2 (ntddk.h)

PsSetCreateProcessNotifyRoutineEx2 регистры подпрограмм или удаляет подпрограмму обратного вызова, которая уведомляет вызывающий объект при создании или удалении процесса.

Синтаксис

NTSTATUS PsSetCreateProcessNotifyRoutineEx2(
  [in] PSCREATEPROCESSNOTIFYTYPE NotifyType,
  [in] PVOID                     NotifyInformation,
  [in] BOOLEAN                   Remove
);

Параметры

[in] NotifyType

Значение -typePSCREATEPROCESSNOTIFYTYPE, указывающее тип уведомления о процессе.

[in] NotifyInformation

Адрес сведений о уведомлении для указанного типа уведомления о процессе. Если NotifyTypepsCreateProcessNotifySubsystems, NotifyInformation — это PCREATE_PROCESS_NOTIFY_ROUTINE_EX, указывающий точку входа обратного вызова, предоставленного вызывающим процессом.

[in] Remove

Логическое значение, указывающее, будет ли PsSetCreateProcessNotifyRoutineEx 2 добавлять или удалять указанную подпрограмму из списка подпрограмм обратного вызова. Если этот параметр TRUE, указанная подпрограмма удаляется из списка подпрограмм обратного вызова. Если этот параметр FALSE, в список подпрограмм обратного вызова добавляется указанная подпрограмма. Если УдалитьTRUE, система также ожидает завершения всех подпрограмм обратного вызова в полете перед возвратом.

Возвращаемое значение

PsSetCreateProcessNotifyRoutineEx2 возвращает одно из следующих значений NTSTATUS:

Возвращаемый код Описание
STATUS_SUCCESS
Указанная подпрограмма теперь зарегистрирована в операционной системе. Операционная система вызывает эту подпрограмму всякий раз, когда создается новый процесс.
STATUS_INVALID_PARAMETER
Указанная подпрограмма уже зарегистрирована, или операционная система достигла предела для регистрации процедур обратного вызова создания процесса.

NotifyType не psCreateProcessNotifySubsystems.

STATUS_ACCESS_DENIED
Изображение, содержащее указатель подпрограммы обратного вызова, не было IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY задано в заголовке образа.

Замечания

Драйверы могут вызывать PsSetCreateProcessNotifyRoutineEx2, чтобы зарегистрировать процедуры уведомления о создании процессов.

После регистрации подпрограммы, предоставленной драйвером, он вызывается с уникальным идентификатором (указанным ProcessId) созданного или удаленного процесса. ParentId определяет родительский процесс нового процесса (это родительский процесс, используемый для приоритета, сходства, квоты, маркера и обработки наследования), если он был создан с параметром наследуемых дескрипторов. Если он был создан без параметров дескриптора наследуемого, то родительский идентификатор процесса имеет значение NULL.

Если значение Create имеет значение TRUE, был создан процесс подсистемы; FALSE указывает, что процесс был удален.

При создании процесса функция обратного вызова вызывается сразу после создания первого потока в процессе. И наоборот, для удаления функция вызывается после завершения последнего потока в процессе, и адресное пространство будет удалено. Возможно, обратный вызов вызывается только для удаления без получения вызова создания в случаях, когда процесс был создан и удален без создания потока.

Драйвер должен удалить любую функцию обратного вызова, которую он регистрирует перед выгрузкой. Обратный вызов можно удалить, вызвав PsSetCreateProcessNotifyRoutineEx 2 с помощью Remove = TRUE.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 10 версии 1703
минимальный поддерживаемый сервер Windows Server 2016
целевая платформа Всеобщий
заголовка ntddk.h (include Ntddk.h)
библиотеки NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
правил соответствия DDI HwStorPortProhibitedDDIs, PowerIrpDDis

См. также

PCREATE_PROCESS_NOTIFY_ROUTINE_EX

PsSetCreateProcessNotifyRoutine

PsSetCreateProcessNotifyRoutineEx