Compartir a través de


Función GetModuleFileNameA (libloaderapi.h)

Recupera la ruta de acceso completa del archivo que contiene el módulo especificado. El proceso actual debe haber cargado el módulo.

Para buscar el archivo de un módulo cargado por otro proceso, use la función getModuleFileNameEx .

Sintaxis

DWORD GetModuleFileNameA(
  [in, optional] HMODULE hModule,
  [out]          LPSTR   lpFilename,
  [in]           DWORD   nSize
);

Parámetros

[in, optional] hModule

Identificador del módulo cargado cuya ruta de acceso se solicita. Si este parámetro es NULL, GetModuleFileName recupera la ruta de acceso del archivo ejecutable del proceso actual.

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

[out] lpFilename

Puntero a un búfer que recibe la ruta de acceso completa del módulo. Si la longitud de la ruta de acceso es menor que el tamaño que especifica el parámetro nSize, la función se realiza correctamente y la ruta de acceso se devuelve como una cadena terminada en null.

Si la longitud de la ruta de acceso supera el tamaño especificado por el parámetro nSize, la función se realiza correctamente y la cadena se trunca para nSize caracteres, incluido el carácter nulo de terminación.

Windows XP: La cadena se trunca en nSize caracteres y no está terminada en null.

La cadena devuelta usará el mismo formato que se especificó cuando se cargó el módulo. Por lo tanto, la ruta de acceso puede ser un nombre de archivo largo o corto y puede usar el prefijo \\?\. Para obtener más información, vea Asignar nombre a un archivo.

[in] nSize

Tamaño del búfer de lpFilename, en TCHAR.

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto es la longitud de la cadena que se copia en el búfer, en caracteres, sin incluir el carácter nulo de terminación. Si el búfer es demasiado pequeño para contener el nombre del módulo, la cadena se trunca para nSize caracteres, incluido el carácter nulo de terminación, la función devuelve nSizey la función establece el último error en ERROR_INSUFFICIENT_BUFFER.

Windows XP: Si el búfer es demasiado pequeño para contener el nombre del módulo, la función devuelve nSize. El último código de error permanece ERROR_SUCCESS. Si nSize es cero, el valor devuelto es cero y el último código de error es ERROR_SUCCESS.

Si se produce un error en la función, el valor devuelto es 0 (cero). Para obtener información de error extendida, llame a GetLastError.

Observaciones

Si un archivo DLL se carga en dos procesos, su nombre de archivo en un proceso puede diferir en caso de que su nombre de archivo en el otro proceso.

La variable global _pgmptr se inicializa automáticamente en la ruta de acceso completa del archivo ejecutable y se puede usar para recuperar el nombre de ruta de acceso completa de un archivo ejecutable.

Ejemplos

Para obtener un ejemplo, consulte Instalación de un servicio.

Nota

El encabezado libloaderapi.h define GetModuleFileName 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 neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o tiempo de ejecución. Para obtener más información, vea Conventions for Function Prototypes.

Requisitos

Requisito Valor
cliente mínimo admitido Windows XP [aplicaciones de escritorio | Aplicaciones para UWP]
servidor mínimo admitido Windows Server 2003 [aplicaciones de escritorio | Aplicaciones para UWP]
de la plataforma de destino de Windows
encabezado de libloaderapi.h (incluya Windows.h)
biblioteca de Kernel32.lib
DLL de Kernel32.dll

Consulte también

funciones de biblioteca de Dynamic-Link

GetModuleFileNameEx

GetModuleHandle

loadLibrary

LoadLibraryEx