GlobalUnlock
The GlobalUnlock
function decrements the lock count associated with a memory object that was
allocated with the GMEM_MOVEABLE flag. This function has no effect on memory
objects allocated with the GMEM_FIXED flag.
BOOL GlobalUnlock(
|
HGLOBAL hMem |
// handle to the
global memory object |
|
); |
|
Parameters
hMem
Identifies
the global memory object. This handle is returned by either the GlobalAlloc or GlobalReAlloc function.
Return Values
If the memory
object is still locked after decrementing the lock count, the return value is a
nonzero value.
If the
function fails, the return value is zero. To get extended error information,
call GetLastError.
If GetLastError returns NO_ERROR, the memory object is unlocked.
Remarks
The internal
data structures for each memory object include a lock count that is initially
zero. For movable memory objects, the GlobalLock function increments the
count by one, and GlobalUnlock decrements the count by one. For each
call that a process makes to GlobalLock for an object, it must
eventually call GlobalUnlock. Locked memory will not be moved or
discarded, unless the memory object is reallocated by using the GlobalReAlloc function. The memory block
of a locked memory object remains locked until its lock count is decremented to
zero, at which time it can be moved or discarded.
Memory
objects allocated with the GMEM_FIXED flag always have a lock count of zero. If
the specified memory block is fixed memory, this function returns TRUE.
If the memory
object is already unlocked, GlobalUnlock returns FALSE and GetLastError reports ERROR_NOT_LOCKED.
Memory objects allocated with the LMEM_FIXED flag always have a lock count of
zero and cause the ERROR_NOT_LOCKED error.
A process
should not rely on the return value to determine the number of times it must
subsequently call GlobalUnlock for a memory object.
See Also