<Return[JKL]><Top>

LocalLock

Declare Function Api_LocalLock& Lib "kernel32" Alias "LocalLock" (ByVal hMem&)

Declare Function LocalLock Lib "kernel32" Alias "LocalLock" (ByVal hMem As Long) As Long

ローカルメモリオブジェクトをロックし、オブジェクトのメモリブロックの最初のバイトへのポインタを返す。
※この関数は、16 ビット版 Windows との互換性ために提供されている。

パラメータ
hMem
    ローカルメモリオブジェクトのハンドルを指定する。LocalAlloc 関数または LocalReAlloc 関数が返したハンドルを使う。

戻り値
    関数が成功すると、メモリブロックの最初のバイトへのポインタが返る。
    関数が失敗すると、NULL が返る。拡張エラー情報を取得するには、GetLastError 関数を使う。

解説
    各メモリオブジェクトの内部にあるデータ構造体にはロックカウントが含まれていて、最初は 0 に設定されている。移動可能メモリオブジェクト

    では、LocalLock 関数を実行するとこのカウントがインクリメント(値を 1 増やす)され、LocalUnlock 関数を実行するとこのカウントがデクリメン

    ト(値を 1 減らす)される。プロセスがオブジェクトに対して LocalLock 関数を呼び出すたびに、それに対応する LocalUnlock 関数を呼び出さ

    なければならない。ロックされたメモリは、LocalReAlloc 関数でそのメモリオブジェクトを再割り当てしない限り、移動または廃棄されることは

    ない。ロック済みメモリオブジェクトのメモリブロックは、ロックカウントが 0 になるまではロックされた状態にある。ロックカウントが 0 になると、

    そのメモリブロックを移動または廃棄できる。
    LMEM_FIXED フラグをセットして割り当てたメモリオブジェクトでは、常にロックカウントが 0 になる。このようなオブジェクトでは、返されたポ

    インタの値は指定されたハンドルと同じ値になる。
    指定されたメモリブロックがすでに廃棄されている場合や、メモリブロックのサイズが 0 である場合、関数は NULL を返す。
    廃棄されたオブジェクトのロックカウントは、常に 0 である。