Funzione EnumProcesses (psapi.h)
Recupera l'identificatore del processo per ogni oggetto processo nel sistema.
Sintassi
BOOL EnumProcesses(
[out] DWORD *lpidProcess,
[in] DWORD cb,
[out] LPDWORD lpcbNeeded
);
Parametri
[out] lpidProcess
Puntatore a una matrice che riceve l'elenco di identificatori di processo.
[in] cb
Dimensioni della matrice pProcessIds in byte.
[out] lpcbNeeded
Numero di byte restituiti nella matrice pProcessIds .
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
È consigliabile usare una matrice di grandi dimensioni, perché è difficile stimare il numero di processi presenti al momento della chiamata a EnumProcesses.
Per determinare il numero di processi enumerati, dividere il valore lpcbNeeded per sizeof(DWORD). Non esiste alcuna indicazione quando il buffer è troppo piccolo per archiviare tutti gli identificatori di processo. Pertanto, se lpcbNeeded è uguale a cb, provare a ripetere la chiamata con una matrice di dimensioni maggiori.
Per ottenere handle di processo per i processi i cui identificatori sono stati appena ottenuti, chiamare la funzione OpenProcess .
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 K32EnumProcesses in Psapi.h ed esportata in Kernel32.lib e Kernel32.dll. Se PSAPI_VERSION è 1, questa funzione viene definita come EnumProcesses in Psapi.h ed esportata in Psapi.lib e Psapi.dll come wrapper che chiama K32EnumProcesses.
I programmi che devono essere eseguiti nelle versioni precedenti di Windows e windows 7 e versioni successive devono sempre chiamare questa funzione come EnumProcesses. 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 o enumerazione di tutti i moduli per un processo.
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 |