winbase.h


LocalUnlock

La función LocalUnlock decrementa el contador de bloqueos asociado con un objeto de que haya sido reservado con la bandera LMEM_MOVEABLE. Esta función no tiene efecto en objetos de memoria reservadors con la bandera LMEM_FIXED.

Sintaxis

BOOL LocalUnlock(
    HLOCAL hMem  // manipulador de objeto de memoria local
   );

Parámetros

hMem: identifica el objeto de memoria local. Este manipulador es devuelto por las funciones LocalAlloc o LocalReAlloc.

Valor de retorno

Si el objeto de memoria sigue estando bloqueado después de decrementar el contador de bloqueos, el valor de retorno es distinto de cero.

Si la función falla, el valor de retorno es cero. Para obtener información más detallada sobre el error, llamar a la función GetLastError. Si GetLastError devuelve NO_ERROR, el objeto de memoria estará desbloqueado.

Observaciones

Las estructuras de datos internas para cada objeto de memoria incluyen un contador de bloqueos que inicialmente vale cero. Para objetos de memoria móviles, la función LocalLock incrementa este contador en una unidad, y LocalUnlock lo decrementa, también en uno. Para cada llamada que un procesa haga a LocalLock para un objeto, también debe hacer una llamada a LocalUnlock. La memoria bloqueada no puede ser movida o descartada a no ser que el objeto de memoria sea reubicado usando la función LocalReAlloc. El bloque de memoria de un objeto de memoria bloqueado permanece bloqueado hasta que su contador de bloqueos sea decrementado a cero, en ese momento puede ser movido o descartado.

Si el objeto de memoria ya está desbloqueado, LocalUnlock devuelve FALSE y GetLastError indica ERROR_NOT_LOCKED. Los objetos de memoria reservados con la bandera LMEM_FIXED siempre tienen un contador de bloqueos cero y producen el error ERROR_NOT_LOCKED.

Un proceso no debe basarse en el valor de retorno para determinar el número de veces que debe llamar a LocalUnlock para el bloque de memoria.