TURBO PASCAL

Новости

Программы   

Turbo Pascal 

Игры

Документация   

Странности

FAQ

Ссылки

Форум

Гостевая книга

Рассылка

Благодарности

Об авторе

 

 

9.2. МОДУЛЬ WINAPI

Расширитель RTM с помощью средств модуля WinAPI реализует '.од множество интерфейса Windows для прикладных программ. Это означает, что некоторые возможности, используемые Windows— программами, становятся доступными также программе в защищенном режиме. Прежде всего это касается так называемых динамически подключаемых библиотек DLL (Dynamic—Link Library]. DLL—библиотеки подобно TPU— файлам хранят откомпилированные и готовые к использованию подпрограммы, но в отличие от модулей Турбо Паскаля они не связываются компоновщиком с телом программы, а существуют в виде отдельных дисковых файлов. При обращении к той или иной подпрограмме DLL расширитель проверяет ее наличие в оперативной памяти и при необходимости считывает библиотеку с диска. Отработавшая библиотека может удаляться из оперативной памяти, чтобы освободить место другой библиотеке или загружаемому с диска сегменту. Интерфейс взаимодействия программы с библиотекой в точности соответствует принятому в Windows, что, с одной стороны, открывает программе доступ к уже существующим в Windows библиотекам, а с другой стороны, позволяет программисту готовить собственные DLL— библиотеки для использования в защищенном режиме и/или в Windows (техника создания DLL — библиотек обсуждается в п.9.3).

Другой особенностью модуля WinAPI является включение в него Windows— средств работы с ресурсами. • Ресурсы — это специальным образом откомпилированные двоичные файлы, которые содержат данные и которые на этапе компоновки пристыковываются к исполняемому файлу программы. Обычно в ресурсах хранятся различного рода изображения (пиктограммы, курсоры, рисунки и т.п.), используемые Windows— программой для создания графического экрана. При работе в защищенном режиме программе недоступны мощные графические возможности Windows и поэтому нет смысла хранить в ресурсах графические образы. В связи с этим в WinAPI включены ограниченные средства доступа к ресурсам: с их помощью можно получить только строковые ресурсы и ресурсы, определяемым пользователем.

Многие из рассматриваемых ниже подпрограмм используют так называемый экземпляр программы — специальный дескриптор (Instance), связанный с текущей программой. Необходимость в этом дескрипторе вытекает из многозадачности Windows, под управлением которой одновременно может выполняться несколько программ, в том числе — несколько копий одной и той же программы. Экземпляр программы определяет, является ли данная программа единственной или в оперативной памяти существуют ее копии. В последнем случае Windows не загружает в память сегменты кода программы, а предоставляет копии только новые сегменты данных. Кроме того, копии используют ресурсы первого экземпляра в режиме разделяемой библиотеки. При работе в защищенном

режиме расширитель 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

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


 

 

Управление модулями

FreeLibrary

Освобождает динамическую библиотеку

GetModuleFileName

Возвращает маршрут поиска и полное имя выполняемого файла

 

загруженной программы (модуля)

GetModuleHandle

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

GetModuleUsage

Возвращает счетчик вызовов модуля

GetProcAddress

Возвращает точку входа в процедуру модуля

LoadLibrary

Загружает ML—библиотеку

 

Управление ресурсами

AccessResource

Открывает доступ к ресурсу

FindResource

Ищет ресурс

FreeResource

Освобождает ресурс

LoadResource

Загружает ресурс пользователя

LoadString

Загружает строковый ресурс

LockResource

Фиксирует ресурс

SizeOfResource

Возвращает размер ресурса

 

Функции разного назначения

DOS3Call

Реализует доступ к прерыванию ДОС

FatalExit

Посылает состояние программы отладчику (используется в отла

 

дочном режиме)

GetDosEnvironment

Передает программе переменные окружения ДОС

GetWinFlags

Возвращает конфигурацию памяти

MessageBox

Выводит текстовое сообщение и ждет выбора пользователем

 

одного из вариантов продолжения


 

Глава 9

Оглавление 

На первую страницу

Rambler's Top100 Rambler's Top100
PROext: Top 1000

(с)Все права защищены

По всем интересующим вопросам прошу писать на электронный адрес

Hosted by uCoz