Informations sur le module

Un module est un fichier exécutable ou une DLL. Chaque processus est constitué d'un ou de plusieurs modules. Vous pouvez récupérer la liste des handles de module d’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 les fonctions PSAPI pour obtenir des informations sur un module à partir d’un autre processus.

La procédure suivante décrit 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 fonction GetModuleBaseName . 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, prend 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’elle occupe et un pointeur vers son point d’entrée.

Si une application a besoin d’informations de module pour le processus en cours, elle doit utiliser la fonction GetModuleFileName au lieu des fonctions de module PSAPI. Cela améliore les performances de l’application de deux manières : la fonction GetModuleFileName est plus efficace que les fonctions de module PSAPI, et une application peut éviter le chargement psapi.dll si elle n’utilise aucune fonction PSAPI.

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