15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


GetModuleFileName

Функция GetModuleFileName позволяет получить полный путь для указанного модуля.

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

 

DWORD GetModuleFileName(
  HMODULE hModule,
  LPTSTR lpFilename,
  DWORD nSize
);

Параметры

hModule
[на входе] Дескриптор модуля, чей путь мы хотим узнать. Если этот параметр равен NULL, GetModuleFileName возвратит путь текущего модуля.
lpFilename
[на выходе] Указатель на буфер, который будет содержать строку (завершающуюся нулём) с полным путём модуля. Если длина пути превышает размер, указанный в параметре nSize, то функция вернёт путь, но он будет обрезан до nSize символа и может не содержать в конце нулевого символа.

Windows NT/2000/XP: Путь может иметь префикс "\\?\", в зависимости от того, как был загружен модуль.

nSize
[на входе] Размер буфера lpFilename в TCHAR-ах.

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

Если функция выполнена успешно, то возвращаемое значение, это длина строки, скопированной в буфер в TCHAR-ах. Если буфер слишком мал для хранения имени модуля, то строка будет обрезана до nSize символа, а функция вернёт значение nSize.

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

Замечания

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

Для ANSI версии функции, количество TCHAR-ов, это количество байт; для Unicode версии, это количество символов.

Требования

Windows NT/2000/XP: Включена в Windows NT 3.1 и позже.
Windows 95/98/Me: Включена в Windows 95 и позже.
Unicode: Для Windows NT/2000/XP существует как Unicode, так и ANSI версии.
Заголовок: Объявлена в Winbase.h; Windows.h.
Библиотека: Kernel32.lib.