HeapLock 関数 (heapapi.h)
指定したヒープに関連付けられているクリティカル セクション オブジェクト (ロック) の取得を試みます。
構文
BOOL HeapLock(
[in] HANDLE hHeap
);
パラメーター
[in] hHeap
ロックするヒープへのハンドル。 このハンドルは、 HeapCreate 関数または GetProcessHeap 関数によって返されます。
戻り値
関数が成功すると、戻り値は 0 以外になります。
関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。
解説
関数が成功した場合、呼び出し元のスレッドはヒープ ロックを所有します。 呼び出し元のスレッドのみがヒープからメモリを割り当てたり解放したりできます。 呼び出し元プロセスの他のスレッドの実行は、そのスレッドがヒープからのメモリの割り当てまたは解放を試みるとブロックされます。 このようなスレッドは、ヒープ ロックを所有するスレッドが HeapUnlock 関数を呼び出すまでブロックされたままになります。
HeapLock 関数は、呼び出し元のスレッドが HeapWalk 関数を使用している間に、他のスレッドによるヒープ メモリの割り当てと解放を防ぐのに主に役立ちます。
HEAP_NO_SERIALIZE フラグを使用して作成されたヒープで HeapLock 関数が呼び出された場合、結果は未定義になります。
HeapLock の呼び出しが成功するたびに、対応する HeapUnlock の呼び出しと一致する必要があります。 HeapUnlock の呼び出しに失敗すると、ヒープへのアクセスを試みる呼び出し元プロセスの他のスレッドの実行がブロックされます。
例
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | heapapi.h (Windows.h を含む) |
Library | Kernel32.lib |
[DLL] | Kernel32.dll |