Condividi tramite


Funzione GetModuleBaseNameA (psapi.h)

Recupera il nome di base del modulo specificato.

Sintassi

DWORD GetModuleBaseNameA(
  [in]           HANDLE  hProcess,
  [in, optional] HMODULE hModule,
  [out]          LPSTR   lpBaseName,
  [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 Sicurezza dei processi e diritti di accesso.

[in, optional] hModule

Handle per il modulo. Se questo parametro è NULL, questa funzione restituisce il nome del file utilizzato per creare il processo chiamante.

[out] lpBaseName

Puntatore al buffer che riceve il nome di base del modulo. Se il nome di base è più lungo del numero massimo di caratteri specificato dal parametro nSize , il nome di base viene troncato.

[in] nSize

Dimensioni del buffer lpBaseName , in caratteri.

Valore restituito

Se la funzione ha esito positivo, il valore restituito specifica la lunghezza della stringa copiata nel buffer, in caratteri.

Se la funzione ha esito negativo, il valore restituito è zero. Per informazioni dettagliate sull'errore, chiamare GetLastError.

Commenti

La funzione GetModuleBaseName è progettata principalmente per l'uso da parte di debugger e applicazioni simili che devono estrarre informazioni sul modulo da un altro processo. Se l'elenco di moduli nel processo di destinazione è danneggiato o non è ancora inizializzato oppure se l'elenco di moduli cambia durante la chiamata di funzione in seguito al caricamento o all'scaricamento delle DLL, GetModuleBaseName potrebbe non riuscire o restituire informazioni errate.

Per recuperare il nome di base di un modulo nel processo corrente, usare la funzione GetModuleFileName per recuperare il nome completo del modulo e quindi usare una chiamata di funzione, strrchr(szmodulename, '\') ad esempio per eseguire l'analisi all'inizio del nome di base all'interno della stringa del nome del modulo. Si tratta di un'operazione più efficiente e più affidabile rispetto alla chiamata di GetModuleBaseName con un handle al processo corrente.

Per recuperare il nome di base del modulo eseguibile principale per un processo remoto, usare la funzione GetProcessImageFileName o QueryFullProcessImageName per recuperare il nome del modulo e quindi usare la strrchr funzione come descritto nel paragrafo precedente. Si tratta di un'operazione più efficiente e più affidabile rispetto alla chiamata a GetModuleBaseName con un handle di modulo NULL.

La funzione GetModuleBaseName non recupera il nome di base per i moduli caricati con il flag LOAD_LIBRARY_AS_DATAFILE . Per altre informazioni, vedere LoadLibraryEx.

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 K32GetModuleBaseName in Psapi.h ed esportata in Kernel32.lib e Kernel32.dll. Se PSAPI_VERSION è 1, questa funzione viene definita come GetModuleBaseName in Psapi.h ed esportata in Psapi.lib e Psapi.dll come wrapper che chiama K32GetModuleBaseName.

I programmi che devono essere eseguiti in versioni precedenti di Windows e Windows 7 e versioni successive devono sempre chiamare questa funzione come GetModuleBaseName. 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 processi.

Nota

L'intestazione psapi.h definisce GetModuleBaseName 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 che non è indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzioni.

Requisiti

   
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

GetModuleFileNameEx

Informazioni sul modulo

Funzioni PSAPI

strrchr, wcsrchr, _mbsrchr, _mbsrchr_l