Page 80 - 4989
P. 80
- звертання до пам’яті обмежується виділеним операційною
системою простором (звертання до пам’яті іншого процесу
неможливе).
Якщо програма користувача все ж має потребу звернутися до
апаратного забезпечення (така потреба в дійсності виникає
постійно, наприклад, для читання даних з файла необхідно
звернутись до жорсткого диску, а при виводі графічної чи
текстової інформації, очевидно, задіяний монітор), вона викликає
необхідний для цього сервіс операційної системи, який, у свою
чергу, виконується в режимі ядра. У тексті програми користувача
це виглядає як виклик деякої функції Windows API. Це може бути
функція створення, читання або запису файла або функція
DeviceIOControl, що дозволяє надіслати довільну команду до
пристрою. Результатом роботи цих функцій є надсилання
диспетчеру вводу-виводу деякого коду IOCTL, на основі якого
він формує пакет IRP (I/O request packet). У самому драйвері
повинні бути визначені функції, що реагують на певний тип
запиту в IRP-пакеті. IRP є структурами даних змінної довжини і
складаються з стандартного заголовка, що містить загальну
облікову інформацію, і одного або декількох блоків параметрів,
які називають комірками стеку вводу/виводу (I/O Stack Location).
Основне призначення комірок стеку вводу/виводу - зберігати
функціональний код і параметри запиту вводу/виводу. Для
запиту, який адресований драйверу самого нижнього рівня,
відповідний IRP-пакет має тільки одну комірку стека. Для запиту,
який посланий драйверу верхнього рівня, диспетчер вводу/виводу
створює пакет IRP з декількома стековими комірками - по одній
для кожного FDO.
8.3.2 Види драйверів Windows
WDM (Windows Driver Model) - модель архітектури
драйверів, запропонована Microsoft для ОС Windows. З точки
зору WDM, існує три типи драйверів:
- драйвер шини - драйвер, що обслуговує контролер шини,
адаптер, міст або будь-які інші пристрої, що мають дочірні
пристрої. Для кожного типу шини в операційній системі є
свій драйвер;
- функціональний драйвер - основний драйвер пристрою, що
80