GlobalUnlock

Функция GlobalUnlock уменьшает счетчик блокировок указанного объекта глобальной памяти на единицу. Указанный объект должен быть выделен с указаним флага GMEM_MOVEABLE. Если указанный объект был выделен с указанным флагом GMEM_FIXED, то функция ничего не выполняет.

Примечание: глобальные и локальные функции работают медленнее, чем остальные функции менеджера памяти. Поэтому новые приложения должны использовать функции по работе с кучей. Тем не менее, глобальные функции все еще используются при работе с DDE и областью обмена.

function GlobalUnlock(
  hMem: HGLOBAL         // дескриптор объекта глобальной памяти
): BOOL; stdcall;

Параметры

hMem [in]
Дескриптор объекта глобальной памяти, для которого будет произведено уменьшение количества блокировок. Должен быть получен путем вызова функций GlobalAlloc или GlobalReAlloc.

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

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

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

Описание

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

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

Если объект глобальной памяти является разблокированным, то функция GlobalUnlock вернет False, а следующий за ней вызов GetLestError вернет ERROR_NOT_LOCKED.

Требования

Windows NT/2000: Требуется Windows NT 3.1 или более поздняя версия
Windows 95/98: Требуется Windows 95 или более поздняя версия
Бибиотека: Kernel32.dll
Подключаемый модуль: Windows

Смотри также:

  • управление памятью,
  • работа с кучей,
  • функции для работы с кучей,
  • глобальные и лоальные функции,
  • GlobalAlloc,
  • GlobalLock,
  • GlobalReAlloc
  • НазадGlobalUnfix GlobalUnWireВперед

    © Mystic, 2002