Функция GlobalLock (winbase.h)
Блокирует глобальный объект памяти и возвращает указатель на первый байт блока памяти объекта.
Синтаксис
LPVOID GlobalLock(
[in] HGLOBAL hMem
);
Параметры
[in] hMem
Дескриптор объекта глобальной памяти. Этот дескриптор возвращается функцией GlobalAlloc или GlobalReAlloc .
Возвращаемое значение
Если функция выполняется успешно, возвращаемое значение является указателем на первый байт блока памяти.
Если функция завершается сбоем, возвращается значение NULL. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.
Комментарии
Внутренние структуры данных для каждого объекта памяти включают число блокировок, изначально равное нулю. Для перемещаемых объектов памяти GlobalLock увеличивает число на единицу, а функция GlobalUnlock уменьшает число на единицу. Каждый успешный вызов, выполняемый процессом в GlobalLock для объекта, должен соответствовать соответствующему вызову GlobalUnlock. Заблокированная память не будет перемещена или удалена, если только объект памяти не перераспределяется с помощью функции GlobalReAlloc . Блок памяти заблокированного объекта памяти остается заблокированным до тех пор, пока его число блокировок не будет уменьшено до нуля, после чего его можно переместить или отменить.
Объекты памяти, выделенные GMEM_FIXED всегда имеют нулевое число блокировок. Для этих объектов значение возвращаемого указателя равно значению указанного дескриптора.
Если указанный блок памяти был удален или блок памяти имеет нулевой размер, эта функция возвращает значение NULL.
Число блокировок для отброшенных объектов всегда равно нулю.
Требования
Минимальная версия клиента | Windows XP [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2003 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | winbase.h (включая Windows.h) |
Библиотека | Kernel32.lib |
DLL | Kernel32.dll |