Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Ну это опять таки проблема криворуких third party-ей 26.09.06 14:40 Число просмотров: 4726
Автор: amirul <Serge> Статус: The Elderman
|
> Можно подитожить: везде есть свои преимущества и > недостатки. Кстати, проиндексировать все inf-файлы для быстрого поиска нужного hardwareid - совершенно не проблема (даже алгоритмы выдумывать ни фига не надо). С другой стороны даже если использовать devcon и указать КОНКРЕТНЫЙ inf и КОНКРЕТНЫЙ HardwareID в нем, устновка все равно происходит секунд 5. Причем процессор как простаивал так и простаивает. Что то мне подсказывает, что дело отнюдь не в том, что надо до фига вычислять, а в спецификациях шин и прочего железа. Для исключения race-ов вводятся паузы и таймауты.
> Мне по душе системы более кондовые, но навязывать свои > предпочтения не собираюсь. Кому-то хочется втыкнуть > устройство, а дальше чтоб система сама сделала все нужное, > если что не так - регедит в помощь. Меня вполне устроит Для начала Device Manager, а потом можно и регэдитом поковырять. Главное знать ЧТО делаешь.
> после втыкания устройства скинуть файл с дискетки и > дописать строчку в конфиге "load \drivers\devdrv.sys". Забавно, что такая возможность (ручная установка) оставлена в винде. Только зачем делать legacy дрова, если можно написать WDM. End user еще и спасибо скажет.
> Очень рад. Ну пусть будет этот ПнП менеджер. Если есть > возможность детекта (однозначного) устройств, есть списочек У каждой шины свои уникальные идентификаторы. Вот например в PCI configuration space устройств жестко записаны Vendor ID, Device ID, Subsystem ID, Subsystem Vendor ID и Revision ID
http://ru.wikipedia.org/wiki/PCI_configuration_space
Vendor/Device ID однозначно идентифицируют тип устройства. Остальные идентификаторы можно использовать для детализации информации об устройстве. В принципе можно сделать дрова для КОНКРЕТНОЙ PCI карточки и эти дрова будут подходить только для нее.
Так вот, драйвер PCI шины знает об этих идентификаторах и на их основании составляет список HardwareIDs и CompatibleIDs
Вот например HardwareIDs для моей интеловской набортной сетевухи:
PCI\VEN_8086&DEV_109A&SUBSYS_81C21043&REV_00
PCI\VEN_8086&DEV_109A&SUBSYS_81C21043
PCI\VEN_8086&DEV_109A&CC_020000
PCI\VEN_8086&DEV_109A&CC_0200
И CompatibleIDs (более generic-овые)
PCI\VEN_8086&DEV_109A&REV_00
PCI\VEN_8086&DEV_109A
PCI\VEN_8086&CC_020000
PCI\VEN_8086&CC_0200
PCI\VEN_8086
PCI\CC_020000
PCI\CC_0200
Процесс поиска совпадения ПОДРОБНО описан в MSDN. Скажу только, что из всех inf-файлов мне подошел тот, который описывал HardwareID
pci\ven_8086&dev_109a (как видно здесь именно пара Vendor/Device и никакой привязки к конкретной сошедшей с конвейера карточке).
> соответствий кодов и драйверов, путь при установки (на > "горячую" или на "холодную") устройства подгрузит нужный > файлик. Пытаться дергать кучу файлов-драйверов каждую > загрузку совсем не следует. Задерка связана не столько с поиском соответствия (хотя с ней тоже, но этот процесс несложно оптимизировать), сколько с сериализацией и таймаутами при опросах шин.
> Как-то делал зачистку от инсталляции Оракла (8.1), который > за собой не подчищает, нормально не деинсталируется и Ну это проблема Оракла, а не реестра все таки. Подозреваю, что больше всего проблем у тебя было с CLSID. Скажу по секрету формат подключей этого ключа тоже отлично задокументирован (правда я его не знаю :-) ибо никогда не писал COM/ActiveX)
> раскидывает сопли по всему реестру. Тяжело это было... > Нормально формализовать поиск в реестре тяжело, пришлось > искать просто "oracle", по дороге визуально анализируя, > чтоб не удалить то, что нужно (ODBC). Не стоит все ж таки валить с больной головы на здоровую. Если твой случай и говорит о криворукости программеров, то скорее Оракловских, а не майскрософтовских
|
|
|