GlobalUnlock 函数 (winbase.h)

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

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

语法

BOOL GlobalUnlock(
  [in] HGLOBAL hMem
);

参数

[in] hMem

全局内存对象的句柄。 此句柄由 GlobalAllocGlobalReAlloc 函数返回。

返回值

如果内存对象在减少锁计数后仍被锁定,则返回值为非零值。 如果内存对象在减少锁计数后解锁,则函数返回零, GetLastError返回NO_ERROR

如果函数失败,则返回值为零, GetLastError 返回 NO_ERROR以外的值。

注解

每个内存对象的内部数据结构包括最初为零的锁计数。 对于可移动内存对象, GlobalLock 函数将计数递增 1, GlobalUnlock 将计数递减 1。 对于进程对 对象的 GlobalLock 进行的每个调用,它最终必须调用 GlobalUnlock。 除非使用 GlobalReAlloc 函数重新分配内存对象,否则不会移动或丢弃锁定的内存。 锁定的内存对象的内存块将保持锁定状态,直到其锁定计数减为零,此时可以移动或放弃该内存块。

使用 GMEM_FIXED 分配的内存对象始终具有零锁计数。 如果指定的内存块是固定内存,则此函数返回 TRUE

如果内存对象已解锁,GlobalUnlock 将返回 FALSEERROR_NOT_LOCKEDGetLastError 报告。

进程不应依赖返回值来确定它随后必须为内存对象调用 GlobalUnlock 的次数。

要求

   
最低受支持的客户端 Windows XP [桌面应用 | UWP 应用]
最低受支持的服务器 Windows Server 2003 [桌面应用 | UWP 应用]
目标平台 Windows
标头 winbase.h (包括 Windows.h)
Library Kernel32.lib
DLL Kernel32.dll

另请参阅

全局和本地函数

GlobalAlloc

GlobalLock

GlobalReAlloc

内存管理函数