Страница: 6/17
Приведем таблицу возможных кодов ошибок:
Код |
Описание |
0 |
Нарушение защиты от записи. Была предпринята попытка записи информации на защищенное от записи устройство. |
1 |
Неизвестное устройство. |
2 |
Устройство не готово. |
3 |
Неизвестная команда. Затребованная команда не поддерживается драйвером. |
4 |
Ошибка CRC. При выполнении команды обнаружена ошибка циклического кода проверки. |
5 |
Неправильная длина запроса. Поле длины в заголовке запроса содержит неверное значение. |
6 |
Ошибка при поиске дорожки (дорожка не найдена). |
7 |
Неизвестный носитель данных. |
8 |
Сектор не найден. |
9 |
Нет бумаги в принтере. |
0Ah |
Ошибка записи. |
0Bh |
Ошибка чтения. |
0Ch |
Общая ошибка. |
0Dh |
Зарезервировано. |
0Eh |
Зарезервировано. |
0Fh |
Неразрешенная замена диска (только для DOS версии 3.0 и более поздних версий). |
Общая схема действий программы прерывания драйвера такова:
получив управление от операционной системы, программа прерывания сохраняет содержимое всех регистров процессора и считывает номер команды из заголовка запроса;
при необходимости программа считывает дополнительную информацию из области запроса;
затребованная команда выполняется (если она поддерживается драйвером);
если драйвер считывает какие-либо данные от обслуживаемого физического устройства для передачи их DOS, то сами данные или их адреса программа прерывания записывает в область запроса;
программа прерывания устанавливает слово состояния устройства в соответствии с результатами выполнения команды (если драйвер не поддерживает затребованную команду, в слове состояния устройства устанавливаются биты 15 и в биты 0-7 записывается код ошибки 3 - неизвестная команда);
восстанавливается содержимое регистров процессора, и управление возвращается операционной системе с помощью команды возврата из дальней процедуры.
Инициализация драйвера
Эта функция выполняется только один раз при загрузке драйвера и подключении его к операционной системе.
Функция инициализации должна поддерживаться любым драйвером, так как она сообщает операционной системе сведения, необходимые DOS для правильного подключения и использования драйвера.
Приведем формат запроса для команды инициализации:
(0) 13 |
header |
Заголовок запроса. |
(+13) 1 |
n_units |
Количество устройств, обслуживаемых драйвером. Это поле заполняется только блочным драйвером. |
(+14) 4 |
end_addr |
Конечный FAR-адрес резидентной части кода драйвера. В это поле драйвер записывает адрес байта памяти, следующего за той частью кода драйвера, которая должна стать резидентной. |
(+18) 4 |
parm |
FAR-адрес строки параметров инициализации драйвера из файла CONFIG.SYS. Эта строка содержит все, что находится в строке файла после команды 'DEVICE=', она заканчивается символами перевода строки и возврата каретки 0Ah, 0Dh. При возврате драйвер блочного устройства должен записать в это поле адрес массива указателей на блоки параметров BIOSBIOS (BPB), по одному указателю на каждое устройство, обслуживаемое драйвером. |
(+22) 1 |
drive |
Номер устройства. Для версии DOS 3.0 и более поздних версий в это поле при загрузке драйвера операционная система заносит номер, назначенный устройству, обслуживаемому драйвером. Например, для устройства А: это 0, для B: - 1 и т.д. |
Реферат опубликован: 19/01/2009