Драйверы устройств в системе Windows


Драйвер виртуального устройства


     Файл vxd2.asm (листинги  6 и 7)  представляет собой исходный  код драйвера фиктивного устройства. Следует отметить, что для того,  чтобы построить этот драйвер, необходимо иметь комплект драйверов  устройств (Device Driver Kit  - DDK) системы  Windows фирмы Microsoft,  т.к. код написан для 32-битового  ассемблера, предусмотренного в  комплекте DDK (MASM5).  Результирующий   модуль  может   быть  скомпонован    только DDK-компоновщиком  LINK386  и  утилитой  послекомпоновочной  обработки ADDHDR.  Кроме  того,  данный  исходный  код ссылается на определенное количество включаемых файлов (include files), которые входят в  состав только комплекта DDK.

     Как  было  указано,  типичный  драйвер  VxD содержит обязательные включаемые файлы, а кроме того он начинается с вызова макроса  Declare _Virtual_Device, который создает блок данных, описывающий  виртуальный драйвер  для  ядра  системы  Windows.  Этот блок данных, фактически, -единственное  обозначение,   экспортируемое  из   драйвера  VxD.   Все остальные точки  входа являются  производными от  данных, содержащихся внутри. Кроме всего прочего,  данный макрос описывает имя  устройства, порядок  его инициализации и его точки входа.  Виртуальный драйвер VxD может обслуживать запросы приложений как в реальном,  так и в защищенном  режимах.  Точки  входа  для такого обслуживания также описываются данным макросом.

_____________________________________________________________________

PAGE ,132

title VxD2B.ASM - Пример драйвера устройства #2b

;EM VxD2B - Пример драйвера устройства #2b

;

;  Copyright 1992, Cherry Hill Software

;  All rights reserved

;

;  SUMMARY (Резюме)

;      Данный   драйвер   имитирует   прерываемое   устройство.   Порт

;      управления (выход) имеет следующее назначение битов:

;

;      Бит 0 -  Начать (Start)  ввод-вывод. Запись  нуля в данный  бит

;               начинает  пересылку  ввода-вывода.  Пересылка   длится

;               около  1/10  секунды.  Запись  единицы в этот  бит  не




- Начало -  - Назад -  - Вперед -