原文链接 -> 传送门
函数功能:
GlobalUnlock 函数用于减少以 GMEM_MOVEABL 属性值分配的内存对象的锁计数。该函数对以 GMEM_FIXED 属性值分配的内存对象无效。
注释:与其他内存管理函数相比,全局内存管理函数有更大的开销却提供更少的功能。除非指出使用全局内存管理函数,不然新的应用程序应该使用堆内存管理函数。更多信息请查阅 Global and Local Functions。
API 函数原型:
注释:_In_ 说明该参数是输入的。
LPVOID WINAPI GlobalUnlock( _In_ HGLOBAL hMem );
参数解析:
|
参数 |
含义 |
|
hMem |
1. 指向全局内存对象的句柄 |
返回值:
1. 如果函数调用成功,但会存在一下两种情况:
· 减少锁计数之后如果内存对象仍然被锁住,返回值是非 0
· 减少锁计数之后如果内存对象被解锁,返回值是 0,GetLastError 函数返回 NO_ERROR
2. 如果函数调用失败,返回值是 0,GetLastError 函数返回一个值而非 NO_ERROR。
备注:
1. 每个内存对象的内部数据结构包含一个初始化为 0 的锁计数。对于可移动内存对象,GlobalLock 函数会将锁计数值加 1,GlobalUnlock 函数将锁计数值减 1。对于 GlobalLock 函数的每一次调用,都必须相应的调用一次 GlobalUnlock 函数。除非使用 GlobalReAlloc 函数对内存对象进行重新分配,否则被锁定的内存空间不能够被移动或废弃。直到锁计数值减少为 0 时被锁定的内存块才会解锁并可以被移动或者废弃。
2. 以 GMEM_FIXED 属性值分配的内存对象锁计数总是 0。如果存储块是只读操作权限,该函数返回 TRUE。如果内存对象已经被解锁,GlobalUnlock 返回 FALSE ,GetLastError 函数记录 ERROR_NOT_LOCKED 错误日志。
3. 进程不应该依赖返回值确定锁计数,而是必须在随后的操作中调用 GlobalUnlock 函数。
需求:
|
Minimum supported client |
Windows xp [仅桌面应用程序] |
|
Minimum supported server |
Windows 2003 服务器版 [仅桌面应用程序] |
|
Header |
WinBase.h (包含于 Windows.h) |
|
Library |
Kernel32.lib |
|
DLL |
Kernel32.dll |




