Partager via


GetModuleFileNameA, fonction (libloaderapi.h)

Récupère le chemin d’accès complet pour le 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 a la valeur 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 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 est inférieure à la taille spécifiée par le paramètre nSize , la fonction réussit et le chemin d’accès 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 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 TCHAR.

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 compter 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 en caractères nSize , 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 zéro (0). Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.

Notes

Si une DLL est chargée dans deux processus, son nom de fichier dans un processus peut différer de 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 de chemin d’accès complet 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 en tant qu’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. La combinaison 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.

Spécifications

   
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

Voir aussi

Fonctions de bibliothèque de liens dynamiques

GetModuleFileNameEx

GetModuleHandle

LoadLibrary

LoadLibraryEx