Partager via


GetModuleBaseNameA, fonction (psapi.h)

Récupère le nom de base du module spécifié.

Syntaxe

DWORD GetModuleBaseNameA(
  [in]           HANDLE  hProcess,
  [in, optional] HMODULE hModule,
  [out]          LPSTR   lpBaseName,
  [in]           DWORD   nSize
);

Paramètres

[in] hProcess

Handle du processus qui contient le module.

Le handle doit avoir les droits d’accès PROCESS_QUERY_INFORMATION et PROCESS_VM_READ . Pour plus d’informations, consultez Droits d’accès et de sécurité des processus.

[in, optional] hModule

Handle pour le module. Si ce paramètre a la valeur NULL, cette fonction retourne le nom du fichier utilisé pour créer le processus appelant.

[out] lpBaseName

Pointeur vers la mémoire tampon qui reçoit le nom de base du module. Si le nom de base est supérieur au nombre maximal de caractères spécifié par le paramètre nSize , le nom de base est tronqué.

[in] nSize

Taille de la mémoire tampon lpBaseName , en caractères.

Valeur retournée

Si la fonction réussit, la valeur de retour spécifie la longueur de la chaîne copiée dans la mémoire tampon, en caractères.

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

Notes

La fonction GetModuleBaseName 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, GetModuleBaseName peut échouer ou renvoyer des informations incorrectes.

Pour récupérer le nom de base d’un module dans le processus actuel, utilisez la fonction GetModuleFileName pour récupérer le nom complet du module, puis utilisez un appel de fonction tel que strrchr(szmodulename, '\') pour analyser le début du nom de base dans la chaîne de nom du module. Cela est plus efficace et plus fiable que l’appel de GetModuleBaseName avec un handle au processus actuel.

Pour récupérer le nom de base du module exécutable main pour un processus distant, utilisez la fonction GetProcessImageFileName ou QueryFullProcessImageName pour récupérer le nom du module, puis utilisez la strrchr fonction comme décrit dans le paragraphe précédent. Cela est plus efficace et plus fiable que l’appel de GetModuleBaseName avec un handle de module NULL.

La fonction GetModuleBaseName ne récupère pas le nom de base des modules qui ont été chargés avec l’indicateur LOAD_LIBRARY_AS_DATAFILE . Pour plus d’informations, consultez LoadLibraryEx.

À 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 a la valeur 2 ou supérieure, cette fonction est définie comme K32GetModuleBaseName 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 GetModuleBaseName dans Psapi.h et exportée dans Psapi.lib et Psapi.dll en tant que wrapper qui appelle K32GetModuleBaseName.

Les programmes qui doivent s’exécuter sur des versions antérieures de Windows ainsi que sur Windows 7 et versions ultérieures doivent toujours appeler cette fonction getModuleBaseName. Pour garantir une 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.

Exemples

Pour obtenir un exemple, consultez Énumération de tous les processus.

Notes

L’en-tête psapi.h définit GetModuleBaseName 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 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

Voir aussi

EnumProcesses

GetModuleFileNameEx

Informations sur le module

Fonctions PSAPI

strrchr, wcsrchr, _mbsrchr, _mbsrchr_l