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 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 non recupera il percorso per i moduli caricati usando il flag 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 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 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 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 . Questa operazione è più efficiente e più affidabile rispetto alla chiamata di GetModuleFileNameEx con un handle per il processo corrente.

Per recuperare il nome del modulo eseguibile principale per un processo remoto, usare la funzione GetProcessImageFileName o QueryFullProcessImageName. Questa operazione è più efficiente e più affidabile rispetto alla chiamata della 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 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

EnumProcesses

GetModuleBaseName

GetModuleFileName

GetModuleHandle

loadLibrary

informazioni sul modulo

funzioni PSAPI