События
Присоединение к вызову ИИ Навыков
8 апр., 15 - 28 мая, 07
Отточите свои навыки ИИ и введите подметки, чтобы выиграть бесплатный экзамен сертификации
Зарегистрируйтесь!Этот браузер больше не поддерживается.
Выполните обновление до Microsoft Edge, чтобы воспользоваться новейшими функциями, обновлениями для системы безопасности и технической поддержкой.
Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Освобождает загруженный модуль библиотеки динамической компоновки (DLL) и при необходимости уменьшает его число ссылок. Когда число ссылок достигает нуля, модуль выгружается из адресного пространства вызывающего процесса, и дескриптор становится недействительным.
BOOL FreeLibrary(
[in] HMODULE hLibModule
);
[in] hLibModule
Дескриптор загруженного модуля библиотеки.
LoadLibrary, LoadLibraryEx,
Функция GetModuleHandle или GetModuleHandleEx возвращает этот дескриптор.
Если функция выполняется успешно, возвращается ненулевое значение.
Если функция выполняется неудачно, возвращается нулевое значение. Чтобы получить расширенные сведения об ошибке, вызовите функцию GetLastError .
Система поддерживает количество ссылок по каждому процессу для каждого загруженного модуля. Модуль, загруженный во время инициализации процесса из-за динамического связывания во время загрузки, имеет число ссылок, 1. Число ссылок для модуля увеличивается каждый раз, когда модуль загружается вызовом LoadLibrary. Количество ссылок также увеличивается вызовом LoadLibraryEx , если модуль не загружается в первый раз и не загружается в виде файла данных или изображения.
Количество ссылок уменьшается при каждом вызове функции FreeLibrary или FreeLibraryAndExitThread для модуля. Когда число ссылок модуля достигает нуля или процесс завершается, система выгружает модуль из адресного пространства процесса. Перед выгрузкой модуля библиотеки система позволяет модулю отсоединиться от процесса путем вызова функции DllMain модуля, если она имеется, со значением DLL_PROCESS_DETACH. Это дает модулю библиотеки возможность очистить ресурсы, выделенные от имени текущего процесса. После возврата функции точки входа модуль библиотеки удаляется из адресного пространства текущего процесса.
Вызывать FreeLibrary из DllMain небезопасно. Дополнительные сведения см. в разделе Примечания статьи DllMain.
Вызов FreeLibrary не влияет на другие процессы, использующие тот же модуль.
Будьте внимательны при вызове FreeLibrary с дескриптором, возвращенным Командлетом GetModuleHandle. Функция GetModuleHandle не увеличивает число ссылок на модуль, поэтому передача этого дескриптора в FreeLibrary может привести к преждевременной выгрузке модуля.
Поток, который должен выгрузить библиотеку DLL, в которой он выполняется, а затем завершить работу, должен вызывать FreeLibraryAndExitThread вместо вызова FreeLibrary и ExitThread отдельно. В противном случае может возникнуть состояние гонки. Дополнительные сведения см. в разделе Примечания статьи FreeLibraryAndExitThread.
Пример см. в разделе Использование динамической компоновки Run-Time.
Минимальная версия клиента | Windows XP [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2003 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | libloaderapi.h (включая Windows.h) |
Библиотека | Kernel32.lib |
DLL | Kernel32.dll |
События
Присоединение к вызову ИИ Навыков
8 апр., 15 - 28 мая, 07
Отточите свои навыки ИИ и введите подметки, чтобы выиграть бесплатный экзамен сертификации
Зарегистрируйтесь!