Функция FreeLibrary уменьшает итоговое число ссылок на загруженные динамически подключаемые библиотеки (DLL). Когда итоговое число ссылок достигает нуля, модуль отменяет отображение в адресном пространстве вызывающего процесса, а дескриптор становится больше не допустим.
Синтаксис
BOOL FreeLibrary( HMODULE hModule ); |
Параметры
hModule
[in] Дескриптор загруженного DLL модуля. Функцией LoadLibrary или GetModuleHandle возвращается этот дескриптор.Возвращаемые значения
Если функция завершается успешно, возвращаемое значение не нуль.
Если функция завершается ошибкой, возвращаемое значение равняется нулю. Чтобы получить дополнительную информацию об ошибке, вызовите GetLastError.
Замечания
Каждый процесс обслуживает определенное число ссылок на каждый загруженный библиотечный модуль. Это итоговое число ссылок увеличивается каждый раз, когда вызывается LoadLibrary, и уменьшается каждый раз, когда вызывается FreeLibrary. Модуль DLL, загружается при инициализации процесса благодаря выполняемом при загрузке динамическом связывании имеет итоговое число ссылок - единицу. Это итоговое число увеличивается, если один и тот же модуль загружается вызовом LoadLibrary.
Перед отменой отображения библиотечного модуля, система дает возможность DLL отделиться от процесса, при помощи вызова функции DllMain, если она одна, со значением DLL_PROCESS_DETACH. Такое выполнение дает DLL возможность очистить ресурсы, распределенные от имени текущего процесса. После того, как функция точки входа возвращает значение, библиотечный модуль удаляется из адресного пространства текущего процесса.
Не сохраняется вызов FreeLibrary из DllMain. Дополнительную информацию, см. в статье раздел Замечаний в DllMain.
Вызов FreeLibrary не влияет на другие процессы, которые используют один и тот же библиотечный модуль.
Код примера
Пример, см. в статье Использование динамического связывания периода выполнения.
Смотри также
Обзор Динамически подключаемые библиотеки (DLL), Функции, используемые DLL, FreeLibraryAndExitThread, GetModuleHandle, LoadLibrary
Размещение и совместимость FreeLibrary |
||
К |
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 |
|
- включено в |
Windows.h |
|
Unicode |
Нет |
|
Замечания по платформе |
Не имеется |