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 puede obtener el nombre completo de la imagen en el momento de la creación del proceso).
[in] ProcessId
El 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 de IMAGE_INFO que contiene información de imagen. Vea la sección Comentarios.
Valor devuelto
None
Observaciones
Los controladores de generación de perfiles del 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 LAS 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 puede obtener el nombre completo de la imagen en el momento de la 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 se establece en la estructura 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 | Value |
---|---|
Cliente mínimo compatible | Disponible a partir de Windows 2000. |
Plataforma de destino | Universal |
Encabezado | ntddk.h (incluya Ntddk.h) |
IRQL | PASSIVE_LEVEL |