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 con 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 que especifica el parámetro nSize , la función se realiza correctamente y la cadena se trunca en caracteres nSize , incluido el carácter nulo de terminación.
Windows XP: La cadena se trunca en caracteres nSize y no termina 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 Asignación de nombre de un archivo.
[in] nSize
Tamaño del búfer 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 en caracteres nSize , incluido el carácter nulo de terminación, la función devuelve nSize y 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 la función no se realiza correctamente, el valor devuelto es 0 (cero). Para obtener información de error extendida, llame a GetLastError.
Comentarios
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 _pgmptr
global 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 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
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 | libloaderapi.h (incluya Windows.h) |
Library | Kernel32.lib |
Archivo DLL | Kernel32.dll |