ロードされたダイナミックリンクライブラリ(DLL)モジュールを解放し、必要に応じて参照カウントを減少させる。
FreeLibrary hLibModule
hLibModule : [intptr] ロード済みライブラリモジュールへのハンドル。LoadLibrary、LoadLibraryEx、GetModuleHandle、GetModuleHandleEx のいずれかがこのハンドルを返す。
(プラグイン / モジュール : kernel32.dll)
ロードされたダイナミックリンクライブラリ(DLL)モジュールを解放し、必要に応じて参照カウントを減少させる。 [戻り値] 関数が成功した場合、戻り値は 0 以外。失敗した場合は 0。拡張エラー情報を得るには GetLastError を呼び出す。 [備考] システムはロード済みモジュールごとにプロセス単位の参照カウントを保持する。プロセス初期化時のロード時動的リンクによってロードされたモジュールは参照カウントが 1 となる。モジュールの参照カウントは LoadLibrary 呼び出しごとに 1 増加する。LoadLibraryEx による呼び出しでも、モジュールが初回ロードかつデータ/イメージファイルとしてロードされる場合を除いて参照カウントが増加する。FreeLibrary または FreeLibraryAndExitThread を呼び出すたびに参照カウントが減少する。参照カウントが 0 になるかプロセスが終了するとモジュールはアドレス空間からアンロードされる。ライブラリモジュールのアンロード前、システムはモジュールの DllMain 関数が存在する場合に DLL_PROCESS_DETACH 値でそれを呼び出し、現在のプロセスのために確保したリソースをクリーンアップする機会を与える。エントリポイント関数が戻った後、ライブラリモジュールはアドレス空間から削除される。DllMain から FreeLibrary を呼ぶのは安全ではない。詳細は DllMain の Remarks を参照。FreeLibrary の呼び出しは同じモジュールを使用する他のプロセスには影響しない。GetModuleHandle が返したハンドルで FreeLibrary を呼ぶ際は注意が必要。GetModuleHandle は参照カウントを増加させないため、そのハンドルを FreeLibrary に渡すとモジュールが早期にアンロードされる可能性がある。実行中の DLL をアンロードして自身を終了させるスレッドは、FreeLibrary と ExitThread を個別に呼ぶのではなく FreeLibraryAndExitThread を呼ぶこと。そうしないとレース条件が発生しうる。詳細は FreeLibraryAndExitThread の Remarks を参照。
| プラグイン / モジュール | kernel32.dll |
| バージョン | 1.0 |
| 作成日 | 2026/04/16 |
| 著作者 | IronHSP / CsWin32 bridge |
| URL | https://github.com/inovia/IronHSP |
| 備考 | Win32 API の kernel32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。 |
| タイプ | 拡張命令 |
| グループ | Win32API |
| 対応環境 |
|
| hs ファイル | hsphelp\win32_kernel32_gen2.hs |