Função EnumProcessModulesEx (psapi.h)

Recupera um identificador para cada módulo no processo especificado que atende aos critérios de filtro especificados.

Sintaxe

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

Parâmetros

[in] hProcess

Um identificador para o processo.

[out] lphModule

Uma matriz que recebe a lista de identificadores de módulo.

[in] cb

O tamanho da matriz lphModule , em bytes.

[out] lpcbNeeded

O número de bytes necessários para armazenar todos os identificadores de módulo na matriz lphModule .

[in] dwFilterFlag

Os critérios de filtro. Esse parâmetro pode usar um dos valores a seguir.

Valor Significado
LIST_MODULES_32BIT
0x01
Liste os módulos de 32 bits.
LIST_MODULES_64BIT
0x02
Liste os módulos de 64 bits.
LIST_MODULES_ALL
0x03
Listar todos os módulos.
LIST_MODULES_DEFAULT
0x0
Use o comportamento padrão.

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

A função EnumProcessModulesEx foi projetada principalmente para uso por depuradores e aplicativos semelhantes que devem extrair informações de módulo de outro processo. Se a lista de módulos no processo de destino estiver corrompida ou ainda não tiver sido inicializada ou se a lista de módulos for alterada durante a chamada de função como resultado de DLLs sendo carregadas ou descarregadas, EnumProcessModulesEx poderá falhar ou retornar informações incorretas.

Essa função destina-se principalmente a aplicativos de 64 bits. Se a função for chamada por um aplicativo de 32 bits em execução em WOW64, a opção dwFilterFlag será ignorada e a função fornecerá os mesmos resultados que a função EnumProcessModules .

É uma boa ideia especificar uma grande matriz de valores HMODULE , pois é difícil prever quantos módulos haverá no processo no momento em que você chamar EnumProcessModulesEx. Para determinar se a matriz lphModule é muito pequena para manter todas as alças de módulo para o processo, compare o valor retornado em lpcbNeeded com o valor especificado em cb. Se lpcbNeeded for maior que cb, aumente o tamanho da matriz e chame EnumProcessModulesEx novamente.

Para determinar quantos módulos foram enumerados pela chamada para EnumProcessModulesEx, divida o valor resultante no parâmetro lpcbNeeded por sizeof(HMODULE).

A função EnumProcessModulesEx não recupera identificadores para módulos que foram carregados com o sinalizador LOAD_LIBRARY_AS_DATAFILE . Para obter mais informações, consulte LoadLibraryEx.

Não chame CloseHandle em nenhum dos identificadores retornados por essa função. As informações vêm de um instantâneo, portanto, não há recursos a serem liberados.

Para obter uma instantâneo de processos especificados e os heaps, módulos e threads usados por esses processos, use a função CreateToolhelp32Snapshot.

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 K32EnumProcessModulesEx em Psapi.h e exportada em Kernel32.lib e Kernel32.dll. Se PSAPI_VERSION for 1, essa função será definida como EnumProcessModulesEx no Psapi.h e exportada em Psapi.lib e Psapi.dll como um wrapper que chama K32EnumProcessModulesEx.

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 EnumProcessModulesEx. 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.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2008 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho psapi.h (inclua Windows.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

Confira também

CreateToolhelp32Snapshot

EnumProcesses

Informações do módulo

Funções PSAPI