На главную
Подписка
Новости










Главная / MS-DOS / MS-DOS. РУКОВОДСТВО РАЗРАБОТЧИКА / Глава 7 / Обнаружение наличия менеджера расширенной памяти Сделать домашней страницей Добавить в избранное Написать писмо

НАЗАД СОДЕРЖАНИЕ ВПЕРЁД

Обнаружение наличия менеджера расширенной памяти

Драйверам устройств, которые загружаются до того, как DOS полностью инициализирована, не полагается выдавать вызовы файловой системы DOS. Большинство вызовов DOS также являются неразрешенными для резидентных программ, которые не обрабатывают специальным образом проблему отсутствия повторного входа DOS. Таким образом, метод открытого обработчика, представленный ранее в данной главе, не является подходящим средством для этих программ, чтобы выявлять наличие расширенной памяти.


Альтернативный метод, который может применяться любой программой - метод получения вектора прерывания. Данный метод работает следующим образом:


1. Выдается функция DOS "Получить вектор" (прерывание 21h, функция 35h) для получения адреса программного прерывания менеджера расширенной памяти (67h).


2. Менеджер расширенной памяти находится внутри драйвера символьного устройства DOS, у которого заголовок устройства находится по нулевому смещению в сегменте, возвращаемом в регистре ES, предыдущим шагом. У всех драйверов символьных устройств есть 8-символьное поле имени устройства, размещающееся по смещению 0Ah в заголовке устройства, которое DOS использует для указания устройства, когда вызовы файловой системы ссылаются на него. Сравни- те имя устройства по смещению 0Ah в сегменте, возвращенном в регистре ES на шаге 1, со строкой "EMMXXXX0." (Вспомните, что на это имя устройства была ссылка на вызове открытия, использованном как часть метода открытого обработчика.) Если строки совпадают, менеджер расширенной памяти присутствует.


НАЗАД СОДЕРЖАНИЕ ВПЕРЁД

Hosted by uCoz