|
|
|
|
О примере приложения
Пример приложения состоит из двух программ: SNAPSHOT.C и
PLAYBACK.C. SNAPSHOT.C - программа, остающаяся в памяти резидентно после завершения, которая сохраняет образы текстовых экранов в
расширенной памяти путем перехвата прерывания печати экрана
(int 5). Данное прерывание выдается всякий раз, когда нажимается
клавиша PrtScr или Print Screen. SNAPSHOT также строит индексную
структуру данных в расширенной памяти, которая содержит номер логической страницы и смещение в байтах для каждого образа экрана,
сохраненного в расширенной памяти. PLAYBACK просто считывает индексную структуру данных, копируя каждый из текстовых экранов из
расширенной памяти в стандартный выходной файл DOS. На рис. 7-4
показано использование расширенной памяти для установления связи
между двумя независимыми программами.
Для того чтобы продемонстрировать некоторые из более сложных
идей расширенной памяти, которые были представлены в данной главе, данное приложение с необходимостью является более сложным,
чем мог бы ожидать программист среднего уровня от первого проекта
приложения расширенной памяти. Разработчики, которые незнакомы с
программами, остающимися резидентными по завершении, и программированием драйверов прерываний в среде DOS, могут ощущать особенно
значительные трудности, воспринимая большую часть кода
SNAPSHOT.C, которая требуется для установки, управления и завершения самой программы.
В то же время в программе SNAPSHOT - не только доля усложнений, связанных с DOS, использование переключения контекста и новых функций спецификации
расширенной памяти LIM 4.0 предлагает
ценный пример для изучения идей спецификации расширенной памяти,
которые не всегда демонстрируются в руководствах по программированию спецификации расширенной памяти. Ключевые средства спецификации расширенной
памяти, использованные в SNAPSHOT, включают в
себя:
* Разделение расширенной памяти между программами с помощью
средства "Именования обработчика" (функция 20 спецификации расширенной памяти).
* Переключение контекста с помощью "Получить/установить
отображение страниц" (функция 15 спецификации расширенной памяти).
* Перемещения блоков данных между обычной и расширенной памятью с помощью функции "Передвинуть/обменять область памяти"
(функция 18 спецификации расширенной памяти).
* Динамическое добавление логических страниц к ранее размещенным для обработчика спецификации расширенной памяти с помощью
функции переразмещения страниц (функция 18 спецификации расширенной памяти).
Примечание: Для выполнения этих программ Ваш менеджер расширенной памяти должен поддерживать спецификацию расширенной памяти
LIM 4.0.
|
|