GlobalLock

Функция GlobalLock позволяет зафиксировать объект глобальной памяти и возвращает указатель на начальный байт блока памяти объекта.

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

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

Параметры

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

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

При удачном завершении функция возвращает указатель на начальный байт блока памяти.

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

Описание

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

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

Если блок памяти, соответствующий данному дескриптору, был уничтожен, или, что тоже самое, размер соответствующего блока памяти равен нулю, то функция вернет nil.

Уничтоженные блоки памяти всегда имеют счетчик ссылок равный нулю.

Требования

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

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

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

    © Mystic, 2002