Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лк-28,29.doc
Скачиваний:
1
Добавлен:
30.07.2019
Размер:
66.05 Кб
Скачать

Гомельский государственный аграрно-экономический колледж Занятие № 28-29 «Архитектура драйвера. Команды драйвера. Функции драйверов»

По дисциплине «Системное программирование»

Создание драйвера устройства.

Драйвер устройства это специальная программа, которая управляет обменом с периферийным устройством, таким как принтер или дисковый накопитель. После установки драйвер становится частью ОС. Устанавливаемые драйверы устройств целесообразно писать на языке ассемблера. Они могут обслуживать два типа устройств: СИМВОЛЬНЫЕ и БЛОЧНЫЕ. Эти имена описывают единицы, которыми устройство обрабатывает данные. Обычно драйверы блочных устройств обслуживают дисковые накопители, а драйверы символьных - все остальное, начиная от последовательных принтеров и кончая роботами.

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

Символьные драйверы могут работать в ПОДГОТОВЛЕННОМ и НЕПОДГОТОВЛЕННОМ режимах; режимы отличаются способностью драйвера "помнить" некоторые особенности обработанных ранее байт.

Программа драйвера устройства разбивается на три части:

– заголовок драйвера, который именует устройство и содержит информацию об остальных частях драйвера;

– стратегия драйвера, которая хранит информацию об области данных, создаваемой MS DOS, которая называетя ОБЛАСТЬЮ ЗАПРОСА;

– обработчик прерывания устройства, который и содержит код, управляющий устройством.

Создание заголовка драйвера

Драйверы устройств должны создаваться в виде COM файлов и иметь длину не более 64 Кбайт. При их загрузке не создается префикс программного сегмента. При написании драйвера указывается ORG 0, либо вообще ничего. Драйвер должен быть описан как далекая (far) процедура.

Драйвер устройства должен начинаться с заголовка драйвера. Он имеет длину 18 байтов, разделенных на 5 полей:

– ПЕРВОЕ ПОЛЕ (DD) всегда содержит значение -1 (FFFFFFFFh), и когда MS DOS загружает драйвер, то оно заменяется на стартовый адрес следующего драйвера. Таким образом, система может искать следующий драйвер по цепочке. У последнего загруженного драйвера в этом поле остается значение -1.

– ВТОРОЕ ПОЛЕ (DW) это область атрибутов драйвера. Назначение некоторых битов этого слова:

15 =1 символьное устройство, =0 блочное устройство;

14 =1 поддерживает IOCTL (управляющие последовательности контроля ввода/вывода), 0 = не поддерживает IOCTL;

13 (если бит 15 = 0) =0 формат IBM =1 формат, отличный от IBM (если бит 15 = 1), =0 не поддерживается режим вывода до сигнала занятости;

11 =0 использовать только вызовы DOS 2.x, =1 для DOS 3.x поддерживаются вызовы, связанные с открытием/закрытием устройства и перемещаемой средой;

3 =1 часы;

2 =1 нулевое устройство;

1 =1 устройство стандартного вывода;

0 =1 устройство стандартного ввода.

– ТРЕТЬЕ и ЧЕТВЕРТОЕ (DW) поля содержат смещения для процедур реализации стратегии и обработки прерывания.

– ПЯТОЕ поле содержит имя устройства. Имя содержит 8 символов и оно должно быть выравнено по левому краю с завершающими пробелами.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]