GetModuleFileNameExA, fonction (psapi.h)
Récupère le chemin complet du fichier contenant le module spécifié.
Syntaxe
DWORD GetModuleFileNameExA(
[in] HANDLE hProcess,
[in, optional] HMODULE hModule,
[out] LPSTR lpFilename,
[in] DWORD nSize
);
Paramètres
[in] hProcess
Handle du processus qui contient le module.
Le handle doit disposer des droits d’accès PROCESS_QUERY_INFORMATION et PROCESS_VM_READ. Pour plus d’informations, consultez Processus de sécurité et de droits d’accès.
Windows 10 et versions ultérieures, Windows Server 2016 et versions ultérieures: si le paramètre hModule a la valeur NULL, le handle nécessite uniquement des droits d’accès PROCESS_QUERY_LIMITED_INFORMATION.
La fonction GetModuleFileNameEx ne récupère pas le chemin d’accès des modules chargés à l’aide de l’indicateur LOAD_LIBRARY_AS_DATAFILE. Pour plus d’informations, consultez LoadLibraryEx.
[in, optional] hModule
Handle du module. Si ce paramètre a la valeur NULL, GetModuleFileNameEx retourne le chemin du fichier exécutable du processus spécifié dans hProcess.
[out] lpFilename
Pointeur vers une mémoire tampon qui reçoit le chemin complet du module. Si la taille du nom de fichier est supérieure à la valeur du paramètre nSize, la fonction réussit, mais le nom de fichier est tronqué et terminé par null.
[in] nSize
Taille de la mémoire tampon
Valeur de retour
Si la fonction réussit, la valeur de retour spécifie la longueur de la chaîne copiée dans la mémoire tampon.
Si la fonction échoue, la valeur de retour est égale à zéro. Pour obtenir des informations d’erreur étendues, appelez GetLastError.
Remarques
La fonction GetModuleFileNameEx est principalement conçue pour être utilisée par des débogueurs et des applications similaires qui doivent extraire des informations de module d’un autre processus. Si la liste des modules du processus cible est endommagée ou n’est pas encore initialisée, ou si la liste des modules change pendant l’appel de fonction en raison du chargement ou du déchargement des DLL, GetModuleFileNameEx peut échouer ou retourner des informations incorrectes.
Pour récupérer le nom d’un module dans le processus actuel, utilisez la fonction GetModuleFileName. Cela est plus efficace et plus fiable que d’appeler GetModuleFileNameEx avec un handle au processus actuel.
Pour récupérer le nom du module exécutable principal pour un processus distant, utilisez la fonction GetProcessImageFileName ou QueryFullProcessImageName. Cela est plus efficace et plus fiable que d’appeler la fonction GetModuleFileNameEx avec un handle de module NULL.
À compter de Windows 7 et Windows Server 2008 R2, Psapi.h établit des 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 2 ou supérieur, cette fonction est définie comme K32GetModuleFileNameEx dans Psapi.h et exportée dans Kernel32.lib et Kernel32.dll. Si PSAPI_VERSION est 1, cette fonction est définie comme GetModuleFileNameEx dans Psapi.h et exportée dans Psapi.lib et Psapi.dll en tant que wrapper qui appelle K32GetModuleFileNameEx.
Les programmes qui doivent s’exécuter sur des versions antérieures de Windows, ainsi que Windows 7 et versions ultérieures doivent toujours appeler cette fonction comme GetModuleFileNameEx. Pour garantir une résolution correcte des symboles, ajoutez Psapi.lib à la macro TARGETLIBS
Exemples
Pour obtenir un exemple, consultez énumération de tous les modules pour un processus.
Note
L’en-tête psapi.h définit GetModuleFileNameEx comme alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows XP [applications de bureau | Applications UWP] |
serveur minimum pris en charge | Windows Server 2003 [applications de bureau | Applications UWP] |
plateforme cible | Windows |
d’en-tête | psapi.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 |