Функция GetModuleFileName


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

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

Синтаксис

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

Параметры

hModule

[in] Дескриптор модуля, путь к которому требуется. Если этот параметр - ПУСТО (NULL), GetModuleFileName извлекает путь к исполняемому файлу текущего процесса.

lpFilename

[out] Указатель в буфер, получающий символьную строку с нулем в конце, которая определяет полный путь доступа к модулю. Если длина пути выходит за пределы размера, который определяет параметр nSize, функция завершается успешно, но  строка обрезается до величины  nSize и не может быть символом конца строки ('\0').

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

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

Обратите внимание! на то, что эта функция не поддерживает пути с префиксом " \\?\".

nSize

[in] Размер буфера lpFilename, в TCHARs.

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

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

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

Замечания

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

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

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

Windows Me/98/95:  Эта функция извлекает длинные имена файла, когда номер версии приложения больше чем или равен 4.00, а длинное имя файла доступно. В противном случае, она возвращает только имена файла формата 8.3.

Код примера

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

Смотри также

Обзор Динамически подключаемые библиотеки (DLL), Функции, используемые DLL GetModuleFileNameEx , GetModuleHandle, LoadLibrary

Размещение и совместимость GetModuleFileName

К

Windows XP

Да 

л

Windows 2000 Professional

Да

и

Windows NT  Workstation

Да 

е

Windows Me

Да

н

Windows 98

Да

т

Windows 95

Да

 
С

Windows Server 2003

Да

е Windows 2000 Server Да
р Windows NT Server Да
в    
е    
р    

Используемая библиотека

Kernel32.lib

Используемая DLL kernel32.dll
 Заголовочный файл  

- объявлено в

Winbase.h

 - включено в

-

 Unicode

Реализовано как GetModuleFileNameW(Unicode) и GetModuleFileNameA(ANSI).

 Замечания по платформе

Не имеется

 

Назад в оглавление
На главную страницу
На оглавление справки

Hosted by uCoz