GlobalUnlock 函数 (winbase.h)
递减与使用 GMEM_MOVEABLE 分配的内存对象关联的锁计数。 此函数对使用 GMEM_FIXED 分配的内存对象没有影响。
语法
BOOL GlobalUnlock(
[in] HGLOBAL hMem
);
参数
[in] hMem
全局内存对象的句柄。 此句柄由 GlobalAlloc 或 GlobalReAlloc 函数返回。
返回值
如果内存对象在减少锁计数后仍被锁定,则返回值为非零值。 如果内存对象在减少锁计数后解锁,则函数返回零, GetLastError返回NO_ERROR。
如果函数失败,则返回值为零, GetLastError 返回 NO_ERROR以外的值。
注解
每个内存对象的内部数据结构包括最初为零的锁计数。 对于可移动内存对象, GlobalLock 函数将计数递增 1, GlobalUnlock 将计数递减 1。 对于进程对 对象的 GlobalLock 进行的每个调用,它最终必须调用 GlobalUnlock。 除非使用 GlobalReAlloc 函数重新分配内存对象,否则不会移动或丢弃锁定的内存。 锁定的内存对象的内存块将保持锁定状态,直到其锁定计数减为零,此时可以移动或放弃该内存块。
使用 GMEM_FIXED 分配的内存对象始终具有零锁计数。 如果指定的内存块是固定内存,则此函数返回 TRUE。
如果内存对象已解锁,GlobalUnlock 将返回 FALSE,ERROR_NOT_LOCKEDGetLastError 报告。
进程不应依赖返回值来确定它随后必须为内存对象调用 GlobalUnlock 的次数。
要求
最低受支持的客户端 | Windows XP [桌面应用 | UWP 应用] |
最低受支持的服务器 | Windows Server 2003 [桌面应用 | UWP 应用] |
目标平台 | Windows |
标头 | winbase.h (包括 Windows.h) |
Library | Kernel32.lib |
DLL | Kernel32.dll |