Compartir a través de


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

Consulte también

IMAGE_INFO

IMAGE_INFO_EX

PsSetLoadImageNotifyRoutine