Compartir a través de


Función EnumProcesses (psapi.h)

Recupera el identificador de proceso de cada objeto de proceso del sistema.

Sintaxis

BOOL EnumProcesses(
  [out] DWORD   *lpidProcess,
  [in]  DWORD   cb,
  [out] LPDWORD lpcbNeeded
);

Parámetros

[out] lpidProcess

Puntero a una matriz que recibe la lista de identificadores de proceso.

[in] cb

Tamaño de la matriz pProcessIds , en bytes.

[out] lpcbNeeded

Número de bytes devueltos en la matriz pProcessIds .

Valor devuelto

Si la función se realiza correctamente, el valor devuelto es distinto de cero.

Si la función no se realiza correctamente, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError.

Comentarios

Es una buena idea usar una matriz grande, ya que es difícil predecir cuántos procesos habrá en el momento en que se llama a EnumProcesses.

Para determinar cuántos procesos se enumeraron, divida el valor lpcbNeeded por sizeof(DWORD). No hay ninguna indicación cuando el búfer es demasiado pequeño para almacenar todos los identificadores de proceso. Por lo tanto, si lpcbNeed es igual a cb, considere la posibilidad de reintentar la llamada con una matriz mayor.

Para obtener identificadores de proceso para los procesos cuyos identificadores acaba de obtener, llame a la función OpenProcess .

A partir de Windows 7 y Windows Server 2008 R2, Psapi.h establece números de versión para las funciones psapi. El número de versión de PSAPI afecta al nombre usado para llamar a la función y la biblioteca que debe cargar un programa.

Si PSAPI_VERSION es 2 o superior, esta función se define como K32EnumProcesses en Psapi.h y exportada en Kernel32.lib y Kernel32.dll. Si PSAPI_VERSION es 1, esta función se define como EnumProcesses en Psapi.h y exportada en Psapi.lib y Psapi.dll como contenedor que llama a K32EnumProcesses.

Los programas que deben ejecutarse en versiones anteriores de Windows, así como Windows 7 y versiones posteriores siempre deben llamar a esta función como EnumProcesses. Para garantizar la resolución correcta de símbolos, agregue Psapi.lib a la macro TARGETLIBS y compile el programa con –DPSAPI_VERSION=1. Para usar la vinculación dinámica en tiempo de ejecución, cargue Psapi.dll.

Ejemplos

Para obtener un ejemplo, vea Enumerar todos los procesos o Enumerar todos los módulos para un proceso.

Requisitos

   
Cliente mínimo compatible Windows XP [aplicaciones de escritorio | aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2003 [aplicaciones de escritorio | aplicaciones para UWP]
Plataforma de destino Windows
Encabezado psapi.h
Library Kernel32.lib en Windows 7 y Windows Server 2008 R2; Psapi.lib (si PSAPI_VERSION=1) en Windows 7 y Windows Server 2008 R2; Psapi.lib en Windows Server 2008, Windows Vista, Windows Server 2003 y Windows XP
Archivo DLL Kernel32.dll en Windows 7 y Windows Server 2008 R2; Psapi.dll (si PSAPI_VERSION=1) en Windows 7 y Windows Server 2008 R2; Psapi.dll en Windows Server 2008, Windows Vista, Windows Server 2003 y Windows XP

Consulte también

CreateToolhelp32Snapshot

OpenProcess

Funciones de PSAPI

Información de proceso