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


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

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

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

Синтаксис

BOOL GlobalUnlock(
  [in] HGLOBAL hMem
);

Параметры

[in] hMem

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

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

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

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

Комментарии

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

Объекты памяти, выделенные GMEM_FIXED всегда имеют нулевое число блокировок. Если указанный блок памяти является фиксированной памятью, эта функция возвращает значение TRUE.

Если объект памяти уже разблокирован, GlobalUnlock возвращает значение FALSE , а GetLastError сообщает ERROR_NOT_LOCKED.

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

Требования

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

См. также

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

GlobalAlloc

GlobalLock

GlobalReAlloc

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