Драйвер жесткого диска

Страница: 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