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

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

Синтаксис

NTSTATUS PsSetCreateProcessNotifyRoutineEx(
  [in] PCREATE_PROCESS_NOTIFY_ROUTINE_EX NotifyRoutine,
  [in] BOOLEAN                           Remove
);

Параметры

[in] NotifyRoutine

Указатель на PCREATE_PROCESS_NOTIFY_ROUTINE_EX подпрограмму для регистрации или удаления. Операционная система вызывает эту подпрограмму при создании нового процесса.

[in] Remove

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

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

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

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

Комментарии

Драйверы самого высокого уровня могут вызывать PsSetCreateProcessNotifyRoutineEx для регистрации подпрограммы PCREATE_PROCESS_NOTIFY_ROUTINE_EX . Устанавливаемая файловая система (IFS) или драйвер профилирования системы высокого уровня может зарегистрировать подпрограмму обратного вызова создания процесса для отслеживания того, какие процессы создаются и удаляются для внутреннего состояния драйвера в системе.

Перед выгрузкой драйвер должен удалить все процедуры обратного вызова, которые он регистрирует. Вы можете удалить подпрограмму обратного вызова, вызвав PsSetCreateProcessNotifyRoutineEx , а для параметра Remove задано значение TRUE. Драйвер не должен выполнять этот вызов из реализации процедуры обратного вызова PCREATE_PROCESS_NOTIFY_ROUTINE_EX .

Операционная система вызывает подпрограмму уведомления о процессе драйвера в PASSIVE_LEVEL в критическом регионе с отключенными обычными APC ядра . При создании процесса подпрограмма уведомления о процессе выполняется в контексте потока, создавшего новый процесс. При удалении процесса подпрограмма уведомления о процессе выполняется в контексте последнего потока для выхода из процесса.

Требования

Требование Значение
Минимальная версия клиента Доступно начиная с Windows Vista с пакетом обновления 1 (SP1) и Windows Server 2008.
Целевая платформа Универсальное
Верхняя часть ntddk.h (включая Ntddk.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Правила соответствия DDI HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

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

PCREATE_PROCESS_NOTIFY_ROUTINE_EX

PS_CREATE_NOTIFY_INFO

PsSetCreateProcessNotifyRoutine