GetModuleFileNameA, fonction (libloaderapi.h)
Récupère le chemin complet du fichier qui contient le module spécifié. Le module doit avoir été chargé par le processus actuel.
Pour localiser le fichier d’un module chargé par un autre processus, utilisez la fonction GetModuleFileNameEx.
Syntaxe
DWORD GetModuleFileNameA(
[in, optional] HMODULE hModule,
[out] LPSTR lpFilename,
[in] DWORD nSize
);
Paramètres
[in, optional] hModule
Handle du module chargé dont le chemin d’accès est demandé. Si ce paramètre est NULL, GetModuleFileName récupère le chemin du fichier exécutable du processus actuel.
La fonction GetModuleFileName 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.
[out] lpFilename
Pointeur vers une mémoire tampon qui reçoit le chemin complet du module. Si la longueur du chemin d’accès est inférieure à la taille spécifiée par le paramètre nSize, la fonction réussit et le chemin est retourné sous la forme d’une chaîne terminée par null.
Si la longueur du chemin dépasse la taille spécifiée par le paramètre nSize, la fonction réussit et la chaîne est tronquée pour nSize caractères, y compris le caractère null de fin.
Windows XP : La chaîne est tronquée pour nSize caractères et n’est pas terminée par null.
La chaîne retournée utilise le même format que celui spécifié lors du chargement du module. Par conséquent, le chemin d’accès peut être un nom de fichier long ou court et peut utiliser le préfixe \\?\
. Pour plus d’informations, consultez nommage d’un fichier.
[in] nSize
Taille de la mémoire tampon lpFilename, dans TCHARs.
Valeur de retour
Si la fonction réussit, la valeur de retour est la longueur de la chaîne copiée dans la mémoire tampon, en caractères, sans inclure le caractère null de fin. Si la mémoire tampon est trop petite pour contenir le nom du module, la chaîne est tronquée pour nSize caractères, y compris le caractère null de fin, la fonction retourne nSize, et la fonction définit la dernière erreur sur ERROR_INSUFFICIENT_BUFFER.
Windows XP : Si la mémoire tampon est trop petite pour contenir le nom du module, la fonction retourne nSize. Le dernier code d’erreur reste ERROR_SUCCESS. Si nSize est égal à zéro, la valeur de retour est égale à zéro et le dernier code d’erreur est ERROR_SUCCESS.
Si la fonction échoue, la valeur de retour est 0 (zéro). Pour obtenir des informations d’erreur étendues, appelez GetLastError.
Remarques
Si une DLL est chargée dans deux processus, son nom de fichier dans un processus peut différer du nom de son fichier dans l’autre processus.
La variable globale _pgmptr
est automatiquement initialisée dans le chemin d’accès complet du fichier exécutable et peut être utilisée pour récupérer le nom complet du chemin d’accès d’un fichier exécutable.
Exemples
Pour obtenir un exemple, consultez Installation d’un service.
Note
L’en-tête libloaderapi.h définit GetModuleFileName 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 | libloaderapi.h (include Windows.h) |
bibliothèque | Kernel32.lib |
DLL | Kernel32.dll |
Voir aussi
fonctions de bibliothèque Dynamic-Link