Partager via


Fonction EnumProcessModulesEx (psapi.h)

Récupère un handle pour chaque module du processus spécifié qui répond aux critères de filtre spécifiés.

Syntaxe

BOOL EnumProcessModulesEx(
  [in]  HANDLE  hProcess,
  [out] HMODULE *lphModule,
  [in]  DWORD   cb,
  [out] LPDWORD lpcbNeeded,
  [in]  DWORD   dwFilterFlag
);

Paramètres

[in] hProcess

Handle du processus.

[out] lphModule

Tableau qui reçoit la liste des handles de module.

[in] cb

Taille du tableau lphModule , en octets.

[out] lpcbNeeded

Nombre d’octets requis pour stocker tous les handles de module dans le tableau lphModule .

[in] dwFilterFlag

Critères de filtre. Ce paramètre peut prendre les valeurs suivantes.

Valeur Signification
LIST_MODULES_32BIT
0x01
Répertoriez les modules 32 bits.
LIST_MODULES_64BIT
0x02
Répertoriez les modules 64 bits.
LIST_MODULES_ALL
0x03
Répertorier tous les modules.
LIST_MODULES_DEFAULT
0x0
Utiliser le comportement par défaut.

Valeur retournée

Si la fonction réussit, la valeur de retour est différente de zéro.

Si la fonction échoue, la valeur de retour est égale à zéro. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.

Remarques

La fonction EnumProcessModulesEx est principalement conçue pour être utilisée 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, EnumProcessModulesEx peut échouer ou renvoyer des informations incorrectes.

Cette fonction est principalement destinée aux applications 64 bits. Si la fonction est appelée par une application 32 bits exécutée sous WOW64, l’option dwFilterFlag est ignorée et la fonction fournit les mêmes résultats que la fonction EnumProcessModules .

Il est judicieux de spécifier un grand tableau de valeurs HMODULE , car il est difficile de prédire le nombre de modules dans le processus au moment où vous appelez EnumProcessModulesEx. Pour déterminer si le tableau lphModule est trop petit pour contenir tous les handles de module pour le processus, comparez la valeur retournée dans lpcbNeeded à la valeur spécifiée dans cb. Si lpcbNeededed est supérieur à cb, augmentez la taille du tableau et appelez à nouveau EnumProcessModulesEx .

Pour déterminer le nombre de modules énumérés par l’appel à EnumProcessModulesEx, divisez la valeur résultante dans le paramètre lpcbNeededed parsizeof(HMODULE).

La fonction EnumProcessModulesEx ne récupère pas de handles pour les modules qui ont été chargés avec l’indicateur LOAD_LIBRARY_AS_DATAFILE . Pour plus d’informations, consultez LoadLibraryEx.

N’appelez pas CloseHandle sur les handles retournés par cette fonction. L’information provient d’un instantané, donc il n’y a pas de ressources à libérer.

Pour prendre une instantané des processus spécifiés et des tas, modules et threads utilisés par ces processus, utilisez la fonction CreateToolhelp32Snapshot.

À compter de Windows 7 et Windows Server 2008 R2, Psapi.h établit les numéros de version pour les fonctions PSAPI. Le numéro de version PSAPI affecte le nom utilisé pour appeler la fonction et la bibliothèque qu’un programme doit charger.

Si PSAPI_VERSION est égal ou supérieur à 2, cette fonction est définie comme K32EnumProcessModulesEx dans Psapi.h et exportée dans Kernel32.lib et Kernel32.dll. Si PSAPI_VERSION a la valeur 1, cette fonction est définie comme EnumProcessModulesEx dans Psapi.h et exportée dans Psapi.lib et Psapi.dll en tant que wrapper qui appelle K32EnumProcessModulesEx.

Les programmes qui doivent s’exécuter sur des versions antérieures de Windows, de Windows 7 et versions ultérieures doivent toujours appeler cette fonction EnumProcessModulesEx. Pour garantir la résolution correcte des symboles, ajoutez Psapi.lib à la macro TARGETLIBS et compilez le programme avec –DPSAPI_VERSION=1. Pour utiliser la liaison dynamique au moment de l’exécution, chargez Psapi.dll.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2008 [applications de bureau uniquement]
Plateforme cible Windows
En-tête psapi.h (inclure Windows.h)
Bibliothèque Kernel32.lib sur Windows 7 et Windows Server 2008 R2 ; Psapi.lib (si PSAPI_VERSION=1) sur Windows 7 et Windows Server 2008 R2 ; Psapi.lib sur Windows Server 2008, Windows Vista, Windows Server 2003 et Windows XP
DLL Kernel32.dll sur Windows 7 et Windows Server 2008 R2 ; Psapi.dll (si PSAPI_VERSION=1) sur Windows 7 et Windows Server 2008 R2 ; Psapi.dll sur Windows Server 2008, Windows Vista, Windows Server 2003 et Windows XP

Voir aussi

CreateToolhelp32Snapshot

EnumProcesses

Informations sur le module

Fonctions PSAPI