функция обратного вызова PLOAD_IMAGE_NOTIFY_ROUTINE (ntddk.h)
Вызывается операционной системой, чтобы уведомить драйвера, когда образ драйвера или образ пользователя (например, DLL или EXE) сопоставляется с виртуальной памятью. Операционная система вызывает эту подпрограмму после сопоставления образа с памятью, но до вызова ее точки входа.
Предупреждение
Действия, которые можно выполнить в этой подпрограмме, ограничены для безопасных вызовов. См. рекомендации.
Синтаксис
PLOAD_IMAGE_NOTIFY_ROUTINE PloadImageNotifyRoutine;
void PloadImageNotifyRoutine(
[in, optional] PUNICODE_STRING FullImageName,
[in] HANDLE ProcessId,
[in] PIMAGE_INFO ImageInfo
)
{...}
Параметры
[in, optional] FullImageName
Указатель на буферированную строку Юникода, которая идентифицирует исполняемый файл образа. (Параметр FullImageName может быть NULL в случаях, когда операционная система не может получить полное имя образа во время создания процесса.)
[in] ProcessId
Идентификатор процесса, в котором был сопоставлен образ, но этот дескриптор равен нулю, если недавно загруженный образ является драйвером.
[in] ImageInfo
Указатель на структуру IMAGE_INFO, содержащую сведения о изображении. См. примечания.
Возвращаемое значение
Никакой
Замечания
Драйверы с высоким уровнем профилирования системы могут вызывать PsSetLoadImageNotifyRoutine для настройки подпрограммы уведомления о загрузке образа.
Операционная система не вызывает подпрограммы уведомления о загрузке образа, когда разделы, созданные с помощью атрибута SEC_IMAGE_NO_EXECUTE, сопоставляются с виртуальной памятью.
В Windows 7 Windows Server 2008 R2 и более ранних версиях Windows операционная система держит внутреннюю блокировку системы во время вызовов уведомлений о загрузке изображений для образов, загруженных в адресное пространство пользовательского процесса (пространство пользователя). Чтобы избежать взаимоблокировок, подпрограммы уведомления о загрузке образа не должны вызывать системные подпрограммы, которые сопоставляют, выделяют, запрашивают, освобождают или выполняют другие операции с виртуальной памятью пространства пользователя.
Драйвер должен удалить все обратные вызовы, которые он регистрирует перед выгрузкой. Обратный вызов можно удалить, вызвав подпрограмму PsRemoveLoadImageNotifyRoutine.
При загрузке основного исполняемого образа для созданного процесса подпрограмма уведомления о загрузке образа выполняется в контексте нового процесса. Операционная система вызывает подпрограмму уведомления драйвера о загрузке образа в PASSIVE_LEVEL в критическом регионе с обычными API ядра всегда отключены, а иногда и с ядром и специальными API отключены.
При вызове подпрограммы уведомления о загрузке изображения входные FullImageName указывает на буферированную строку Юникода, которая идентифицирует исполняемый файл образа. (Параметр FullImageName может быть NULL в случаях, когда операционная система не может получить полное имя образа во время создания процесса.) Дескриптор ProcessId определяет процесс, в котором сопоставлен образ, но этот дескриптор равен нулю, если только что загруженный образ является драйвером. Чтобы просмотреть формат буферированных данных ImageInfo, см. IMAGE_INFO. Если флаг ExtendedInfoPresent задан в структуре IMAGE_INFO, сведения являются частью более крупной расширенной версии структуры сведений об изображении, IMAGE_INFO_EX.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Доступно начиная с Windows 2000. |
целевая платформа | Всеобщий |
заголовка | ntddk.h (include Ntddk.h) |
IRQL | PASSIVE_LEVEL |