HeapLock 函数 (heapapi.h)

尝试获取与指定堆关联的关键节对象或锁。

语法

BOOL HeapLock(
  [in] HANDLE hHeap
);

参数

[in] hHeap

要锁定的堆的句柄。 此句柄由 HeapCreateGetProcessHeap 函数返回。

返回值

如果该函数成功,则返回值为非零值。

如果函数失败,则返回值为零。 要获得更多的错误信息,请调用 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

另请参阅

堆函数

HeapUnlock

HeapWalk

内存管理函数

VBS enclave 中可用的 Vertdll API