HeapLock 函数 (heapapi.h)
尝试获取与指定堆关联的关键节对象或锁。
语法
BOOL HeapLock(
[in] HANDLE hHeap
);
参数
[in] hHeap
要锁定的堆的句柄。 此句柄由 HeapCreate 或 GetProcessHeap 函数返回。
返回值
如果该函数成功,则返回值为非零值。
如果函数失败,则返回值为零。 要获得更多的错误信息,请调用 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 |