Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Установка второго и ... устройств драйвера  (Прочитано 8867 раз)
0 Пользователей и 1 Гость смотрят эту тему.
xxxs
Гость
« : 25-09-2005 01:52 » 

Что-то замучился с простеньким вроде бы вопросом.
Суть:
Есть pnp-драйвер на несколько виртуальных устройств, при установке первого устройства все проходит нормально, но при установке последующих устройств происходит обновление предыдущих установленных, это видно по виндовому диалогу XP о неподписанном драйвере. В итоге например, при установке  5-го устройства(по порядку) мне приходится соответственно 5 раз подтверждать установку!  Улыбаюсь
Любой из компилированых примеров DDK раздела setup творит тоже самое, что и написанная мной прога инсталяции.
Пробовал последовательность:
SetupDiGetINFClass
SetupDiCreateDeviceInfoList
SetupDiCreateDeviceInfo
SetupDiCallClassInstaller(DIF_REGISTERDEVICE)
SetupDiSetDeviceInstallParams
SetupDiBuildDriverInfoList(SPDIT_CLASSDRIVER)
SetupDiEnumDriverInfo(SPDIT_CLASSDRIVER)
SetupDiGetDriverInfoDetail
SetupDiSetSelectedDriver
SetupDiCallClassInstaller(DIF_REGISTER_COINSTALLERS)
SetupDiCallClassInstaller(DIF_INSTALLINTERFACES)
SetupDiCallClassInstaller(DIF_INSTALLDEVICE)
SetupDiInstallDevice
SetupDiGetDeviceInstallParams

,причем в разных вариациях с копированием и без копирования файлов драйвера. Результат к сожалению один и тот же.
А также пробовал использовать UpdateDriverForPlugAndPlayDevices.
Но самое то интересное, что когда вручную средствами системы добавляю устройство из списка для указанного драйвера,
то всё ставится на ура и предыдущим установленным устройствам не требуется подтверждение на переустановку.
Как же это в виндах то реализовано?Не понял

Может кто сталкивался с этим, или знает в каком месте я косячу.
Буду признателен за любую инфу.
Записан
Snake82
Гость
« Ответ #1 : 25-09-2005 08:12 » 

Помогите кто - нить. Как написать драйвер виртуального устройства (например звуковухи).
Записан
Viktor Denk
Участник

de
Offline Offline

« Ответ #2 : 28-09-2005 08:29 » 

Что-то замучился с простеньким вроде бы вопросом.
Привет! К плубокому сожалению это не простой вопрос, особенно если в инете посмотришь. На англо - немецко - русских форумах пустота.
Но к делу:
У меня несколько другие устройства, не могу повторить, но, я ТАК думаю ..., причина лежит в счетчиках и последовательности енумерации. Плюс к этому коды девайсов. Посмотри в РегЕдиторе и сравни. В качестве воркараунда: 1. Запоминай их перед; 2. Изменяй после. Если возникнут проблемы с записью в защищенные области реестра, то могу помочь, недавно я постил этот вопрос, и нашел не очень хорошее, но решение.
И вообще инсталляцию пора в отдельную тему выделить.
Виктор
Записан

A u nas v Sibiri!
xxxs
Гость
« Ответ #3 : 29-09-2005 02:17 » 

Насчет счетчиков и последовательности энумерации, то я фактически этого не придерживаюсь, но уникальность идентификаторов поддерживаю однозначно и корректное обновление в реестре. Что-то сомнений много насчет того что строгая последовательность нумерации необходима.
Нарыл еще немного в инете о приеме использовать SetupCopyOEMInf перед началом инсталяции, так теперь вообще нет диалогового окна о неподписанном драйвере устройства. Вообще кажется это мне не очень корректным и несколько некрасивым.
Еще есть сомнения насчет окончания update устройства, у меня пауза возникает секунд на 20. Интересно много это или мало и можно ли что-то оптимизировать в этом направлении.
Записан
Viktor Denk
Участник

de
Offline Offline

« Ответ #4 : 29-09-2005 11:57 » 

Нарыл еще немного в инете о приеме использовать SetupCopyOEMInf перед началом инсталяции, так теперь вообще нет диалогового окна о неподписанном драйвере устройства.

Поделись инфой, не жадничай ;=)

Вообще кажется это мне не очень корректным и несколько некрасивым.
Еще есть сомнения насчет окончания update устройства, у меня пауза возникает секунд на 20. Интересно много это или мало и можно ли что-то оптимизировать в этом направлении.
1. Что некорректно и некрасиво? Мое предложение - не спорю, я так и писал.
2. Да где то так - 20 сек. Правда оптимизация меня не сильно колышет - один раз. Я возился с усб - клавами, плюс там еще один усб - девайс на одной нитке сидит. Ну и флэшки, последние эксперименты, при инсталляции, посылатся 13 (!) сообщений WM_DEVICECHANGE, а при уже инсталлированной 9 и длится все около 10 сек.
Записан

A u nas v Sibiri!
xxxs
Гость
« Ответ #5 : 29-09-2005 13:54 » 

Ничуть не жадничаю инфо по направлению SetupCopyOEMInf есть в соседнем топике по предисталяции, а также советую глянуть на www.rsdn.ru, ввести в поиске установка устройств(драйверов). Улыбаюсь
Некрасиво на мой взгляд то, что я фактически напрямую веду обновление inf и pnf в системной папке, здесь как-то Microsoft не рекомендует этого делать.
А скорость важна, потому что возможно создание сразу например 50 устройств, что при соответственном умножении создаст ощутимую паузу. У меня не USB, немного проще набор виртуальных COM-портов.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines