> For the complete documentation index, see [llms.txt](https://pinvokeisalive.gitbook.io/pinvoke/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://pinvokeisalive.gitbook.io/pinvoke/desktopfunctions/kernel32/freelibrary.md).

# FreeLibrary

### C# Signature:

```cs
[DllImport("kernel32.dll", SetLastError=true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool FreeLibrary(IntPtr hModule);
```

### VB.NET Signature:

```cs
<DllImport("kernel32.dll", SetLastError:=True, EntryPoint:="FreeLibrary")> _
Public Shared Function FreeLibrary(ByVal hModule As IntPtr) As Boolean
End Function
```

### VB Signature:

```cs
Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
```

### Sample Code:

```cs
private void ReadFile() {
      mFiles.Clear();
      hExe = LoadLibrary(mFileName);
      if (hExe.ToInt32() == 0) {
    throw new Win32Exception(Marshal.GetLastWin32Error());
      }
      GCHandle gch = GCHandle.Alloc(mFiles); //convert object to handle
      if (EnumResourceNames(hExe, "FILE", cb, (IntPtr)gch) == false) {
    gch.Free();
    throw new ApplicationException("Error reading files in the installer");
      }
      gch.Free();
      if (FreeLibrary(hExe) == false) {
    throw new Win32Exception(Marshal.GetLastWin32Error());
      }
    }
```
