GetModuleFileNameW, 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 en cours.
Pour localiser le fichier d’un module chargé par un autre processus, utilisez la fonction GetModuleFileNameEx .
Syntaxe
DWORD GetModuleFileNameW(
[in, optional] HMODULE hModule,
[out] LPWSTR 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 a la valeur NULL, GetModuleFileName récupère le chemin d’accès du fichier exécutable du processus en cours.
La fonction GetModuleFileName ne récupère pas le chemin d’accès des modules qui ont été 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 forme de chaîne null.
Si la longueur du chemin d’accès dépasse la taille spécifiée par le paramètre nSize , la fonction réussit et la chaîne est tronquée en caractères nSize , y compris le caractère null de fin.
Windows XP : La chaîne est tronquée en caractères nSize 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 Nommer un fichier.
[in] nSize
Taille de la mémoire tampon lpFilename , en WCHAR.
Valeur retournée
Si la fonction réussit, la valeur de retour correspond à 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 et le dernier code d’erreur n’est pas modifié. Si nSize est égal à zéro, la valeur de retour est égale à zéro et le dernier code d’erreur n’est pas modifié.
Si la fonction échoue, la valeur de retour est zéro (0). Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.
Remarques
Si une DLL est chargée dans deux processus, son nom de fichier dans un processus peut différer au cas où son nom de fichier dans l’autre processus.
La variable _pgmptr
globale est automatiquement initialisée sur 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.
Notes
L’en-tête libloaderapi.h définit GetModuleFileName comme un 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.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows XP [applications de bureau | applications UWP] |
Serveur minimal pris en charge | Windows Server 2003 [applications de bureau | applications UWP] |
Plateforme cible | Windows |
En-tête | libloaderapi.h (inclure Windows.h) |
Bibliothèque | Kernel32.lib |
DLL | Kernel32.dll |