原文链接 -> 传送门
函数功能:
HeapLock 函数用于尝试获取与指定堆相关联的临界区对象或锁。
API 函数原型:
注释:_In_ 说明该参数是输入的。
BOOL WINAPI HeapLock( _In_ HANDLE hHeap );
参数解析:
|
参数 |
含义 |
|
hHeap |
1. 指向将要被解锁的堆的句柄 |
返回值:
1. 如果函数调用成功,返回值是非 0;
2. 如果函数调用失败,返回值是 0。
若想获得更多的错误信息,可调用 GetLastError 函数。
备注:
1. 如果函数成功,调用线程拥有堆锁。只有调用线程能够从堆中分配或释放的内存。如果线程试图从堆中分配或释放的内存,那么调用进程的其他线程执行将会被阻塞。这些线程将仍然被阻塞,直到拥有堆锁线程调用 HeapUnlock 函数释放锁。
2. HeapLock 函数主要用于防止当调用线程使用 HeapWalk 函数时,其他线程分配和释放堆内存。
3. 如果 HeapUnlock 函数调用在 HEAP_NO_SERIALIZATION 属性堆上,操作结果未定义。
4. 每成功调用 HeapLock 函数一次,必须也调用 HeapUnlock 函数一次来与之对应。调用 HeapUnlock 函数失败将阻止尝试访问堆的调用进程的其他任何线程执行。
需求:
|
Minimum supported client |
Windows xp [桌面应用程序 | Windows Store 程序] |
|
Minimum supported server |
Windows 2003 服务器版 [桌面应用程序 | Windows Store 程序] |
|
Minimum supported phone |
Windows Phone 8 |
|
Header |
HeapApi.h (包含于 Windows.h); |
|
Library |
Kernel32.lib |
|
DLL |
Kernel32.dll |




