马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
注:本文档由 百日维新 翻译,小甲鱼校对。
原文链接 -> 传送门
函数功能:
LocalUnlock 函数用于减少以 LMEM_MOVEABLE 属性值分配的内存对象的锁计数。该函数对以 LMEM_FIXED 属性值分配的内存对象无效。
注释:与其他内存管理函数相比,局部内存管理函数有更大的开销却提供更少的功能。除非指出使用局部内存管理函数,不然新的应用程序应该使用堆内存管理函数。更多信息请查阅 Global and Local Functions。
API 函数原型:
注释:_In_ 说明该参数是输入的。LPVOID WINAPI LocalUnlock(
_In_ HLOCAL hMem
);
参数解析:
返回值:
1. 如果函数调用成功,但会存在一下两种情况:
- 减少锁计数之后如果内存对象仍然被锁住,返回值是非 0
- 减少锁计数之后如果内存对象被解锁,返回值是 0,GetLastError 函数返回 NO_ERROR
2. 如果函数调用失败,返回值是 0,GetLastError 函数返回一个值而非 NO_ERROR。
备注:
1. 每个内存对象的内部数据结构包含一个初始化为 0 的锁计数。对于可移动内存对象,LocalLock 函数会将锁计数值加 1,LocalUnlock 函数将锁计数值减 1。对于 LocalLock 函数的每一次调用,都必须相应的调用一次 LocalUnlock 函数。除非使用 LocalReAlloc 函数对内存对象进行重新分配,否则被锁定的内存空间不能够被移动或废弃。直到锁计数值减少为 0 时被锁定的内存块才会解锁并可以被移动或者废弃。
2. 如果内存对象已经被解锁,LocalUnlock 函数返回 FALSE ,GetLastError 函数记录 ERROR_NOT_LOCKED 错误日志。以 LMEM_FIXED 属性值分配的内存对象锁计数总是 0,并导致 ERROR_NOT_LOCKED 错误。
3. 进程不应该依赖返回值确定锁数,它必须随后对内存块调用 LocalUnlock 函数解锁。
需求:
Minimum supported client | Windows xp [仅桌面应用程序] | Minimum supported server | Windows 2003 服务器版 [仅桌面应用程序] | Header | WinBase.h (包含于 Windows.h) | Library | Kernel32.lib | DLL | Kernel32.dll |
【API档案】版权归鱼C工作室(www.fishc.com)所有,转载请注明来源。
|