<Return[F]><Top>

FreeLibrary

Declare Sub Api_FreeLibrary Lib "kernel32" Alias "FreeLibrary" (ByVal hLibModule&)

Declare Function FreeLibrary Lib "kernel32" Alias "FreeLibrary" (ByVal hLibModule As Long) As Long

ロード済みのダイナミックリンクライブラリ(DLL)モジュールの参照カウントを 1 つ減らす。参照カウントが 0 になると、モジュールは呼び出し側プロセスのアドレス空間からマップ解除され、そのモジュールのハンドルは無効になる。

パラメータ
hModule
    [入出力]ロード済みの DLL モジュールのハンドルを指定する。

    LoadLibrary 関数または GetModuleHandle 関数が、このハンドルを返す。


戻り値
    関数が成功すると、0 以外の値が返る。
    関数が失敗すると、0 が返る。拡張エラー情報を取得するには、GetLastError 関数を使う。

解説
    各プロセスは、ロード済みのライブラリモジュールの参照カウントを保持する。

    この参照カウントは、LoadLibrary 関数が呼び出されるたびに 1 増加し、FreeLibrary 関数が呼び出されるたびに 1 減少する。

    プロセスの初期化時に動的にリンクされた DLL モジュールの参照カウントは、1 になる。LoadLibrary を呼び出して同じモジュールを

    ロードすると、このカウントは 1 増加する。
    DLL の DllMain 関数が存在する場合、システムはライブラリモジュールをマップ解除する前に DLL_PROCESS_DETACH 値をセットして

    この関数を呼び出し、この DLL を有効にして、プロセスから分離させます。このような処理により、DLL は現在のプロセス用に割り当てら

    れているリソースをクリーンアップする機会を得られる。このエントリポイント関数から制御が返ると、ライブラリモジュールは現在のプロセスの

    アドレス空間から削除される。