Поделиться через


Функция GetModuleFileNameA (libloaderapi.h)

Извлекает полный путь для файла, содержащего указанный модуль. Модуль должен быть загружен текущим процессом.

Чтобы найти файл для модуля, загруженного другим процессом, используйте функцию GetModuleFileNameEx.

Синтаксис

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

Параметры

[in, optional] hModule

Дескриптор загруженного модуля, путь которого запрашивается. Если этот параметр null, GetModuleFileName извлекает путь исполняемого файла текущего процесса.

Функция getModuleFileName не извлекает путь для модулей, загруженных с помощью флага LOAD_LIBRARY_AS_DATAFILE. Дополнительные сведения см. в разделе LoadLibraryEx.

[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

GetModuleFileNameEx

GetModuleHandle

LoadLibrary

LoadLibraryEx