localUnlock 函数 (winbase.h)

递减与分配有 LMEM_MOVEABLE的内存对象关联的锁计数。 此函数对使用 LMEM_FIXED 分配的内存对象没有影响。

注意 与其他内存管理功能相比,本地函数的开销更大,提供的功能更少。 除非文档指出应使用本地函数,否则新应用程序应使用 函数。 有关详细信息,请参阅 全局和本地函数
 

语法

BOOL LocalUnlock(
  [in] HLOCAL hMem
);

参数

[in] hMem

本地内存对象的句柄。 此句柄由 LocalAllocLocalReAlloc 函数返回。

返回值

如果在递减锁计数后内存对象仍被锁定,则返回值为非零值。 如果在递减锁计数后解锁内存对象,则函数返回零, 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

另请参阅

全局和本地函数

LocalAlloc

LocalFlags

LocalLock

LocalReAlloc

内存管理函数