Condividi tramite


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

Vedi anche

EnumProcesses

GetModuleBaseName

GetModuleFileName

GetModuleHandle

LoadLibrary

Informazioni sul modulo

Funzioni PSAPI