Função EnumProcesses (psapi.h)
Recupera o identificador de processo para cada objeto de processo no sistema.
Sintaxe
BOOL EnumProcesses(
[out] DWORD *lpidProcess,
[in] DWORD cb,
[out] LPDWORD lpcbNeeded
);
Parâmetros
[out] lpidProcess
Um ponteiro para uma matriz que recebe a lista de identificadores de processo.
[in] cb
O tamanho da matriz pProcessIds , em bytes.
[out] lpcbNeeded
O número de bytes retornados na matriz pProcessIds .
Valor retornado
Se a função for bem-sucedida, o valor retornado será diferente de zero.
Se a função falhar, o valor retornado será zero. Para obter informações de erro estendidas, chame GetLastError.
Comentários
É uma boa ideia usar uma matriz grande, pois é difícil prever quantos processos haverá no momento em que você chamar EnumProcesses.
Para determinar quantos processos foram enumerados, divida o valor lpcbNeeded por sizeof(DWORD). Não há nenhuma indicação dada quando o buffer é muito pequeno para armazenar todos os identificadores de processo. Portanto, se lpcbNeeded for igual a cb, considere tentar novamente a chamada com uma matriz maior.
Para obter identificadores de processo para os processos cujos identificadores você acabou de obter, chame a função OpenProcess .
A partir do Windows 7 e do Windows Server 2008 R2, o Psapi.h estabelece números de versão para as funções PSAPI. O número de versão do PSAPI afeta o nome usado para chamar a função e a biblioteca que um programa deve carregar.
Se PSAPI_VERSION for 2 ou superior, essa função será definida como K32EnumProcesses no Psapi.h e exportada em Kernel32.lib e Kernel32.dll. Se PSAPI_VERSION for 1, essa função será definida como EnumProcesses no Psapi.h e exportada em Psapi.lib e Psapi.dll como um wrapper que chama K32EnumProcesses.
Programas que devem ser executados em versões anteriores do Windows, bem como no Windows 7 e versões posteriores, sempre devem chamar essa função como EnumProcesses. Para garantir a resolução correta de símbolos, adicione Psapi.lib à macro TARGETLIBS e compile o programa com –DPSAPI_VERSION=1. Para usar a vinculação dinâmica em tempo de execução, carregue Psapi.dll.
Exemplos
Para obter um exemplo, consulte Enumerando todos os processos ou enumerando todos os módulos para um processo.
Requisitos
Cliente mínimo com suporte | Windows XP [aplicativos da área de trabalho | aplicativos UWP] |
Servidor mínimo com suporte | Windows Server 2003 [aplicativos da área de trabalho | Aplicativos UWP] |
Plataforma de Destino | Windows |
Cabeçalho | psapi.h |
Biblioteca | Kernel32.lib no Windows 7 e Windows Server 2008 R2; Psapi.lib (se PSAPI_VERSION=1) no Windows 7 e no Windows Server 2008 R2; Psapi.lib no Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP |
DLL | Kernel32.dll no Windows 7 e no Windows Server 2008 R2; Psapi.dll (se PSAPI_VERSION=1) no Windows 7 e no Windows Server 2008 R2; Psapi.dll no Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP |