PLOAD_IMAGE_NOTIFY_ROUTINE función de devolución de llamada (ntddk.h)
Lo llama el sistema operativo para notificar al controlador cuando una imagen de controlador o una imagen de usuario (por ejemplo, un archivo DLL o EXE) se asigna a la memoria virtual. El sistema operativo invoca esta rutina después de asignar una imagen a la memoria, pero antes de llamar a su punto de entrada.
Advertencia
Las acciones que puede realizar en esta rutina están restringidas para llamadas seguras. Consulte Procedimientos recomendados.
Sintaxis
PLOAD_IMAGE_NOTIFY_ROUTINE PloadImageNotifyRoutine;
void PloadImageNotifyRoutine(
[in, optional] PUNICODE_STRING FullImageName,
[in] HANDLE ProcessId,
[in] PIMAGE_INFO ImageInfo
)
{...}
Parámetros
[in, optional] FullImageName
Puntero a una cadena Unicode almacenada en búfer que identifica el archivo de imagen ejecutable. (El parámetro fullImageName puede ser NULL en los casos en los que el sistema operativo no pueda obtener el nombre completo de la imagen en tiempo de creación del proceso).
[in] ProcessId
Identificador de proceso del proceso en el que se ha asignado la imagen, pero este identificador es cero si la imagen recién cargada es un controlador.
[in] ImageInfo
Puntero a una estructura IMAGE_INFO que contiene información de imagen. Vea comentarios.
Valor devuelto
Ninguno
Observaciones
Los controladores de generación de perfiles de sistema de nivel superior pueden llamar a psSetLoadImageNotifyRoutine para configurar su rutina de notificación de imagen de carga.
El sistema operativo no llama a rutinas de notificación de imagen de carga cuando las secciones creadas con el atributo SEC_IMAGE_NO_EXECUTE se asignan a la memoria virtual.
En Windows 7, Windows Server 2008 R2 y versiones anteriores de Windows, el sistema operativo contiene un bloqueo interno del sistema durante las llamadas a rutinas de notificación de imágenes de carga para las imágenes cargadas en el espacio de direcciones del proceso de usuario (espacio de usuario). Para evitar interbloqueos, las rutinas de notificación de imagen de carga no deben llamar a rutinas del sistema que asignen, asignen, consulten, liberen o realicen otras operaciones en la memoria virtual del espacio del usuario.
Un controlador debe quitar las devoluciones de llamada que registre antes de descargarla. Puede quitar la devolución de llamada llamando a la rutina PsRemoveLoadImageNotifyRoutine.
Cuando se carga la imagen ejecutable principal de un proceso recién creado, la rutina de notificación de imagen de carga se ejecuta en el contexto del nuevo proceso. El sistema operativo llama a la rutina de notificación de imagen de carga del controlador en PASSIVE_LEVEL dentro de una región crítica con API de kernel normales siempre deshabilitadas y, a veces, con las API especiales y del kernel deshabilitadas.
Cuando se llama a la rutina de notificación de imagen de carga, la entrada FullImageName apunta a una cadena Unicode almacenada en búfer que identifica el archivo de imagen ejecutable. (El parámetro fullImageName puede ser NULL en los casos en los que el sistema operativo no pueda obtener el nombre completo de la imagen en tiempo de creación del proceso). El identificador ProcessId identifica el proceso en el que se ha asignado la imagen, pero este identificador es cero si la imagen recién cargada es un controlador. Para ver el formato de los datos almacenados en búfer en imageInfo, consulte IMAGE_INFO. Si la marca ExtendedInfoPresent está establecida en la estructura de IMAGE_INFO, la información forma parte de una versión más grande y extendida de la estructura de información de la imagen, IMAGE_INFO_EX.
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Disponible a partir de Windows 2000. |
de la plataforma de destino de | Universal |
encabezado de | ntddk.h (incluya Ntddk.h) |
irQL | PASSIVE_LEVEL |