Поделиться через


Функция LocalUnlock (winbase.h)

Уменьшает количество блокировок, связанных с объектом памяти, выделенным LMEM_MOVEABLE. Эта функция не влияет на объекты памяти, выделенные с помощью LMEM_FIXED.

Примечание Локальные функции имеют большую нагрузку и предоставляют меньше возможностей, чем другие функции управления памятью. Новые приложения должны использовать функции кучи , если в документации не указано, что следует использовать локальную функцию. Дополнительные сведения см. в разделе Глобальные и локальные функции.
 

Синтаксис

BOOL LocalUnlock(
  [in] HLOCAL hMem
);

Параметры

[in] hMem

Дескриптор объекта локальной памяти. Этот дескриптор возвращается функцией LocalAlloc или LocalReAlloc .

Возвращаемое значение

Если объект памяти по-прежнему заблокирован после уменьшения числа блокировок, возвращаемое значение не равно нулю. Если объект памяти разблокирован после уменьшения числа блокировок, функция возвращает ноль, а GetLastError возвращает NO_ERROR.

Если функция завершается ошибкой, возвращаемое значение равно нулю, а GetLastError возвращает значение, отличное от NO_ERROR.

Комментарии

Внутренние структуры данных для каждого объекта памяти включают число блокировок, изначально равное нулю. Для перемещаемых объектов памяти функция LocalLock увеличивает число на единицу, а LocalUnlock уменьшает число на единицу. Для каждого вызова, который процесс выполняет в LocalLock для объекта, он должен в конечном итоге вызывать LocalUnlock. Заблокированная память не будет перемещена или удалена, если объект памяти не будет перераспределен с помощью функции LocalReAlloc . Блок памяти заблокированного объекта памяти остается заблокированным до тех пор, пока его число блокировок не уменьшится до нуля, после чего его можно переместить или отменить.

Если объект памяти уже разблокирован, LocalUnlock возвращает значение FALSE , а GetLastError сообщает ERROR_NOT_LOCKED. Объекты памяти, выделенные LMEM_FIXED всегда имеют нулевое число блокировок и вызывают ошибку ERROR_NOT_LOCKED .

Процесс не должен полагаться на возвращаемое значение для определения числа последующих вызовов LocalUnlock для блока памяти.

Требования

   
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header winbase.h (включая Windows.h)
Библиотека Kernel32.lib
DLL Kernel32.dll

См. также

Глобальные и локальные функции

LocalAlloc

Локальные флаги

LocalLock

LocalReAlloc

Функции управления памятью