Поделиться через


Функция HeapLock (heapapi.h)

Пытается получить объект критического раздела или блокировку, связанный с указанной кучей.

Синтаксис

BOOL HeapLock(
  [in] HANDLE hHeap
);

Параметры

[in] hHeap

Дескриптор кучи, который необходимо заблокировать. Этот дескриптор возвращается функцией HeapCreate или GetProcessHeap .

Возвращаемое значение

Если функция выполняется успешно, возвращается ненулевое значение.

Если функция выполняется неудачно, возвращается нулевое значение. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.

Комментарии

Если функция выполняется успешно, вызывающий поток владеет блокировкой кучи. Только вызывающий поток сможет выделить или освободить память из кучи. Выполнение любого другого потока вызывающего процесса будет заблокировано, если поток попытается выделить или освободить память из кучи. Такие потоки будут оставаться заблокированными до тех пор, пока поток, которому принадлежит блокировка кучи, не вызовет функцию HeapUnlock .

Функция HeapLock в первую очередь полезна для предотвращения выделения и освобождения памяти кучи другими потоками, в то время как вызывающий поток использует функцию HeapWalk .

Если функция HeapLock вызывается в куче, созданной с флагом HEAP_NO_SERIALIZE , результаты будут неопределенными.

Каждый успешный вызов HeapLock должен соответствовать соответствующему вызову HeapUnlock. Сбой вызова HeapUnlock заблокирует выполнение любых других потоков вызывающего процесса, которые пытаются получить доступ к куче.

Примеры

Перечисление кучи

Требования

Требование Значение
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header heapapi.h (включая Windows.h)
Библиотека Kernel32.lib
DLL Kernel32.dll

См. также

Функции кучи

HeapUnlock

HeapWalk

Функции управления памятью

API-интерфейсы Vertdll, доступные в анклавах VBS