Funzione GetModuleFileNameExA (psapi.h)
Recupera il percorso completo per il file contenente il modulo specificato.
Sintassi
DWORD GetModuleFileNameExA(
[in] HANDLE hProcess,
[in, optional] HMODULE hModule,
[out] LPSTR lpFilename,
[in] DWORD nSize
);
Parametri
[in] hProcess
Handle per il processo che contiene il modulo.
L'handle deve avere i diritti di accesso PROCESS_QUERY_INFORMATION e PROCESS_VM_READ . Per altre informazioni, vedere Elaborare diritti di sicurezza e accesso.
Windows 10 e versioni successive, Windows Server 2016 e versioni successive: se il parametro hModule è NULL, l'handle richiede solo diritti di accesso PROCESS_QUERY_LIMITED_INFORMATION.
La funzione GetModuleFileNameEx non recupera il percorso per i moduli caricati usando il flag di LOAD_LIBRARY_AS_DATAFILE . Per altre informazioni, vedere LoadLibraryEx.
[in, optional] hModule
Handle per il modulo. Se questo parametro è NULL, GetModuleFileNameEx restituisce il percorso del file eseguibile del processo specificato in hProcess.
[out] lpFilename
Puntatore a un buffer che riceve il percorso completo del modulo. Se la dimensione del nome del file è maggiore del valore del parametro nSize , la funzione ha esito positivo, ma il nome del file viene troncato e terminato null.
[in] nSize
Dimensioni del buffer lpFilename , in caratteri.
Valore restituito
Se la funzione ha esito positivo, il valore restituito specifica la lunghezza della stringa copiata nel buffer.
Se la funzione ha esito negativo, il valore restituito è zero. Per informazioni dettagliate sull'errore, chiamare GetLastError.
Commenti
La funzione GetModuleFileNameEx è progettata principalmente per l'uso da parte di debugger e applicazioni simili che devono estrarre le informazioni sui moduli da un altro processo. Se l'elenco di moduli nel processo di destinazione è danneggiato o non è ancora stato inizializzato oppure se l'elenco dei moduli cambia durante la chiamata alla funzione in seguito al caricamento o all'annullamento del caricamento delle DLL, GetModuleFileNameEx potrebbe non riuscire o restituire informazioni non corrette.
Per recuperare il nome di un modulo nel processo corrente, usare la funzione GetModuleFileName . Questo è più efficiente e più affidabile rispetto alla chiamata di GetModuleFileNameEx con un handle al processo corrente.
Per recuperare il nome del modulo eseguibile principale per un processo remoto, usare la funzione GetProcessImageFileName o QueryFullProcessImageName . Questo è più efficiente e più affidabile rispetto alla chiamata alla funzione GetModuleFileNameEx con un handle di modulo NULL.
A partire da Windows 7 e Windows Server 2008 R2, Psapi.h stabilisce i numeri di versione per le funzioni PSAPI. Il numero di versione PSAPI influisce sul nome usato per chiamare la funzione e la libreria che un programma deve caricare.
Se PSAPI_VERSION è 2 o superiore, questa funzione viene definita come K32GetModuleFileNameEx in Psapi.h ed esportata in Kernel32.lib e Kernel32.dll. Se PSAPI_VERSION è 1, questa funzione viene definita come GetModuleFileNameEx in Psapi.h ed esportata in Psapi.lib e Psapi.dll come wrapper che chiama K32GetModuleFileNameEx.
I programmi che devono essere eseguiti nelle versioni precedenti di Windows e windows 7 e versioni successive devono sempre chiamare questa funzione come GetModuleFileNameEx. Per garantire la risoluzione corretta dei simboli, aggiungere Psapi.lib alla macro TARGETLIBS e compilare il programma con -DPSAPI_VERSION=1. Per usare il collegamento dinamico in fase di esecuzione, caricare Psapi.dll.
Esempio
Per un esempio, vedere Enumerazione di tutti i moduli per un processo.
Nota
L'intestazione psapi.h definisce GetModuleFileNameEx come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante preprocessore UNICODE. La combinazione dell'utilizzo dell'alias di codifica neutrale con il codice che non è neutrale dalla codifica può causare errori di corrispondenza che causano errori di compilazione o runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzione.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows XP [app desktop | App UWP] |
Server minimo supportato | Windows Server 2003 [app desktop | App UWP] |
Piattaforma di destinazione | Windows |
Intestazione | psapi.h |
Libreria | Kernel32.lib in Windows 7 e Windows Server 2008 R2; Psapi.lib (se PSAPI_VERSION=1) in Windows 7 e Windows Server 2008 R2; Psapi.lib in Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP |
DLL | Kernel32.dll in Windows 7 e Windows Server 2008 R2; Psapi.dll (se PSAPI_VERSION=1) in Windows 7 e Windows Server 2008 R2; Psapi.dll in Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP |