FreeLibrary函数减少加载的动态链接库(DLL)模块的引用计数。当引用计数达到零时,模块将从调用进程的地址空间中取消映射,并且句柄不再有效。此函数取代FreeModule功能。
BOOL FreeLibrary(
HMODULE 【hLibModule】 | //处理加载库模块 |
); |
参数
【hLibModule】
标识加载的库模块。LoadLibrary或GetModuleHandle函数返回此句柄。
返回值
如果函数成功,返回值不为零。
如果函数失败,返回值为零。要获取扩展错误信息,请调用GetLastError.
备注
每个进程维护每个加载的库模块的引用计数。每次调用LoadLibrary时,该引用计数递增,并且每次调用FreeLibrary时都会递减。由于加载时间动态链接,在进程初始化时加载的DLL模块的引用计数为1。如果通过调用LoadLibrary加载相同的模块,则此计数递增。
在取消映射库模块之前,系统使DLL能够通过调用DLL的DllEntryPoint函数(如果具有一个)具有DLL_PROCESS_DETACH值来从进程中分离出来。这样做使DLL能够清理代表当前进程分配的资源。入门点函数返回后,库模块将从当前进程的地址空间中删除。
调用FreeLibrary不影响使用相同库模块的其他进程。
也可以看看
DllEntryPoint, FreeLibraryAndExitThread, FreeModule, GetModuleHandle, LoadLibrary