Tao.Platform.Windows SDK Documentation

Kernel.FreeLibrary Method 

The FreeLibrary function decrements the reference count of the loaded dynamic-link library (DLL). When the reference count reaches zero, the module is unmapped from the address space of the calling process and the handle is no longer valid.

[Visual Basic]
Public Shared Function FreeLibrary( _
   ByVal moduleHandle As IntPtr _
) As Boolean
[C#]
public static bool FreeLibrary(
   IntPtr moduleHandle
);

Parameters

moduleHandle
Handle to the loaded DLL module. The LoadLibrary or GetModuleHandle function returns this handle.

Return Value

If the function succeeds, the return value is true.

If the function fails, the return value is false. To get extended error information, call GetLastWin32Error.

Remarks

Each process maintains a reference count for each loaded library module. This reference count is incremented each time LoadLibrary is called and is decremented each time FreeLibrary is called. A DLL module loaded at process initialization due to load-time dynamic linking has a reference count of one. This count is incremented if the same module is loaded by a call to LoadLibrary.

Before unmapping a library module, the system enables the DLL to detach from the process by calling the DLL's DllMain function, if it has one, with the DLL_PROCESS_DETACH value. Doing so gives the DLL an opportunity to clean up resources allocated on behalf of the current process. After the entry-point function returns, the library module is removed from the address space of the current process.

It is not safe to call FreeLibrary from DllMain. For more information, see the Remarks section in DllMain.

Calling FreeLibrary does not affect other processes using the same library module.

See Also

Kernel Class | Tao.Platform.Windows Namespace | GetModuleHandle | LoadLibrary