Compartir a través de


Función GetModuleFileNameExA (psapi.h)

Recupera la ruta de acceso completa del archivo que contiene el módulo especificado.

Sintaxis

DWORD GetModuleFileNameExA(
  [in]           HANDLE  hProcess,
  [in, optional] HMODULE hModule,
  [out]          LPSTR   lpFilename,
  [in]           DWORD   nSize
);

Parámetros

[in] hProcess

Identificador del proceso que contiene el módulo.

El identificador debe tener los derechos de acceso PROCESS_QUERY_INFORMATION y PROCESS_VM_READ . Para obtener más información, consulte Derechos de acceso y seguridad de procesos.

Windows 10 y versiones posteriores, Windows Server 2016 y versiones posteriores: si el parámetro hModule es NULL, el identificador solo requiere PROCESS_QUERY_LIMITED_INFORMATION derechos de acceso.

La función GetModuleFileNameEx no recupera la ruta de acceso de los módulos cargados con la marca LOAD_LIBRARY_AS_DATAFILE . Para obtener más información, vea LoadLibraryEx.

[in, optional] hModule

Identificador del módulo. Si este parámetro es NULL, GetModuleFileNameEx devuelve la ruta de acceso del archivo ejecutable del proceso especificado en hProcess.

[out] lpFilename

Puntero a un búfer que recibe la ruta de acceso completa al módulo. Si el tamaño del nombre de archivo es mayor que el valor del parámetro nSize , la función se realiza correctamente, pero el nombre de archivo se trunca y finaliza en null.

[in] nSize

Tamaño del búfer lpFilename , en caracteres.

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto especifica la longitud de la cadena copiada en el búfer.

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 GetModuleFileNameEx 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 ha inicializado, o si la lista de módulos cambia durante la llamada de función como resultado de que se cargan o descargan archivos DLL, GetModuleFileNameEx puede producir un error o devolver información incorrecta.

Para recuperar el nombre de un módulo en el proceso actual, use la función GetModuleFileName . Esto es más eficaz y más confiable que llamar a GetModuleFileNameEx con un identificador para el proceso actual.

Para recuperar el nombre del módulo ejecutable principal de un proceso remoto, use la función GetProcessImageFileName o QueryFullProcessImageName . Esto es más eficaz y más confiable que llamar a la función GetModuleFileNameEx con un identificador de módulo NULL.

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 K32GetModuleFileNameEx en Psapi.h y exportada en Kernel32.lib y Kernel32.dll. Si PSAPI_VERSION es 1, esta función se define como GetModuleFileNameEx en Psapi.h y exportada en Psapi.lib y Psapi.dll como contenedor que llama a K32GetModuleFileNameEx.

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 GetModuleFileNameEx. 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 módulos de un proceso.

Nota

El encabezado psapi.h define GetModuleFileNameEx como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutro de codificación con código que no es neutral de codificación puede provocar discrepancias que dan lugar a errores de compilación o en tiempo de ejecución. Para obtener más información, vea Convenciones para prototipos de función.

Requisitos

Requisito Value
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

EnumProcesses

GetModuleBaseName

GetModuleFileName

GetModuleHandle

LoadLibrary

Información de módulos

Funciones PSAPI