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