Операционная система Microsoft Windows 3.1 для программиста -том 3


Фиксирование и расфиксирование блока памяти


Для получения доступа к полученному блоку памяти его необходимо зафиксировать, вызвав функцию LocalLock :

void NEAR* WINAPI LocalLock(HLOCAL hloc);

Функция LocalLock фиксирует блок памяти, идентификатор которого передается ей через параметр hloc и возвращает логический адрес зафиксированного блока или NULL, если указанный блок удален или произошла ошибка.

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

Для каждого блока памяти Windows поддерживает счетчик фиксирования. Этот счетчик увеличивается при вызове функции LocalLock и уменьшается при расфиксировании блока функцией LocalUnlock :

BOOL WINAPI LocalUnlock(HLOCAL hloc);

Если содержимое счетчика уменьшилось до нуля, функция возвращает значение FALSE. В противном случае возвращается TRUE.




Начало  Назад  Вперед