212___________________________________________________Глава 9

режиме расширитель RTM создает для программы дескприптор экземпляра и помещает его в переменную hinstance системного модуля System.

И последнее замечание, прежде чем мы перейдем к рассмотрению средств модуля WinAPI. Windows— программа имеет доступ к двум кучам — к локальной и к глобальной. Локальная куча имеет небольшой размер и принадлежит только данному экземпляру программы. Глобальная куча — это вся свободная в данный момент память. В защищенном режиме нет локальной кучи, поэтому модуль WinAPI содержит средства работы только с глобальной кучей (функции GIobaIXXXX).

В следующей таблице перечислены процедуры и функции модуля WinAPI.

Имя

Назначение

Управление памятью

GetFreeSpace

Возвращает общее количество свободной памяти

GlobalAlloc

Резервирует блок памяти

GlobalAllocPtr

Резервирует память и возвращает ее физический адрес

GlobalCompact

Реорганизует память так, чтобы обеспечить непрерывное сво —

бодное пространство заданного размера

GlobalDiscard

Выгружает блок памяти на диск

GlobalDosAlloc

Распределяет память в первом мегабайте

GlobalDosFree

Освобождает память, полученную с помощью CetDosAlloc

GlobalFix

Фиксирует блок памяти

GlobalFlags

Возвращает флаги и счетчик блокировок блока памяти

GlobalFree

Освобождает блок памяти

GlobalFreePtr

Освобождает блок, выделенный с помощь. GlobalAllocPtr

GlobalHandle

Возвращает дескриптор блока памяти по его адресу

GlobalLock

Фиксирует блок памяти, связанный с дескриптором

GlobalLockPtr

Фиксирует блок памяти, связанный с указателем

GlobalLRUNewest

Делает блок выгружаемым в последнюю очередь

GlobalLRUOldest

Делает блок выгружаемым в первую очередь

GlobalNotify

Устанавливает процедуру оповещения программы о выгрузке

блока памяти

GlobalPageLock

Фиксирует страницу памяти

GlobalPtrHandle

Возвращает дескриптор блока по указателю на него

GlobalReAlloc

Перераспределяет блок памяти

GlobalReAllocP-cr

Перераспределяет блок, выделенный с помощью GlobalAllocPtr

GlobalSize

Возвращает размер блока памяти

GlobalUnfix

Исключает блок из линейного адресного пространства и делает его

перемещаемым

GlobalUnlock

Отменяет фиксацию блока, связанного с дескриптором

LockSegment

фиксирует сегмент

UnLockSegment

Разблокирует сегмент

Управление селекторами

AllocDStoCSAlias

Преобразует селектор сегмента данных к селектору кодового

сегмента

AllocSelector

Создает новый селектор

ChangeSelector

Изменяет тип селектора

FreeSelector

Очищает селектор

GetSelectorBase

Возвращает базовый адрес селектора

GetSelectorLimit

Возвращает предел селектора

PrestoChangoSelector

Изменяет тип селектора

SetSelectorBase

Устанавливает новый базовый адрес селектора

SetSelectorLimit

Устанавливает новый предел селектора