Partager via


PLOAD_IMAGE_NOTIFY_ROUTINE fonction de rappel (ntddk.h)

Appelé par le système d’exploitation pour avertir le pilote lorsqu’une image de pilote ou une image utilisateur (par exemple, une DLL ou UN EXE) est mappée en mémoire virtuelle. Le système d’exploitation appelle cette routine une fois qu’une image a été mappée à la mémoire, mais avant son point d’entrée est appelé.

Avertissement

Les actions que vous pouvez effectuer dans cette routine sont limitées pour les appels sécurisés. Consultez meilleures pratiques.

Syntaxe

PLOAD_IMAGE_NOTIFY_ROUTINE PloadImageNotifyRoutine;

void PloadImageNotifyRoutine(
  [in, optional] PUNICODE_STRING FullImageName,
  [in]           HANDLE ProcessId,
  [in]           PIMAGE_INFO ImageInfo
)
{...}

Paramètres

[in, optional] FullImageName

Pointeur vers une chaîne Unicode mise en mémoire tampon qui identifie le fichier image exécutable. (Le paramètre FullImageName peut être NULL dans les cas où le système d’exploitation ne parvient pas à obtenir le nom complet de l’image au moment de la création du processus.)

[in] ProcessId

ID de processus du processus dans lequel l’image a été mappée, mais ce handle est égal à zéro si l’image nouvellement chargée est un pilote.

[in] ImageInfo

Pointeur vers une structure IMAGE_INFO qui contient des informations d’image. Voir les remarques.

Valeur de retour

Aucun

Remarques

Les pilotes de profilage système de niveau supérieur peuvent appeler PsSetLoadImageNotifyRoutine pour configurer leur routine de notification d’image de charge.

Le système d’exploitation n’appelle pas les routines de notification d’image de charge lorsque des sections créées avec l’attribut SEC_IMAGE_NO_EXECUTE sont mappées à la mémoire virtuelle.

Dans Windows 7, Windows Server 2008 R2 et versions antérieures de Windows, le système d’exploitation contient un verrou système interne pendant les appels aux routines de notification d’image de chargement pour les images chargées dans l’espace d’adressage du processus utilisateur (espace utilisateur). Pour éviter les interblocages, les routines de notification d’image de charge ne doivent pas appeler les routines système qui mappent, allouent, interrogent, libèrent ou effectuent d’autres opérations sur la mémoire virtuelle de l’espace utilisateur.

Un pilote doit supprimer les rappels qu’il inscrit avant de décharger. Vous pouvez supprimer le rappel en appelant la routine PsRemoveLoadImageNotifyRoutine.

Lorsque l’image exécutable principale d’un processus nouvellement créé est chargée, la routine d’notification de l’image de charge s’exécute dans le contexte du nouveau processus. Le système d’exploitation appelle la routine de notification d’image de charge du pilote à PASSIVE_LEVEL à l’intérieur d’une région critique avec API de noyau normales toujours désactivées et parfois avec des API de noyau et spéciales désactivées.

Lorsque la routine de notification d’image de charge est appelée, l’entrée FullImageName pointe vers une chaîne Unicode mise en mémoire tampon qui identifie le fichier image exécutable. (Le paramètre FullImageName peut être NULL dans les cas où le système d’exploitation ne parvient pas à obtenir le nom complet de l’image au moment de la création du processus.) Le handle ProcessId identifie le processus dans lequel l’image a été mappée, mais ce handle est égal à zéro si l’image nouvellement chargée est un pilote. Pour afficher le format des données mises en mémoire tampon à ImageInfo, consultez IMAGE_INFO. Si l’indicateur ExtendedInfoPresent est défini dans la structure IMAGE_INFO, les informations font partie d’une version plus grande et étendue de la structure d’informations d’image, IMAGE_INFO_EX.

Exigences

Exigence Valeur
client minimum pris en charge Disponible à partir de Windows 2000.
plateforme cible Universel
d’en-tête ntddk.h (include Ntddk.h)
IRQL PASSIVE_LEVEL

Voir aussi

IMAGE_INFO

IMAGE_INFO_EX

PsSetLoadImageNotifyRoutine