Condividi tramite


Funzione EnumProcessModulesEx (psapi.h)

Recupera un handle per ogni modulo nel processo specificato che soddisfa i criteri di filtro specificati.

Sintassi

BOOL EnumProcessModulesEx(
  [in]  HANDLE  hProcess,
  [out] HMODULE *lphModule,
  [in]  DWORD   cb,
  [out] LPDWORD lpcbNeeded,
  [in]  DWORD   dwFilterFlag
);

Parametri

[in] hProcess

Handle per il processo.

[out] lphModule

Matrice che riceve l'elenco di handle del modulo.

[in] cb

Dimensioni della matrice lphModule , in byte.

[out] lpcbNeeded

Numero di byte necessari per archiviare tutti gli handle del modulo nella matrice lphModule .

[in] dwFilterFlag

Criteri di filtro. Questo parametro può avere uno dei valori seguenti.

Valore Significato
LIST_MODULES_32BIT
0x01
Elencare i moduli a 32 bit.
LIST_MODULES_64BIT
0x02
Elencare i moduli a 64 bit.
LIST_MODULES_ALL
0x03
Elencare tutti i moduli.
LIST_MODULES_DEFAULT
0x0
Usare il comportamento predefinito

Valore restituito

Se la funzione ha esito positivo, il valore restituito è diverso da zero.

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

Commenti

La funzione EnumProcessModulesEx è principalmente progettata 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 inizializzato oppure se l'elenco dei moduli cambia durante la chiamata alla funzione in seguito al caricamento o all'annullamento del caricamento delle DLL, EnumProcessModulesEx potrebbe non riuscire o restituire informazioni non corrette.

Questa funzione è destinata principalmente alle applicazioni a 64 bit. Se la funzione viene chiamata da un'applicazione a 32 bit in esecuzione in WOW64, l'opzione dwFilterFlag viene ignorata e la funzione fornisce gli stessi risultati della funzione EnumProcessModules .

È consigliabile specificare una matrice di valori HMODULE di grandi dimensioni, perché è difficile stimare il numero di moduli presenti nel processo al momento della chiamata EnumProcessModulesEx. Per determinare se la matrice lphModule è troppo piccola per contenere tutti gli handle del modulo per il processo, confrontare il valore restituito in lpcbNeed con il valore specificato in cb. Se lpcbNeeded è maggiore di cb, aumentare le dimensioni della matrice e chiamare nuovamente EnumProcessModulesEx .

Per determinare il numero di moduli enumerati dalla chiamata a EnumProcessModulesEx, dividere il valore risultante nel parametro lpcbNeeded by sizeof(HMODULE).

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

Non chiamare CloseHandle in uno degli handle restituiti da questa funzione. Le informazioni provengono da uno snapshot, quindi non ci sono risorse da liberare.

Per acquisire uno snapshot dei processi specificati e degli heaps, dei moduli e dei thread usati da questi processi, usare la funzione CreateToolhelp32Snapshot .

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

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

Requisiti

Requisito Valore
Client minimo supportato Windows Vista [solo app desktop]
Server minimo supportato Windows Server 2008 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione psapi.h (include Windows.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

CreateToolhelp32Snapshot

EnumProcesses

Informazioni sul modulo

Funzioni PSAPI