LocalUnlock函数减少与使用LMEM_MOVEABLE标志分配的内存对象关联的锁定计数。此函数对使用LMEM_FIXED标志分配的内存对象没有影响。
BOOL LocalUnlock(
HLOCAL 【HMEM】 | //本地内存对象的句柄 |
); |
参数
【HMEM】
标识本地内存对象。该手柄由LocalAlloc或LocalReAlloc功能返回。
返回值
如果内存对象在递减锁定计数后仍然被锁定,则返回值不为零。
如果函数失败,返回值为零。要获取扩展错误信息,请调用GetLastError.如果GetLastError返回NO_ERROR,则内存对象将被解锁。
备注
每个存储器对象的内部数据结构包括最初为零的锁定计数。对于可移动存储器对象,LocalLock函数将计数递增1,LocalUnlock将计数递减1。对于一个进程对于一个对象的进程的每个调用,它必须最终调用LocalUnlock.锁定的内存不会被移动或丢弃,除非通过使用LocalReAlloc功能重新分配内存对象。锁定的存储器对象的存储块保持锁定,直到其锁定计数递减为零,此时可以移动或丢弃它。
如果内存对象已经解锁,LocalUnlock返回FALSE,GetLastError报告为ERROR_NOT_LOCKED。使用LMEM_FIXED标志分配的内存对象总是具有零的锁定计数,并导致ERROR_NOT_LOCKED错误。
一个进程不应该依赖返回值来确定随后调用内存块的次数LocalUnlock.
也可以看看