у-виводу (I/O control code), який будується за певними правилами. p align="justify"> Використовуючи описувач пристрої, диспетчер вводу-виводу витягне відомості про обслуговуючий його драйвері, сформує пакет запиту вводу-виводу типу IRP_MJ_DEVICE_CONTROL і направить його драйверу. У драйвері буде викликана відповідна процедура DispatchControl, якій в якості параметрів передаються код дії та відомості про адреси та розмірах вхідного і вихідного буфера. Все це передається через IRP. У процедурі з IRP береться необхідна інформація: код дії, адреса буфера для передачі даних. p align="justify"> Процедура DispatchControl виконує необхідні дії, у нашому випадку адреса пакета IRP з регістра ESI Потім передає результат через вихідний буфер в додаток.
Аналогічно попередній процедурі, передаємо через IRP статус завершення і кількість переданих з драйвера байтів.
У додатку ці дані форматуються і виводяться.
) Закриття. Як і годиться чинити з дескрипторами, які більше не потрібні, викликом функції CloseHandle, закриваємо описувач пристрою. p align="justify">) Вивантаження драйвера. Видаляємо символьне посилання і видаляємо об'єкт пристрою. p align="justify"> Комплекс (2) складається з двох програм:
додаток, який звертається до драйвера за адресою IRP, а потім цю адресу виводить в стандартне вікно Windows.
shablon.sys - драйвер.
Драйвер shablon виконує те, що не можна зробити на рівні користувача, в даному випадку визначає вміст регістра esi при роботі драйвера.
Додаток у вихідному буфері отримує вміст esi, перетворює його для висновку в шістнадцятковому вигляді і виводить в стандартне вікно Windows.
Якщо необхідно в драйвері отримати інформацію з CMOS, то потрібне:
послати в порт 70h зміщення у CMOS, яке нас цікавить;
невелика затримка;
взяти з порту 71h інформацію в al.
Потім записати цю інформацію у вихідний буфер.
А в додатку необхідно взяти інформацію з вихідного буфера, при необхідності, перетворити її і вивести, або проаналізувати і залежно від результату вивести в стандартне вікно необхідний текст.
У цій лабораторній роботі передбачається, що драйвер встановлюється постійно в Windows за допомогою. inf-файлу, використовуючи з Панелі управління пункт - Установка устаткування: Додавання нового пристрою, Установка вручну, Показати всі пристрої, Встановити з диска , за допомогою огляду вибрати файл. inf (драйвер повинен бути в тій же папці).
Щоб перевірити, що драйвер встановлений, вибираємо в панелі управління Система, Обладнання, Диспетчер пристроїв.
1.3 Доступ до існуючих драйверам з додатків режиму користувача