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 Process Security and Access Rights.
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
[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 le dimensioni del nome file sono maggiori 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
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 ottenere informazioni estese sull'errore, chiamare GetLastError.
Osservazioni
La funzione GetModuleFileNameEx è progettata principalmente per l'uso da parte di debugger e applicazioni simili che devono estrarre informazioni sui moduli da un altro processo. Se l'elenco di moduli nel processo di destinazione è danneggiato o non è ancora inizializzato oppure se l'elenco dei moduli cambia durante la chiamata di funzione a causa del caricamento o dell'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
Per recuperare il nome del modulo eseguibile principale per un processo remoto, usare la funzione
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 versione successiva, 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 in 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.
Esempi
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 del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice non indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere convenzioni di per i prototipi di funzioni.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows XP [app desktop | App UWP] |
server minimo supportato | Windows Server 2003 [app desktop | App UWP] |
piattaforma di destinazione | Finestre |
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 |
Vedere anche
informazioni sul modulo