Compartir a través de


Función EnumProcessModulesEx (psapi.h)

Recupera un identificador para cada módulo del proceso especificado que cumple los criterios de filtro especificados.

Sintaxis

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

Parámetros

[in] hProcess

Identificador del proceso.

[out] lphModule

Matriz que recibe la lista de identificadores de módulo.

[in] cb

Tamaño de la matriz lphModule , en bytes.

[out] lpcbNeeded

Número de bytes necesarios para almacenar todos los identificadores de módulo en la matriz lphModule .

[in] dwFilterFlag

Criterios de filtro. Este parámetro puede ser uno de los valores siguientes.

Valor Significado
LIST_MODULES_32BIT
0x01
Enumere los módulos de 32 bits.
LIST_MODULES_64BIT
0x02
Enumere los módulos de 64 bits.
LIST_MODULES_ALL
0x03
Enumerar todos los módulos.
LIST_MODULES_DEFAULT
0x0
Usa el comportamiento predeterminado.

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

La función EnumProcessModulesEx está diseñada principalmente para su uso por depuradores y aplicaciones similares que deben extraer información del módulo de otro proceso. Si la lista de módulos del proceso de destino está dañada o aún no se inicializa, o si la lista de módulos cambia durante la llamada de función como resultado de que se cargan o descargan archivos DLL, Es posible que EnumProcessModulesEx produzca un error o devuelva información incorrecta.

Esta función está pensada principalmente para aplicaciones de 64 bits. Si una aplicación de 32 bits llama a la función que se ejecuta en WOW64, se omite la opción dwFilterFlag y la función proporciona los mismos resultados que la función EnumProcessModules .

Es recomendable especificar una gran matriz de valores HMODULE , ya que es difícil predecir cuántos módulos habrá en el proceso en el momento en que se llama a EnumProcessModulesEx. Para determinar si la matriz lphModule es demasiado pequeña para contener todos los identificadores de módulo para el proceso, compare el valor devuelto en lpcbNeeded con el valor especificado en cb. Si lpcbNeeded es mayor que cb, aumente el tamaño de la matriz y llame a EnumProcessModulesEx de nuevo.

Para determinar cuántos módulos se enumeraron mediante la llamada a EnumProcessModulesEx, divida el valor resultante en el parámetro lpcbNeeded por sizeof(HMODULE).

La función EnumProcessModulesEx no recupera identificadores para los módulos cargados con la marca LOAD_LIBRARY_AS_DATAFILE . Para obtener más información, vea LoadLibraryEx.

No llame a CloseHandle en ninguno de los identificadores devueltos por esta función. La información procede de una instantánea, por lo que no hay recursos que liberar.

Para tomar una instantánea de los procesos especificados y los montones, módulos y subprocesos usados por estos procesos, use la función CreateToolhelp32Snapshot .

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

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

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

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado psapi.h (incluye Windows.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

EnumProcesses

Información de módulos

Funciones PSAPI