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 |
Устанавливает новый предел селектора |