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


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

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

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

Синтаксис

DWORD GetModuleFileNameW(
  [in, optional] HMODULE hModule,
  [out]          LPWSTR  lpFilename,
  [in]           DWORD   nSize
);

Параметры

[in, optional] hModule

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

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

[out] lpFilename

Указатель на буфер, получающий полный путь к модулю. Если длина пути меньше размера, указанного параметром nSize , функция завершается успешно, и путь возвращается в виде строки с пустым завершением.

Если длина пути превышает размер, заданный параметром nSize , функция завершается успешно, а строка усекается до символов nSize , включая символ null конца.

Windows XP: Строка усекается до символов nSize и не заканчивается null.

Возвращаемая строка будет использовать тот же формат, который был указан при загрузке модуля. Таким образом, путь может быть длинным или коротким именем файла и может использовать префикс "\?". Дополнительные сведения см. в разделе Именование файла.

[in] nSize

Размер буфера lpFilename в WCHAR.

Возвращаемое значение

Если функция выполняется успешно, возвращаемое значение представляет собой длину строки, копируемых в буфер, в символах, не включая завершающий символ NULL. Если буфер слишком мал, чтобы вместить имя модуля, строка усекается до символов nSize , включая завершающий символ NULL, функция возвращает nSize, а функция задает последней ошибке значение ERROR_INSUFFICIENT_BUFFER.

Windows XP: Если буфер слишком мал для хранения имени модуля, функция возвращает nSize , а последний код ошибки не изменяется. Если nSize равно нулю, возвращаемое значение равно нулю и код последней ошибки не изменяется.

Если функция завершается сбоем, возвращаемое значение равно 0 (ноль). Дополнительные сведения об ошибке можно получить, вызвав GetLastError.

Комментарии

Если библиотека DLL загружается в два процесса, имя файла в одном процессе может отличаться от имени файла в другом процессе.

Глобальная переменная _pgmptr автоматически инициализируется полным путем к исполняемому файлу и может использоваться для получения полного пути к исполняемому файлу.

Примеры

Пример см. в разделе Установка службы.

Примечание

Заголовок libloaderapi.h определяет GetModuleFileName как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора UNICODE. Сочетание использования псевдонима, не зависящий от кодировки, с кодом, не зависящим от кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.

Требования

Требование Значение
Минимальная версия клиента Windows XP [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2003 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header libloaderapi.h (включая Windows.h)
Библиотека Kernel32.lib
DLL Kernel32.dll

См. также

Функции библиотеки динамической компоновки

GetModuleFileNameEx

GetModuleHandle

LoadLibrary

LoadLibraryEx