Page 81 - 4989
P. 81
надає його функціональний інтерфейс. Цей драйвер
обов'язковий, крім тих випадків, коли введення-виведення
здійснюється драйвером шини або драйвером фільтрів
шини. Функціональний драйвер за визначенням має
найбільш повну інформацію про свій пристрій. Зазвичай
тільки цей драйвер має доступ до специфічних регістрів
пристрою;
- драйвер-фільтр - драйвер, що підтримує додаткову
функціональність пристрою (або існуючого драйвера) або
змінює запити вводу / виводу і відповіді на них від інших
драйверів. Таких драйверів може бути кілька, хоча їх
присутність необов'язкова. Вони можуть працювати як на
більш високому рівні, ніж функціональний драйвер або
драйвер шини, так і на більш низькому.
У середовищі WDM один драйвер не може контролювати всі
аспекти пристро: драйвер шини інформує диспетчер PnP про
пристрої, підключених до шини, в той час як функціональний
драйвер управляє пристроєм.
Згідно перерахованим вище типам драйверів, існує три типи
об'єктів:
- об'єкти фізичних пристроїв (PDO, Physical Device Object) -
ці об'єкти створюються для кожного фізично
ідентифікованого елемента апаратури, підключеного до
шини даних;
- об'єкти функціональних пристроїв (FDO, Functional Device
Object) - має на увазі одиницю логічної функціональності
пристрою;
- об'єкти фільтрів пристроїв (FiDO, Filter Device Object) -
надають додаткову функціональність.
Послідовність завантаження драйверів пристроїв:
1. Під час завантаження операційної системи проводиться
завантаження шинних драйверів для кожної відомої системі
шини (список шин створюється при установці операційної
системи і зберігається в реєстрі);
2. Викликається DriverEntry, а потім AddDevice для кожного
шинного драйвера. У AddDevice створюється FDO для драйвера
системної шини. Потім на створений FDO відправляється запит
IRP_MN_START_DEVICE;
81