LocalUnlock

LMEM_MOVEABLE で確保されたメモリオブジェクトに関連付けられたロックカウントを減算する。

LocalUnlock hMem

hMem : [int] ローカルメモリオブジェクトのハンドル。このハンドルは LocalAlloc または LocalReAlloc 関数によって返される。

(プラグイン / モジュール : kernel32.dll)

解説

LMEM_MOVEABLE で確保されたメモリオブジェクトに関連付けられたロックカウントを減算する。

[戻り値]
ロックカウントを減らした後もメモリオブジェクトがまだロックされている場合、戻り値は 0
以外である。ロックカウントを減らした結果メモリオブジェクトがアンロックされた場合、関数は 0 を返し GetLastError は
NO_ERROR を返す。関数が失敗した場合、戻り値は 0 で GetLastError は NO_ERROR 以外の値を返す。

[備考]
各メモリオブジェクトの内部データ構造には、初期値 0 のロックカウントが含まれる。可動メモリオブジェクトに対して LocalLock
関数はカウントを 1 増やし、LocalUnlock はカウントを 1 減らす。プロセスがオブジェクトに対して LocalLock
を呼び出すたびに、最終的に LocalUnlock を呼び出さなければならない。LocalReAlloc
関数で再確保されない限り、ロックされたメモリは移動も破棄もされない。ロックされたメモリオブジェクトのメモリブロックは、ロックカウントが 0
まで減らされるまでロックされたままとなり、その時点で移動や破棄が可能となる。メモリオブジェクトが既にアンロックされている場合、LocalUnlock
は FALSE を返し、GetLastError は ERROR_NOT_LOCKED を報告する。LMEM_FIXED
で確保されたメモリオブジェクトのロックカウントは常に 0 で、ERROR_NOT_LOCKED
エラーの原因となる。プロセスは、戻り値をもとに後続の LocalUnlock 呼び出し回数を判断すべきではない。

情報

プラグイン / モジュールkernel32.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の kernel32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_kernel32_gen2.hs