<Return[H]><Top>

HeapLock

Declare Function Api_HeapLock& Lib "kernel32" Alias "HeapLock" (ByVal hHeap&)

Declare Function HeapLock Lib "kernel32" Alias "HeapLock" (ByVal hHeap As Long) As Long

指定されたヒープに関連付けられているクリティカルセクションオブジェクトまたはロックを取得しようとする。
関数が成功すると、呼び出し側のスレッドはヒープのロックを取得する。そのヒープのメモリを割り当てまたは解放できるのは、呼び出し側のスレッドのみである。呼び出し側のプロセスの他のいずれかのスレッドが、そのヒープのメモリを割り当てまたは解放しようとしても、その操作は妨害される。最初のスレッドが HeapUnlock 関数を呼び出してヒープロックを解除するまでは、他のスレッドは妨害されたままになる。

パラメータ
hHeap
    呼び出し側のスレッドが排他アクセスするためにロックしたいヒープのハンドルを指定する。

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

解説
    HeapLock 関数は主に、呼び出し側のスレッドが HeapWalk 関数を使っている間に、他のスレッドがヒープメモリの割り当てや解放をするこ

    とを防止するために使われる。
    HeapLock の呼び出しと同じ回数だけ、HeapUnlock 関数を呼び出さなければならない。HeapUnlock 関数を呼び出さないと、呼び出し側

    のプロセスの他のスレッドがヒープへのアクセスを試みたときに、実行が妨害される。
    注:アクセス違反を防止するために、構造化例外処理を使って、コードがヒープへの書き込みや読み取りを行うことを禁止する。