Partager via


Informations sur le module

Un module est un fichier exécutable ou une DLL. Chaque processus se compose d’un ou plusieurs modules. Vous pouvez récupérer la liste des handles de module pour un processus en appelant la fonction EnumProcessModules. Cette fonction remplit un tableau de valeurs HMODULE avec les handles de module pour le processus spécifié. Le premier module est le fichier exécutable. N’oubliez pas que ces handles de module proviennent probablement d’un autre processus. Vous ne pouvez donc pas les utiliser avec des fonctions telles que GetModuleFileName. Toutefois, vous pouvez utiliser fonctions PSAPI pour obtenir des informations sur un module à partir d’un autre processus.

La procédure suivante explique comment obtenir des informations de module à partir d’un autre processus.

Pour obtenir des informations de module à partir d’un autre processus

  1. Appelez la fonctionGetModuleBaseName. Cette fonction prend un handle de processus et un handle de module comme entrée et remplit une mémoire tampon avec le nom de base d’un module (par exemple, Kernel32.dll). Une fonction associée, GetModuleFileNameEx, accepte les mêmes paramètres que l’entrée, mais retourne le chemin d’accès complet au module (par exemple, C:\Windows\System32\Kernel32.dll).
  2. Appelez la fonction GetModuleInformation. Cette fonction prend un handle de processus et un handle de module et remplit une structure MODULEINFO avec l’adresse de charge du module, la taille de l’espace d’adressage linéaire qu’il occupe et un pointeur vers son point d’entrée.

Si une application requiert des informations de module pour le processus actuel, elle doit utiliser la fonction GetModuleFileName au lieu des fonctions de module PSAPI. Cela permet aux performances des applications de deux façons : la fonction GetModuleFileName est plus efficace que les fonctions de module PSAPI, et une application peut éviter de charger psapi.dll si elle n’utilise aucune fonction PSAPI.

Les fonctions GetModuleBaseName et GetModuleFileNameEx sont principalement conçues pour être utilisées par des débogueurs et des applications similaires qui doivent extraire des informations de module d’un autre processus. Si la liste de modules du processus cible est endommagée ou n’est pas encore initialisée, ou si la liste de modules change pendant l’appel de fonction en raison du chargement ou du déchargement des DLL, ces fonctions peuvent échouer ou retourner des informations incorrectes.