Переписать драйвер по заданному ТЗ
Драйвер-приемник
последовательного порта c возможностью установки скорости передачи,
взаимодействие с программой по методу DeviceIoControl и ReadFile.
|
Задача | |
Драйвер-приемник
последовательного порта c возможностью установки скорости передачи,
взаимодействие с программой по методу DeviceIoControl и ReadFile.
На базе примера «portio» WDK (winddk\src\general\portio). Программа в режиме пользователя передает драйверу параметры работы порта при помощи API DeviceIoControl. Драйвер получает запрос (обработчик EvtIoDeviceControl) и устанавливает параметры порта. Программа пользователя считывает байт данных при помощи API ReadFile. Драйвер получает запрос (обработчик EvtIoRead) и считывает регистр приемника, флаг наличия принятых данных. В случае наличия данных запрос завершается с количеством считанных байт = 1, байт данных при этом записывается в поле дынных запроса. В случае отсутствия принятых данных, запрос завершается с количеством считанных байт = 0. Запись/чтение из портов ввода-вывода можно реализовать при помощи ассемблерных вставок и команд in/out. Чтобы организовать взаимодействие с пользовательской программой, понадобится выделить IOCTL-код (см. GpIoctl.h) и добавить соответствующую обработку IOCTL-кода в обработчик EvtIoDeviceControl. Из пользовательской программы передача запроса осуществляется при помощи API DeviceIoControl с тем же IOCTL-кодом. Исходные коды драйвера расположены в каталоге «sys», коды программы режима пользователя – в каталоге «gpdwrite». Для отладки драйвера в виртуальной среде VirtualBox необходимо включить эмуляцию порта. Данные порта можно перенаправить в файл или воспользоваться программой эмуляции портов VSPE в хост-системе. В последнем случае потребуется создать структуру типа «мост», перенаправить вывод VirtualBox в первый порт, а ко второму подключить стандартную программу-терминал (например, стандартный HyperTerminal Windows). образ для виртуальной машины готов предоставить, на ней так же есть весь необходимый инструментарий Так же к работе требуется отчет с пошаговым описанием выполненной работы, приложенными скриншотами подтверждающими работоспособность написанного драйвера, а так же сам драйвер |