Функция GetModuleHandleEx


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

Синтаксис

BOOL GetModuleHandleEx(
  DWORD dwFlags,
  LPCTSTR lpModuleName,
  HMODULE* phModule
);

Параметры

dwFlags

[in] Этот параметр может состоять из одного или нескольких ниже перечисленных значений.
 
Значение Предназначение
0 Увеличивается итоговое число ссылок. Это - заданная по умолчанию ситуация.

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

GET_MODULE_HANDLE_EX_FLAG_PIN Загрузка модуля останавливается до тех пор, пока процесс не завершит работу, независимо от того сколько раз вызывается FreeLibrary.

Этот параметр не может использоваться с GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT.

GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT Итоговое число ссылок  для модуля не увеличивается. Этот параметр эквивалентен характеру работы функции GetModuleHandle.

Этот параметр не может использоваться с флажком GET_MODULE_HANDLE_EX_FLAG_PIN.

GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS Параметр lpModuleName - адрес в модуле.
lpModuleName
[in] Указатель на символьную строку с нулем в конце, которая содержит имя модуля (или .dll или .exe файл), или указатель на адрес в модуле (если dwFlags - GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS).

В конец имени модуля, если расширение имени файла опускается, добавляется заданное по умолчанию библиотечное расширение .dll. Символьная строка имени файла может включать в себя конечный символ точки (.), который указывает, что имя модуля не имеет расширения. Строка не должна определять путь. Когда определяется путь, убедитесь, что используются обратные слэши (\), а не прямые слэши (/). Имя сравнивается (независимо от ситуации) с именами модулей в текущий момент отображаемыми в адресном пространстве вызывающего процесса.

Если этот параметр - ПУСТО (NULL), функцией возвращается  дескриптор файла, используемый, чтобы создать вызывающий процесс (.exe файл).

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

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

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

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

Замечания

Возвращенный дескриптор - не глобальный или наследуемый. Его нельзя дублировать или использовать другим процессом.

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

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

Если dwFlags содержит GET_MODULE_HANDLE_EX_UNCHANGED_REFCOUNT, эта функция должна осторожно использоваться  во многопоточном приложении. Нет никакой гарантии, что дескриптор модуля остается допустимым в промежутке времени когда эта функция возвращает дескриптор и, когда он используется. Например, поток извлекает дескриптор модуля, но прежде, чем он использует этот дескриптор, второй поток освобождает модуль. Если система загружает другой модуль, он может  многократно использовать дескриптор модуля, который был недавно освобожден. Поэтому, первый поток получит дескриптор модуля другой, а не предназначенный.

Чтобы компилировать приложение, которое использует эту функцию, определите макрос _WIN32_WINNT как 0x0501 или позже. Дополнительную информацию, см. Использование заголовочных файлов Windows.

Смотри также

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

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

К

Windows XP

Да 

л

Windows 2000

Нет

и

Windows NT

Нет 

е

Windows Me

Нет

н

Windows 98

Нет

т

Windows 95

Нет

 
С

Windows Server 2003

Да

е Windows 2000 Server Нет
р Windows NT Server Нет 
в    
е    
р    

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

Kernel32.lib

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

- объявлено в

Winbase.h

 - включено в

Windows.h

 Unicode

Нет

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

Не имеется

 

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

Hosted by uCoz