HeapLock function (heapapi.h)

Attempts to acquire the critical section object, or lock, that is associated with a specified heap.


BOOL HeapLock(
  [in] HANDLE hHeap


[in] hHeap

A handle to the heap to be locked. This handle is returned by either the HeapCreate or GetProcessHeap function.

Return value

If the function succeeds, the return value is nonzero.

If the function fails, the return value is zero. To get extended error information, call GetLastError.


If the function succeeds, the calling thread owns the heap lock. Only the calling thread will be able to allocate or release memory from the heap. The execution of any other thread of the calling process will be blocked if that thread attempts to allocate or release memory from the heap. Such threads will remain blocked until the thread that owns the heap lock calls the HeapUnlock function.

The HeapLock function is primarily useful for preventing the allocation and release of heap memory by other threads while the calling thread uses the HeapWalk function.

If the HeapLock function is called on a heap created with the HEAP_NO_SERIALIZE flag, the results are undefined.

Each successful call to HeapLock must be matched by a corresponding call to HeapUnlock. Failure to call HeapUnlock will block the execution of any other threads of the calling process that attempt to access the heap.


Enumerating a Heap


Requirement Value
Minimum supported client Windows XP [desktop apps only]
Minimum supported server Windows Server 2003 [desktop apps only]
Target Platform Windows
Header heapapi.h (include Windows.h)
Library Kernel32.lib
DLL Kernel32.dll

See also

Heap Functions



Memory Management Functions

Vertdll APIs available in VBS enclaves