localUnlock 函数 (winbase.h)
递减与分配有 LMEM_MOVEABLE的内存对象关联的锁计数。 此函数对使用 LMEM_FIXED 分配的内存对象没有影响。
语法
BOOL LocalUnlock(
[in] HLOCAL hMem
);
参数
[in] hMem
本地内存对象的句柄。 此句柄由 LocalAlloc 或 LocalReAlloc 函数返回。
返回值
如果在递减锁计数后内存对象仍被锁定,则返回值为非零值。 如果在递减锁计数后解锁内存对象,则函数返回零, GetLastError 返回 NO_ERROR。
如果函数失败,则返回值为零, GetLastError 返回 除 NO_ERROR 以外的值。
注解
每个内存对象的内部数据结构包括最初为零的锁计数。 对于可移动内存对象, LocalLock 函数将计数递增 1, LocalUnlock 将计数递减 1。 对于进程对对象的 LocalLock 进行的每个调用,它最终必须调用 LocalUnlock。 除非使用 LocalReAlloc 函数重新分配内存对象,否则不会移动或丢弃锁定的内存。 锁定的内存对象的内存块将保持锁定状态,直到其锁计数减为零,此时可以移动或丢弃它。
如果内存对象已解锁, 则 LocalUnlock 将返回 FALSE , 并且 GetLastError 报告 ERROR_NOT_LOCKED。 使用 LMEM_FIXED 分配的内存对象的锁计数始终为零,并导致 ERROR_NOT_LOCKED 错误。
进程不应依赖返回值来确定它随后必须为内存块调用 LocalUnlock 的次数。
要求
最低受支持的客户端 | Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | winbase.h (包括 Windows.h) |
Library | Kernel32.lib |
DLL | Kernel32.dll |