{img1} |
англо русский словарь |
|
Программа начинается с нулевого смещения, а не 100H.
2. Образ программы начинается с директив определения данных
для заголовка драйвера.
3. |
avast edition |
|
|
Программа не содержит директивы ASSUME для стекового
сегмента.
4. Программа не содержит директивы END START.
Листинг 6-1. |
антивирус panda |
|
{img3} |
резервное копирование файлов |
|
Заголовок драйвера, программы СТРАТЕГИЙ и ПРЕРЫВАНИЙ
------------------------------------------------------------------
DRIVER SEGMENT PARA
ASSUME CS:DRIVER,DS:NOTHING,ES:NOTHING
ORG 0
START EQU $ ; Начало драйвера
;
;******* ЗАГОЛОВОК ДРАЙВЕРА *******************************************
;
dw -1,-1 ; Указатель на следующий драйвер
dw ATTRIBUTE ; Слово атрибутов
dw offset STRATEGY ; Точка входа в программу STRATEGY
dw offset INTERRUPT ; Точка входа в программу INTERRUPT
db 8 dup (?) ; Количество устройств/поле имени
;
;******* РЕЗИДЕНТНАЯ ЧАСТЬ ДРАЙВЕРА ***********************************
;
req_ptr dd ? ; Указатель на заголовок запроса
.
.
.
;
;******* ПРОГРАММА СТРАТЕГИИ ******************************************
;
; Сохранить адрес заголовка запроса для программы СТРАТЕГИЙ в REQ_PTR.
; На входе адрес заголовка запроса находится в регистрах ES:BX.
;
STRATEGY PROC FAR
mov cs:word ptr [req_ptr],bx
mov cs:word ptr [req_ptr + 2],bx
ret
STRATEGY ENDP
;
;******* ПРОГРАММА ПРЕРЫВАНИЙ *****************************************
;
; Обработать команду, находящуюся в заголовке запроса. Адрес заголовка
; запроса содержится в REQ_PTR в форме СМЕЩЕНИЕ:СЕГМЕНТ.
;
INTERRUPT PROC FAR
pusha ; Сохранить все регистры
- 6-19 -
lds bx,cs:[req_ptr] ; Получить адрес заголовка запроса
.
.
.
INTERRUPT ENDP
.
.
.
DRIVER ENDS
END
---------------------------------------------------------------------
Заголовок драйвера
Заголовок драйвера -- это блок данных длиной 18 байт, которым
должен начинаться любой драйвер. |
winrar |
|
|
архиватор zip, файловый менеджер, офисные программы, немецко русский словарь, winrar, .
архиватор winrar
|
Драйверы могут также поддерживать дополни-
тельный канал ввода/вывода для управления устройством. Символьные
драйверы могут передавать от 1 до 64 Kбайт за одно обращение к
драйверу. Блоковые драйверы могут передавать данные только по
секторам, т.к. преобразование секторов в записи и обратно выпол-
няет MS-DOS. Как мы вкратце упоминали, блоковые драйверы могут
возвращать информацию об используемом ими в настоящий момент дис-
ке.
Создание драйверов устройств
Создание драйверов в любой операционной системе имеет много
преимуществ перед написанием обычных программ. Драйверы устройств
должны следовать строго определенной структуре, а если структура
понятна, то остальное приложится.
Базовая структура драйвера устройства показана на рис.6-3.
Обязательно должны присутствовать три раздела драйвера -- ЗАГОЛО-
ВОК ДРАЙВЕРА, ПРОГРАММА СТРАТЕГИЙ и ПРОГРАММА ПРЕРЫВАНИЙ. Прог-
рамма ПРЕРЫВАНИЙ это не тоже самое, что программа обработки пре-
рываний, которая может присутствовать в качестве необязательной
части работающего по прерываниям драйвера. На самом деле, прог-
рамма ПРЕРЫВАНИЙ - это точка входа в драйвер для обработки полу-
чаемых от MS-DOS команд.
--------------------------¬
¦ Заголовок драйвера ¦
+-------------------------¦
¦ Область данных драйвера ¦
+-------------------------¦
¦ Программа СТРАТЕГИЙ ¦
+-------------------------¦
¦ Вход в ¦
¦ программу ПРЕРЫВАНИЙ ¦
+-------------------------¦
¦ Обработчик команд ¦
+-------------------------¦
¦ Программа обработки ¦
¦ прерываний ¦
+-------------------------¦
¦ Процедура инициализации ¦
L=========================-
Рисунок 6-3. Структура драйвера в MS-DOS
- 6-18 -
В программе 6-1 представлен скелет драйвера устройства. Хотя
структура драйвера похожа на структуру .COM программы, важно от-
метить следующие отличия :
1.
|
|
|