Функция GetModuleFileNameA (libloaderapi.h)
Извлекает полный путь для файла, содержащего указанный модуль. Модуль должен быть загружен текущим процессом.
Чтобы найти файл для модуля, загруженного другим процессом, используйте функцию GetModuleFileNameEx.
Синтаксис
DWORD GetModuleFileNameA(
[in, optional] HMODULE hModule,
[out] LPSTR lpFilename,
[in] DWORD nSize
);
Параметры
[in, optional] hModule
Дескриптор загруженного модуля, путь которого запрашивается. Если этот параметр null, GetModuleFileName извлекает путь исполняемого файла текущего процесса.
Функция getModuleFileName
[out] lpFilename
Указатель на буфер, получающий полный путь модуля. Если длина пути меньше размера, указанного параметром nSize, функция завершается успешно, а путь возвращается в виде строки, завершающейся значением NULL.
Если длина пути превышает размер, заданный параметром nSize, функция завершается успешно, а строка усечена до nSize символов, включая завершающий символ NULL.
Windows XP: Строка усечена до символов nSize и не завершается значением NULL.
Возвращаемая строка будет использовать тот же формат, который был указан при загрузке модуля. Таким образом, путь может быть длинным или коротким именем файла и может использовать префикс \\?\
. Дополнительные сведения см. в разделе Именование файла.
[in] nSize
Размер буфера lpFilename в TCHARs.
Возвращаемое значение
Если функция выполнена успешно, возвращаемое значение является длиной строки, скопированной в буфер, в символах, не включая завершающийся символ NULL. Если буфер слишком мал для хранения имени модуля, строка усечена до nSize символов, включая завершающийся символ NULL, функция возвращает nSize, а функция задает последнюю ошибку ERROR_INSUFFICIENT_BUFFER.
Windows XP: Если буфер слишком мал для хранения имени модуля, функция возвращает nSize. Последний код ошибки остается ERROR_SUCCESS. Если nSize равно нулю, возвращаемое значение равно нулю, а последний код ошибки — ERROR_SUCCESS.
Если функция завершается ошибкой, возвращаемое значение равно 0 (ноль). Чтобы получить расширенные сведения об ошибке, вызовите GetLastError.
Замечания
Если библиотека DLL загружается в двух процессах, его имя файла в одном процессе может отличаться от имени файла в другом процессе.
Глобальная переменная _pgmptr
автоматически инициализирована в полный путь к исполняемому файлу и может использоваться для получения полного имени пути исполняемого файла.
Примеры
Пример см. в разделе установка службы.
Заметка
Заголовок libloaderapi.h определяет GetModuleFileName как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows XP [классические приложения | Приложения UWP] |
минимальный поддерживаемый сервер | Windows Server 2003 [классические приложения | Приложения UWP] |
целевая платформа | Виндоус |
заголовка | libloaderapi.h (включая Windows.h) |
библиотеки |
Kernel32.lib |
DLL | Kernel32.dll |
См. также
Функции библиотеки Dynamic-Link