Функция 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:
Код возврата | Описание |
---|---|
|
Указанная подпрограмма теперь зарегистрирована в операционной системе. Операционная система вызывает эту подпрограмму при создании нового процесса. |
|
Указанная подпрограмма уже зарегистрирована или операционная система достигла предела для регистрации процедур обратного вызова создания процесса. |
|
Изображение, содержащее указатель подпрограммы обратного вызова, не 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) |