Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Агуров П.В. -> "Интерфейсы USB. Практика использования и программирования" -> 63

Интерфейсы USB. Практика использования и программирования - Агуров П.В.

Агуров П.В. Интерфейсы USB. Практика использования и программирования — СПб.: БХВ-Петербург, 2004. — 576 c.
ISBN 5-94157-202-6
Скачать (прямая ссылка): interface2004.djvu
Предыдущая << 1 .. 57 58 59 60 61 62 < 63 > 64 65 66 67 68 69 .. 166 >> Следующая

С точки зрения WDM, существует три типа драйверов:
? драйвер шины (Bus Driver) -- драйвер, обслуживающий контроллер шины, адаптер, мост или любые другие устройства, имеющие дочерние устройства. Драйверы шин нужны для работы системы и, в общем случае, поставляются Microsoft. Для каждого типа шины (PCI, PCMCIA и USB) в системе имеется свой драйвер. Сторонние разработчики создаю і драйверы для поддержки новых шин, например, для VMEbus, Multibus или Fu-uirebus;
? функциональный драйвер (Function Driver) — основной драйвер устройства, предоставляющий его функциональный интерфейс. Обязателен, кроме тех случаев, когда устройство используется 6сі драйверов (г. е. ввод/вывод осуществляется драйвером шины или драйвером филы ров шины). Функциональный драйвер по определению обладает наиболее полной информацией о своем устройстве. Обычно только этот драйвер имеет доступ к специфическим регистрам устройства;
? драйвер фильтра (Filter Driver) — драйвер, поддерживающий дополнительную функциональность устройства (или сущесівующсго драйвера) или изменяющий запросы на ввод/вывод и ответы на них от других драйверов (это часто используется для коррекции устройств, предоставляющих неверную информацию о своих требованиях к аппаратным ресурсам). Такие драйверы необязательны, и их может быть несколько
Часть III. Практика программирования
Они могут работать как на более высоком уровне, чем функциональный драйвер или драйвер шины, так и на более низком. Обычно эти драйверы предоставляются производителями или независимыми поставщиками оборудования.
В среде WDM один драйвер не может контролировать все аспекты устройства: драйвер шины информирует диспетчера PnP (см. главу 10) об устройствах, подключенных к шине, в то время как функциональный драйвер управляет устройством. Драйверы фильтров низкого уровня позволяют ис-травлять информацию о требованиях устройства к системным ресурсам, а ірайверьі фильтров высокого уровня добавляют устройству дополнитель-іую функциональность (например, производят дополнительную защиту славиатуры).
^ Примечание
Получить список загруженных в данный момент драйверов можно с помощью утилиты Drivers (файл drivers.exe), как показано на рис. 9.1.
C:>Dnvers ModuleName Code Data Bss Paged Init LinkDate
ntoskrnl.exe 431488 75904 0 1170944 171904 Thu Aug 29 13:03:24 2002
hal.dll 32896 42624 0 28672 14336 Thu Aug 29 12:05:02 2002
KDC0H.DLL 2560 256 0 1280 512 Sat Aug 18 00:49:10 2001
B00TVID.dll 5632 3584 0 0 512 Sat Aug 18 00:49:09 2001
ACPI.sys 103936 11008 0 40192 4736 Thu Aug 29 12:09:03 2002
WMILIB.SYS 512 0 0 1280 256 Sat Aug 18 01:07:23 2001
Cdfs.SYS 6528 640 0 42880 4480 Thu Aug 29 12:58:50 2002
asyncmac.sys 8576 1024 0 0 1152 Sat Aug 18 00:55:29 2001
USBSTOR.SYS 6656 128 0 10368 1536 Thu Aug 29 12:32:50 2002
ntdll.dll 466944 20480 0 0 0 Thu Aug 29 14:40:40 2002
Total S78SS36 818400 0 4474912 532192
Рис. 9.1. Получение списка загруженных драйверов
Гпава 9. Введение в WDM
183
9.1. Драйверные слои
Согласно типам драйверов, существуют три типа объектов:
? объекты физических устройств (PDO, Physical Device Object);
? объекты функциональных устройств (FDO, Functional Device Object);
? объекты фильтров устройств (FiDO, Filter Device Object).
Объекты PDO создаются для каждого физически идентифицируемого элемента аппаратуры, подключенного к шине данных. Объект FDO подразумевает единицу логической функциональности устройства. Объекты фильтров предоставляют дополнительную функциональность.
Начиная с Windows 2000, последовательность загрузки драйверов такая:
1. Во время загрузки ОС производится загрузка шинных драйверов для каждой известной системы шины (список шин составляется при инсталляции ОС и сохраняется в реестре).
2. Вызывается DriverEntry (см. разд. 9.3.1), а затем AddDevice (см. разд. 9.3.2) каждого шинного драйвера. В AddDevice создается FDO для драйвера системной шины. Потом посылают irp_mn_start_device на созданный FDO.
3. Шинный драйвер составляет список всех устройств, подключенных к шине. Для каждого найденного устройства создается объект PDO.
4. На каждый PDO посылается запрос irp_mn_query_device_relation, в ответ на который шинный драйвер возвращает идентификаторы всех найденных устройств.
5. На эти PDO посылают запрос irp_mn_query_id, в ответ на который драйвер системной шины сообщает идентификаторы этих устройств.
6. Получив эти идентификаторы, система пытается найти и загрузить драйверы устройств.
7. Найдя драйвер для устройства, система загружает его в память, вызывая его DriverEntry. Потом вызывается AddDevice, где создается FDO для устройства. Если устройств, управляемых этим драйвером, несколько, то AddDevice будет вызвана для каждого устройства. Если в реестре зарегистрированы дополнительные фильтры, то они также загружаются в память. Затем система посылает на FDO запрос irp_mn_start_device. Кроме того, при необходимости AddDevice осуществляет создание символьного имени устройства (см. разд. 9.2).
8. Потом посылают на FDO запрос irp_mn_query_device_relations. Если устройство само является шиной или держит на себе другие устройства, которыми само не управляет, то для устройств на нем повторяется вся последовательность действий, начиная с пункта 5.
Предыдущая << 1 .. 57 58 59 60 61 62 < 63 > 64 65 66 67 68 69 .. 166 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100