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


Функция 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:

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

NotifyType не является PsCreateProcessNotifySubsystems.

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

Комментарии

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

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

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

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

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

Требования

Требование Значение
Минимальная версия клиента Windows 10 версии 1703
Минимальная версия сервера Windows Server 2016
Целевая платформа Универсальное
Верхняя часть ntddk.h (включая Ntddk.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Правила соответствия DDI HwStorPortProhibitedDIs, PowerIrpDDis

См. также раздел

PCREATE_PROCESS_NOTIFY_ROUTINE_EX

PsSetCreateProcessNotifyRoutine

PsSetCreateProcessNotifyRoutineEx