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

 

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

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

Агуров П.В. Интерфейсы USB. Практика использования и программирования — СПб.: БХВ-Петербург, 2004. — 576 c.
ISBN 5-94157-202-6
Скачать (прямая ссылка): interface2004.djvu
Предыдущая << 1 .. 78 79 80 81 82 83 < 84 > 85 86 87 88 89 90 .. 166 >> Следующая

[MyDeviceCopyFilesSection] [MyDeviceAddRegSection] [MyDeviceDelRegSection] [MyDeviceLogConfigSection]
Рис. 10.6. Утилита генерации INF-файлов (Windows XP DDK)
Последовательно отвечая на вопросы утилиты (рис. 10.7), довольно легко получить вполне приемлемый вариант INF-файла.
Для проверки правильности написания INF-файла в Windows DDK предусмотрена утилита Chklnf. Для ее работы требуется установка интерпретатора
248
Часть III. Практика программирования
ActivePerl, загрузить который можно с сайта www.activestate.com. Утилита выдает результат в формате HTML.
Gen INF
General Information
Enter general information in the appropriate blanks. Press the button to specify the location of your INF file.
(-Manufacturer Info-
Company Name^jpvASoft
Abbreviated ' |—— Company Name |FVA
Device PaSS ii:
USB
File Info -
Inf File Pathname
INF Location on I Distribution Media
I j Catalog Fte : Name
E:\devOOO.inf
"3
V Multi-Platform Catalog Files
< flack I Мекі > j Cancel | Help [
Рис. 10.7. Одно из диалоговых окон помощника создания INF-файла
10.4.12. Установка устройств с помощью INF-файла
В разд. 1.7 мы уже рассматривали процедуру установки USB-устройств. В этом разделе мы опишем общие этапы этого процесса. Итак, обнаружив подключение нового устройства, диспетчер PnP выполняет следующие шаги:
1. PnP-менеджер режима ядра уведомляет PnP-менеджер пользовательского режима об обнаружении нового устройства со специфическими идентификаторами PnP (код производителя, модель, версия и т. д.).
2. PnP-менеджер пользовательского режима составляет список возможно подходящих драйверов, проверяя, в частности, системный каталог с доступными INF-файлами.
3. Если подходящий INF-файл не обнаружен, система откладывает все последующие действия до момента, пока в систему войдет пользователь с достаточным уровнем привилегий. Этому пользователю предлагается
Глава 10. Спецификация PnP для USB
249
диалоговое окно Мастера Установки (Add Hardware Wizard). Пользователь должен указать месторасположение подходящих INF-файлов.
4. При обнаружении подходящего INF-файла производится его обработка: выполняется копирование указанных файлов драйвера, модификация реестра и т. д.
5. На основе директив INF-файла PnP-менеджер режима ядра загружает все фильтр-драйверы нижнего уровня, затем функциональный драйвер и, наконец, верхние фильтр-драйверы, предназначенные для обслуживания нового устройства. Драйверу, находящемуся на вершине стека, направляются РпР-запросы (IRP-пакеты с кодом irp_mj_pnp), включая
irp_mn_s tart_device.
10.5. Ветки реестра для USB
Ветка реестра (рис. 10.8)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\PCl содержит имена USB-контроллеров, например, VEN_1002&DEV_4742&SUBSYS_00000000&REV_5C
Каждая из этих веток имен содержит ветку, имя которой похоже на такое: 3&225bld41&0&0008
' Registry Editor
pBpgistry Edit View Eavorites UeIp
U PCI *1
ffl- ?3 VEN_10028IDEV-SOIeBiSUBSV
Ш
m.
[+ _] VErJ_10DE&DEV_0110&SU85Y t+ _J vErJ_14E4&DEVJt401&SU8S>f
* _} YEN_5333&DEV_8A22&5U8SY і+ _J i/EN_8086&DEV_244E&SUBS< E _J VErJ_8086&DEV_24C0&5U8S\ >+ _J VEN_8086&DEV_24C2&SU85V 1- _) vEN_808681DEV^24C48«5UBS',
• E €3
GjI control
: Ш Device Parameters — СЗ LogConf IE CJ VEN_8086&DEV_24C585UBS\ ffi Pj VEN_8086&DEV_24C7&5UBS\ mCj VEN_8086&DEV_24CB8<SUB5\ Й (U VENJB086&DEV_24CD86UBS> г
3&61aaa0ia08?9
Ir
Name
K§(Default)
щ!Э Capabilities
®Class
gjClassGUID
^CompatibleIDs
[SgConfigFlags
@>]DeviceDesc
Driver 5^HardwareID 1? Locationlnf ormation
WyParentldPrefix '»9 Service
REG_5Z
REG-DWORD
REG_SZ
REG_SZ
REG_MULTI_SZ
REG_DWORD
REG_SZ
REG_SZ
REG_MULTI_SZ
REG_SZ
REG_SZ
REG_SZ
REG SZ
j jData_________....... _________„
(value not set) 0x00000000 (0) USB
•{36FC9E60-C465-nCF-8056-444553; PCI\VEN_8086UDEV_24C4&REV_02 P( 0x00000000 (0)
Intel(R) 82801DB/DBM USB Universal r {36FC9E60-C465-11CF-8056-4445535 PCI\VEN_8086&DEV_24C48«SUBSY5_8 PCI bus 0, device 29, function 1 Intel
4&2ae46918&0 uhcd
^___________ ____.__ _ _ I ........
pyComplJierfili?Yj^
Рис. 10.8. Ветка реестра USB-контроллеров
250
Часть III. Практика программирования
Наиболее интересны следующие ключи этой ветки:
? DeviceDesc — описание контроллера;
? HardwareiD — полное аппаратное имя;
? Mfg — ИМЯ ПрОИЗВОДИТеЛЯ.
Ветка реестра
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB
содержит ключи, описывающие USB-устройства, когда-либо присутствующие в системе. Отметим, что к этим устройствам относятся также корневые хабы (рис. 10.9), но не относятся устройства, имеющие другой идентификатор класса (например, для класса usbstor создается другая ветка реестра).
Registry Е# yjew F,avorltes. Ы>
Pata.
И Єї STORAGE .,Q(DeT4Jt) REG-SZ
(value not set)
0x00000080(128)
USB
{36FC9E60-C465-11CF-8056-444553S40000}
OxOOOOOOOO(O)
USB 2.0Root Hub
{36FC9E60-C46S-11CF-80S6-444553540000H00C
US8\ROOT_HUB20B.Vn)80868iPlD24CD&REV0002
(Standard USB Hub)
56b92d8d&0
usbhub20
0x00000000(0)
v, ГітПШВт '•¦ SjHarcfcarelD REG_MULT1_SZ
Предыдущая << 1 .. 78 79 80 81 82 83 < 84 > 85 86 87 88 89 90 .. 166 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100