小甲鱼 发表于 2016-8-2 17:37:10

HeapLock

注:本文档由 百日维新 翻译,小甲鱼校对。

原文链接 -> 传送门

函数功能:

HeapLock 函数用于尝试获取与指定堆相关联的临界区对象或锁。


API 函数原型:

注释:_In_ 说明该参数是输入的。
BOOL WINAPI HeapLock(
_In_ HANDLE hHeap
);

参数解析:


参数 含义
hHeap1. 指向将要被解锁的堆的句柄

2. 该句柄由 HeapCreate 函数或 GetProcessHeap 函数返回获取


返回值:

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
HeaderHeapApi.h (包含于 Windows.h);
WinBase.h 在 Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003, and Windows XP 上(包含于 Windows.h)
Library Kernel32.lib
DLL Kernel32.dll


【API档案】版权归鱼C工作室(www.fishc.com)所有,转载请注明来源。
页: [1]
查看完整版本: HeapLock