GetProcessImageFileNameA, fonction (psapi.h)

Récupère le nom du fichier exécutable pour le processus spécifié.

Syntaxe

DWORD GetProcessImageFileNameA(
  [in]  HANDLE hProcess,
  [out] LPSTR  lpImageFileName,
  [in]  DWORD  nSize
);

Paramètres

[in] hProcess

Handle du processus. Le handle doit avoir le droit d’accès PROCESS_QUERY_INFORMATION ou PROCESS_QUERY_LIMITED_INFORMATION . Pour plus d’informations, consultez Droits d’accès et de sécurité des processus.

Windows Server 2003 et Windows XP : Le handle doit avoir le droit d’accès PROCESS_QUERY_INFORMATION .

[out] lpImageFileName

Pointeur vers une mémoire tampon qui reçoit le chemin complet du fichier exécutable.

[in] nSize

Taille de la mémoire tampon lpImageFileName , 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.

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

Remarques

Le fichier Psapi.dll est installé dans le répertoire %windir%\System32. S’il existe une autre copie de cette DLL sur votre ordinateur, cela peut entraîner l’erreur suivante lors de l’exécution d’applications sur votre système : « Le point d’entrée de procédure GetProcessImageFileName n’a pas pu se trouver dans la bibliothèque de liens dynamiques PSAPI.DLL ». Pour contourner ce problème, recherchez les versions qui ne se trouvent pas dans le répertoire %windir%\System32 et supprimez-les ou renommez-les, puis redémarrez.

La fonction GetProcessImageFileName retourne le chemin d’accès sous forme d’appareil, plutôt que des lettres de lecteur. Par exemple, le nom de fichier C :\Windows\System32\Ctype.nls se présente comme suit dans la forme de l’appareil :

\Device\Harddisk0\Partition1\Windows\System32\Ctype.nls

Pour récupérer le nom du module du processus actuel, utilisez la fonction GetModuleFileName avec un descripteur de module NULL. Cela est plus efficace que l’appel de la fonction GetProcessImageFileName avec un handle au processus actuel.

Pour récupérer le nom du module exécutable main pour un processus distant au format de chemin win32, utilisez la fonction QueryFullProcessImageName.

À 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 K32GetProcessImageFileName 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 GetProcessImageFileName dans Psapi.h et exportée dans Psapi.lib et Psapi.dll en tant que wrapper qui appelle K32GetProcessImageFileName.

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 GetProcessImageFileName. 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.

Notes

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

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
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

Fonctions PSAPI

Informations sur le processus

QueryFullProcessImageName