Condividi tramite


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

Vedi anche

CreateToolhelp32Snapshot

OpenProcess

Funzioni PSAPI

Informazioni sui processi