Тема: разработка драйвера периферийного устройства с использованием функций обработки IRP-пакетов диспетчера ввода/вывода
Цель работы: ознакомиться с принципами работы подсистемы ввода/вывода Windows, структурой драйвера обрабатывающего IRP пакеты диспетчера ввода/вывода.
Задание:
1. Разработать драйвер, который позволяет выполнять чтение и запись данных в параллельный порт. За основу возьмите исходный кода драйвера DriverLPT.bat (файл доступен для загрузки с сайта дистанционного обучения), изучите его структуру. Так же изучите содержимое файла common.inc (листинг 1) (файл доступен для загрузки с сайта дистанционного обучения).
1.1. Дополните процедуру DriverEntry.
1.2. В процедуре DriverUnload необходимо организовать очистку занятых драйвером ресурсов в процедуре DriverEntry. Для этого самостоятельно дополните код этой процедуры, обеспечив удаление символьной ссылки на устройство с помощью вызова функции IoDeleteSymbolicLink и удаление устройства с помощью вызова функции IoDeleteDevice.
1.3. Дополните процедуру DispatchCreateClose.
1.4. Дополните процедуру DispatchControl.
Откомпилируйте драйвер, для чего запустите на выполнение файл DriverLPT.bat.
2. Разработать программу, которая будет регистрировать драйвер в системе, выполнять чтение/запись данных из/в порт(а), а также осуществлять корректное удаление драйвера из системы. Для этого за основу возьмите исходный код программы LPTProgram.asm (Листинг 2, рисунок 1, рисунок 2) (файл доступен для загрузки с сайта дистанционного обучения) изучите его структуру. Последовательность действий, которую необходимо реализовать в процедуре start: 1) установить соединение с SC; 2) зарегистрировать; 3) запустить; 4) открыть файл и получить дескриптор; 5) провести обмен данными с устройством; 6) закрыть устройство; 7) остановить сервис; 8) удалить сервис; 9) закрыть дескриптор сервиса; 10) закрыть соединение с SC.
Откомпилируйте программу, выполнив в командной строке из каталога, в котором находится исходный файл программы следующие команды:
c:\masm32\bin\ml /c /coff -I"C:\masm32\include" LPTProgram.asm
c:\masm32\bin\link /entry:start /subsystem:windows LPTProgram.obj /libpath:"C:\masm32\lib\" /out:LPTProgram.exe
СПИСОК ЛИТЕРАТУРЫ
1. Юров В.И. Ассемблер: Учебник для вузов. 2-е изд. – СПб.: Питер, 2011. –
640с.
2. Кутузов М.А., Преображенский А. Выбор и модернизация компьютера. 4-е
изд. – СПб.: Питер, 2005. – 320с.
3. Мюллер С., Зекер К. Модернизация и ремонт ПК. 10-е изд.: Пер. с англ. – К.;
М.; СПб.: Вильямс, 1999 . – 992с.
4. Томпсон Р.Б., Томпсон Б.Ф. Железо ПК: Энциклопедия. 3-е изд. – СПб.: Питер, 2004. – 956с.
5. Хамахер К., Вранешич З., Заки С. Организация ЭВМ. 5-е изд. – СПб.: Питер,
2003. – 848с.
6. Цилькер Б.Я., Орлов С.А. Организация ЭВМ и систем: Учебник для вузов. –
СПб.: Питер, 2007. – 672с.
7. Таненбаум Э. Архитектура компьютера. 5-е изд. – СПб.: Питер, 2007. – 844с.