LoadLibrary

eXeL@B DVD

Материал из Справочник исследователя программ

Перейти к: навигация, поиск

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

HMODULE WINAPI LoadLibrary(
  LPCTSTR lpFileName
);

Содержание

Параметры

lpFileName
[in] Указатель на символьную строку с нулем в конце, которая именует исполняемый модуль 
(.dll или .exe файл).
Если  строка определяет путь, но файл не существует в указанном каталоге, функция 
завершается ошибкой. Когда определяется путь, убедитесь, что использованы наклонные черты 
влево  (обратные слэши (\)), а не прямые слэши (/).
Если символьная строка не определяет путь, функция использует стандартную стратегию поиска файла.

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

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

Windows Me/98/95: Если Вы используете LoadLibrary, чтобы загрузить модуль, который содержит ресурс, числовой идентификатор которого больше, чем 0x7FFF, LoadLibrary завершается ошибкой. Если Вы пытаетесь загрузить 16-разрядную DLL непосредственно из 32-разрядного кода, LoadLibrary завершается ошибкой. Если Вы пытаетесь загрузить DLL, подсистемная версия которой больше чем 4.0, LoadLibrary завершается ошибкой. Если ваша функция DllMain пробует вызывать, Unicode версию функции, LoadLibrary завершается ошибкой.

Замечания

Чтобы разрешить или запретить отображение на экране сообщений об ошибке, загрузчиком в ходе загрузки DLL, используйте функцию SetErrorMode.

LoadLibrary может быть использована чтобы отобразить модуль DLL и возвратить дескриптор, который может использоваться в функции GetProcAddress, чтобы получить адрес функции DLL. LoadLibrary может также использоваться, чтобы проецировать другие исполняемые модули. Например, функция может определить .exe файл, чтобы получить дескриптор, который может быть использован в функциях FindResource или LoadResource. Однако, не используйте LoadLibrary, чтобы запустить .exe файл, использующий функцию CreateProcess.

Дескрипторы модуля - не глобальные или наследуемые. Вызов LoadLibrary одним процессом не создает дескриптор, который другой процесс может использовать - например, в вызове функции GetProcAddress. Другой процесс должен сделать свой собственный вызов LoadLibrary для модуля перед вызовом GetProcAddress.

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

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

Требования

Клиент         Требуется Windows Vista, XP, 2000,NT Workstation,Windows Me,Windows 98,Windows 95
Сервер         Требуется Windows Server "Longhorn", 2003, 2000 Server, Windows NT Server.
Заголовок      Объявлен Winbase.h; включает Windows.h.
Библиотека     Использует Kernel32.lib.
DLL            Требуется Kernel32.dll.
Источник — «https://exelab.ru/faq/LoadLibrary»