Share via


Función LocalUnlock (winbase.h)

Disminuye el número de bloqueos asociado a un objeto de memoria asignado con LMEM_MOVEABLE. Esta función no tiene ningún efecto en los objetos de memoria asignados con LMEM_FIXED.

Nota Las funciones locales tienen mayor sobrecarga y proporcionan menos características que otras funciones de administración de memoria. Las nuevas aplicaciones deben usar las funciones del montón a menos que la documentación indique que se debe usar una función local. Para obtener más información, vea Funciones globales y locales.
 

Sintaxis

BOOL LocalUnlock(
  [in] HLOCAL hMem
);

Parámetros

[in] hMem

Identificador del objeto de memoria local. Este identificador lo devuelve la función LocalAlloc o LocalReAlloc .

Valor devuelto

Si el objeto de memoria sigue bloqueado después de reducir el recuento de bloqueos, el valor devuelto es distinto de cero. Si el objeto de memoria se desbloquea después de reducir el recuento de bloqueos, la función devuelve cero y GetLastError devuelve NO_ERROR.

Si se produce un error en la función, el valor devuelto es cero y GetLastError devuelve un valor distinto de NO_ERROR.

Comentarios

Las estructuras de datos internas de cada objeto de memoria incluyen un recuento de bloqueos que es inicialmente cero. Para los objetos de memoria extraíbles, la función LocalLock incrementa el recuento en uno y LocalUnlock disminuye el recuento en uno. Para cada llamada que realiza un proceso a LocalLock para un objeto, debe llamar finalmente a LocalUnlock. La memoria bloqueada no se moverá ni descartará a menos que el objeto de memoria se reasigna mediante la función LocalReAlloc . El bloque de memoria de un objeto de memoria bloqueado permanece bloqueado hasta que su recuento de bloqueos se reduce a cero, en cuyo momento se puede mover o descartar.

Si el objeto de memoria ya está desbloqueado, LocalUnlock devuelve FALSE y GetLastError notifica ERROR_NOT_LOCKED. Los objetos de memoria asignados con LMEM_FIXED siempre tienen un recuento de bloqueos de cero y provocan el error ERROR_NOT_LOCKED .

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

Requisitos

   
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado winbase.h (incluye Windows.h)
Library Kernel32.lib
Archivo DLL Kernel32.dll

Vea también

Funciones globales y locales

LocalAlloc

LocalFlags

LocalLock

LocalReAlloc

Funciones de administración de memoria