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


Функция 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]
целевая платформа Виндоус
заголовка winbase.h (включая Windows.h)
библиотеки Kernel32.lib
DLL Kernel32.dll

См. также

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

GlobalAlloc

GlobalLock

GlobalReAlloc

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