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

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

Задача:
Есть драйвер некоего USB устройста с соответствующим .inf файлом.
необходимо выполнить программно предустановку драйвера с тем, чтобы
при первом подключении устройства Windows не требовала путь к драйверу.
Т.е. выполнить тоже, что и при выборе пункта Install стандартного
контекстного меню.
Драйвер работает как под Win98 так и под ХР (не подписан Майкрософтом)

Пробовал разные варианты с SetupInstallFromInfSection - ничего не получилось.
UpdateDriverForPlugAndPlayDevices работает только при подключеном устройстве

Кто-нить подскажет хоть в каком направлении копать? А то уже замучался.
Записан
dachny
Гость
« Ответ #1 : 05-08-2005 05:52 » 

Надо САМОМУ (хоть гейтс и запрещает но НАДО) скопировать *.inf в windows\inf\ a *.sys в windows\system32\drivers\
и еще в *.inf файле не должно быть инструкций на копирование файлов

а затем вызвать SetupCopyOEmInf
Записан
ilya1492
Гость
« Ответ #2 : 05-08-2005 06:37 » 

Цитата
Надо САМОМУ (хоть гейтс и запрещает но НАДО) скопировать *.inf в windows\inf\ a *.sys в windows\system32\drivers\
и еще в *.inf файле не должно быть инструкций на копирование файлов
а затем вызвать SetupCopyOEmInf

Спасибо, прверил данную методику, в принципе работает, но не совсем как надо:
все равно выскакивает окошко Found New Hardware Wizard, хотя теперь если выбрать "Установить автоматически" то драйвер устанавливатеся и не просит пути.

А можно как-то сделать чтобы New Hardware Wizard не выдавал лишних диалогов?
Записан
dorador
Гость
« Ответ #3 : 17-08-2005 09:04 » 

аналогичная проблема с PCI устройством : тоже появляется окно визарда и работает выбор автоматической установки, а хочется полный автомат (без диалога).
похоже, проблема не решаемая Жаль
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 25-08-2005 15:51 » 

Попробуйте 12 главу книги "Windows Driver Model" Walter Oney посмотреть, раздел "Defining a Device Class" ...
 она еще про 98 написана но разницы быть не должно больной...
там что то написано про библиотеки - установщики драйверов/классов... но честно говоря сам не лазил - без понятия.
но там есть фраза касательно ClassInstall32 секции inf файлов:
"SilentInstall, if present and not equal to 0, causes the PnP manager to install devices of this class without presenting any dialogs to the end user."
- дает надежду)
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
dorador
Гость
« Ответ #5 : 26-08-2005 14:28 » 

к сожалению не помогло  Так больше нельзя...
хотя и Оуни и MSDN говорят что окна появляться не должны
странно это...
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 26-08-2005 14:46 » 

Раздел "Device Installation: Writing a Device Installation Application" DDK-XP-SP1:
...
Может так попробовать?через SetupCopyOEMInf
Хотя судя по всему - просто Тупое копирование...
второй вариант... попробовать заранее создать все ключи реестра которые создаются при первой инсталяции драйверов. быть может поможет?
их можно отследить какой нибудь утилиткой.
« Последнее редактирование: 26-08-2005 15:00 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
dorador
Гость
« Ответ #7 : 26-08-2005 15:16 » 

SetupCopyOEMInf я применяю - куда ж без нее?
она из inf создает pnf, система это видит и после установки устройства начинает обрабатывать, но окно визарда выдает все равно
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #8 : 26-08-2005 15:22 » 

а за реестром последить не пробовал?
кстати... это ведь только при первом подключении запрос выдаваться должен?
а что делаешь чтобы ситуацию обратно вернуть?
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
dorador
Гость
« Ответ #9 : 29-08-2005 08:27 » 

а за реестром последить не пробовал?
кстати... это ведь только при первом подключении запрос выдаваться должен?
а что делаешь чтобы ситуацию обратно вернуть?
что пишется в реестр я знаю, вручную заносить не пробовал - считаю что это неправильно, хотя может попробую для эксперимента
а чтобы система воспринимало устройство как новое делаю следующее (WinXP)
1. удаляю inf и соотвествующий pnf файлы из каталога windows\inf
2. в реестре удаляю ветки
 HKLM\System\CurrentControlSet\Control\Class\ далее GUID из inf-файла
 HKLM\System\CurrentControlSet\Enum\ далее PCI или USB и устройство по вендору и девайсу
 HKLM\System\CurrentControlSet\Service\ далее имя драйвера

Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #10 : 29-08-2005 10:39 » 

а чтобы система воспринимало устройство как новое делаю следующее (WinXP)
1. удаляю inf и соотвествующий pnf файлы из каталога windows\inf
2. в реестре удаляю ветки
 HKLM\System\CurrentControlSet\Control\Class\ далее GUID из inf-файла
 HKLM\System\CurrentControlSet\Enum\ далее PCI или USB и устройство по вендору и девайсу
 HKLM\System\CurrentControlSet\Service\ далее имя драйвера
Цитата
Так в чем же дело? впринципе это и есть ответ на вопрос...
последовательность такая: винда находит новое устройство по PNP определяет его вендор и девайсИД.
по нему лезет в в ключ Enum, - там прописан соответствующий class устройства и сервис(драйвер который надо подгрузить). и GUID тоже.

и пока оно там не найдется - само ничего не случится...в смысле кнопка "применить" останется:)
если не хочется руками в реестре добавлять, или reg- файл написать...
тогда - апликуха, в которой соотвутствующими функциями создаются эти ключи - значения полей должны быть стандартны..
думаю так все инсталяторы и устроены...
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
dorador
Гость
« Ответ #11 : 29-08-2005 12:40 » 

неясно как генерятся значения некоторых параметров в этих ключах
и в разных виндах ветки могут быть разными (в 98 точно другие, в win2k не знаю)
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #12 : 30-08-2005 09:30 » 

а что именно не понятно из того что генерить по ключам надо?
там половину полей опустить можно...а вторая половина - вроде бы все банально из inf файла берется.
например для моего PCI
============================
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\PCI\VEN_XXXX&DEV_XXXX&SUBSYS_XXXXXXXX&REV_XX]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\PCI\VEN_XXXX&DEV_XXXX&SUBSYS_XXXXXXXX&REV_XX\?&Не понялНе понял?&?&??]
"DeviceDesc"="board driver" //отображаемое имя устройства
"LocationInformation"="PCI шина 0, устройство 9, функция 0" //скорее пофиг - инфа для отображения.
"Capabilities"=dword:00000000
"UINumber"=dword:00000004
"HardwareID"=hex(7):"VEN_XXXX&DEV_XXXX&SUBSYS_XXXXXXXX&REV_XX" юникодом
"CompatibleIDs"=hex(7):"VEN_XXXX&DEV_XXXX&SUBSYS_XXXXXXXX&REV_XX" юникодом
"ClassGUID"="GUID..." //ваш GUID классa
"Class"="название класса"
"Driver"="GUID...\\0000" GUID раздела реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\0000 - имя драйвера (0000,0001 и т.д. передисление при установке нового драйвера под то же устройство
"Mfg"="HW Manufacturer"
"Service"="Название сервиса"
"ConfigFlags"=dword:00000000

неизвестны поля:
Capabilities   - оставить как есть для вашего устройства,
UINumber   - с этим номером не в курсе... он генерится (можно попробовать вообще без него. для USB вроде нет такого)
ConfigFlags - оставить как есть для вашего устройства

?&Не понялНе понял?&?&??  -это тоже не ясно, кажется любое число покатит, помоему эксперементироавл в свое время... пофиг. меняется если ту же PCI карту в другой слот воткнуть. но тут не суть важно, важно чтобы устройство хотя бы раз было воткнуто.
===================================

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{ваш GUID классa}]
"Class"="название класса"
@="название класса"
"Icon"="-5" //индекс вашей иконки в дереве устройств (-5 - иконка сетевой карточки)

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{ваш GUID классa}\0000]
"InfPath"="oem3.inf"
"InfSection"="WDM_ISR_DDI" //название секции инстала из inf файла
"InfSectionExt"=".NT"
"ProviderName"="имя вашей фирмы"
"DriverVersion"="1.0.0.0" //версия драйвера (помоему та что из инфо драйвера скомпилирована)
"MatchingDeviceId"="pci\\VEN_XXXX&DEV_XXXX&SUBSYS_XXXXXXXX&REV_XX"
"DriverDesc"="board driver"

тут все ясно.
===============================

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Название сервиса]
"Type"=dword:00000001 //из inf файла поле ServiceType
"Start"=dword:00000003 //из inf файла поле StartType
"ErrorControl"=dword:00000001 //из inf файла поле ErrorControl
"ImagePath"=hex(2):юникодом путь до файла драйвера
"DisplayName"="board service"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Название сервиса\Security]
"Security"=hex:........... не знаю... дескриптор защиты?  можно попробовать без него вообще, без этого ключа вообще.

=========
PS для USB подчти полная аналогия должна быть... есть конкретные вопросы - посмотрю.
PPS возможно для инсталяции без вопросов половину из перечисленного можно убить. хватит наверное только ключа с вендором девайса, GUID класса с путем до драйвера и класса устройства...
« Последнее редактирование: 30-08-2005 09:38 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
dorador
Гость
« Ответ #13 : 31-08-2005 10:29 » 

Ochkarik, лихо отмахиваешься от того, что не ясно - это чревато тем что в одних случаях будет работать, а в других нет
есть еще один аргумент не заполнять самостоятельно реестр:
в ключе
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\PCI\VEN_XXXX&DEV_XXXX&SUBSYS_XXXXXXXX&REV_XX]
создается новый подключ, если устройство переткнуть в соседний слот
а если пользователь будет перетыкать несколько раз и в разные слоты?
либо опять появится окно визарда, либо надо наделать подключей по количеству слотов
а если драйвер обслуживает несколько устройств с разными DeviceID, то повторить это для каждого
ой, что-то не нравится мне такой способ Жаль
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #14 : 31-08-2005 11:11 » 

хм.... окно визарда появилось... только что переткнул карточку с моим драйвером...но впрочем это для PCI...

разве на USB это происходит? я не помню чтобы при втыкании той же флешки в соседний USB появлялось окно визарда?
к сожалению нет под рукой USB устройства для опытов...
попробовал переткнуть USB концентратор на мониторе. но он его и так и так Винь сама ставит, внезависимости от подключения.
НО! новой ветки в ключе
HKLM\SYSTEM\Curr...\Enum\USB\...
не появилось.... появилась всего одна - при первом поключении!
если не лень - поэксперементируй...
штука в том, что USB изначально разрабатывалась для горячего подключения в первую попавшуюся дырку... - там нет смысла использовать номер этой самой дырки...
но - все это эксперементально.
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
dorador
Гость
« Ответ #15 : 31-08-2005 11:25 » 

мне и для PCI тоже самое надо
а на USB тоже появляется новая ветка
может у тебя не появилась, потому что другой порт на той же шине оказался (в USB на одной шине (хабе) по 2 порта сидит)?
Записан
AlexANDor
Гость
« Ответ #16 : 03-09-2005 20:55 » 

На USB визард установки нового устройства на другом порту хаба выдается  в том случае, если USB-устройство не имеет серийного номера (используется геограифическая адресация для енумерации). Соответственно в реестре создаются новые ветки для всех портов хабов. Если SN есть - установка однократная и в реестре одна ветка, енумерация по SN.
Кстати, по умолчанию разрешения на модификацию ветки HKLM\System\CurrentControlSet\Enum\ (как и некоторых других) нет даже у администратора, хотя он может предварительно установить себе такое разрешение.
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #17 : 05-09-2005 09:28 » 

Очередная "идея"... а что если попробовать драйвер SCM-ом  грузить первый раз... принудительно его устанавливая...
функция API - CreateService...
раздел MSDN   "Platform SDK: DLLs, Processes, and Threads -> Services"Не понял

Кстати... вопрос подчти в тему - никто не пытался виртуальных устройств под 1394 писать? как их грузить надо? правда говорят что это только под XP работает...

Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
dorador
Гость
« Ответ #18 : 06-09-2005 12:41 » 

На USB визард установки нового устройства на другом порту хаба выдается  в том случае, если USB-устройство не имеет серийного номера (используется геограифическая адресация для енумерации). Соответственно в реестре создаются новые ветки для всех портов хабов. Если SN есть - установка однократная и в реестре одна ветка, енумерация по SN.
Кстати, по умолчанию разрешения на модификацию ветки HKLM\System\CurrentControlSet\Enum\ (как и некоторых других) нет даже у администратора, хотя он может предварительно установить себе такое разрешение.
это Вы про ветки, которые образуются внутри ветки Vid_xxxx&Pid_xxxx ?
что такое SN (серийный номер) ?  это iSerialNumber ? строка из дескриптора устройства? она имеет такое значение?
в моем устройстве ее нет - в реестре 2 ветки под веткой Vid_xxxx&Pid_xxxx
в USB-флешке, которую я использую, она есть - в реестре 3 ветки под веткой Vid_xxxx&Pid_xxxx
или я что-то не понял или Ваше предположение не прокатывает... Здесь была моя ладья...


Очередная "идея"... а что если попробовать драйвер SCM-ом грузить первый раз... принудительно его устанавливая...
функция API - CreateService...
раздел MSDN "Platform SDK: DLLs, Processes, and Threads -> Services"Не понял
SCM-ом драйвер (при отсутствии устройства) загрузить не удалось,
думаю, с WDM драйверами устройств это непроходит Жаль
Записан
AlexANDor
Гость
« Ответ #19 : 06-09-2005 15:43 » 

Цитата
это Вы про ветки, которые образуются внутри ветки Vid_xxxx&Pid_xxxx ?

Да

Цитата
что такое SN (серийный номер) ?  это iSerialNumber ? строка из дескриптора устройства?

Да. Ее еще удобно смотреть утилиткой USBview из комплекта DDK.

Цитата
она имеет такое значение?

Да, потому что комбинация VID + PID + SN задает экземпляр физического устройства.

Цитата
в моем устройстве ее нет - в реестре 2 ветки под веткой Vid_xxxx&Pid_xxxx
в USB-флешке, которую я использую, она есть - в реестре 3 ветки под веткой Vid_xxxx&Pid_xxxx

Как называются подветки? Для SN подветка прямо этим номером и называется. Для географичсекой адресации a&bbbbbbbb&c&d. LocationInformation во всех трех подветках одинаков? Может втыкали другую флешку того же производителя, но без SN - у меня есть ровно такой случай для Transcend Flash, одна 256M, другая 512, одна с SN, другая - без, VID+PID одинаковы.
« Последнее редактирование: 06-09-2005 15:50 от AlexANDor » Записан
dorador
Гость
« Ответ #20 : 07-09-2005 09:01 » 

Да, потому что комбинация VID + PID + SN задает экземпляр физического устройства.
Как называются подветки? Для SN подветка прямо этим номером и называется. Для географичсекой адресации a&bbbbbbbb&c&d. LocationInformation во всех трех подветках одинаков? Может втыкали другую флешку того же производителя, но без SN - у меня есть ровно такой случай для Transcend Flash, одна 256M, другая 512, одна с SN, другая - без, VID+PID одинаковы.

Ваша правда: одно и то же USB-устройство, имеющее SN, образует только одну подветку внутри ветки Vid_xxxx&Pid_xxxx.
А ветки у меня были от разных устройств с одними VID и PID.
А что такое географичсекая адресация и как она получается?
для PCI-устройств похоже, что применяется она же
Записан
Viktor Denk
Участник

de
Offline Offline

« Ответ #21 : 07-09-2005 09:43 » 

а затем вызвать SetupCopyOEmInf
Не могли б Вы, уважаемый, привести кусочек кода?

что пишется в реестр я знаю, вручную заносить не пробовал - считаю что это неправильно, хотя может попробую для эксперимента
а чтобы система воспринимало устройство как новое делаю следующее (WinXP)
1. удаляю inf и соотвествующий pnf файлы из каталога windows\inf
2. в реестре удаляю ветки
 HKLM\System\CurrentControlSet\Control\Class\ далее GUID из inf-файла
 HKLM\System\CurrentControlSet\Enum\ далее PCI или USB и устройство по вендору и девайсу
 HKLM\System\CurrentControlSet\Service\ далее имя драйвера


Интересно, а как это в "enum" записать что нибудь?. У меня права Admin, но при попытке записи шипитt: "Цыц, иди на..."
 

На USB визард установки нового устройства на другом порту хаба выдается  в том случае, если USB-устройство не имеет серийного номера (используется геограифическая адресация для енумерации). Соответственно в реестре создаются новые ветки для всех портов хабов. Если SN есть - установка однократная и в реестре одна ветка, енумерация по SN.
Кстати, по умолчанию разрешения на модификацию ветки HKLM\System\CurrentControlSet\Enum\ (как и некоторых других) нет даже у администратора, хотя он может предварительно установить себе такое разрешение.

"Кстати" а как это сделать, лучше всего из программы?

А то я попытался с Тостером ( из ДДК) проделать, ничего не получилось. Я имею в виду "тихую инсталляцию".
Заранее ВСЕМ  большое СПАСИБО за интересную и полезную дискуссию!
Viktor
vetoshkin@mail333.com

Записан

A u nas v Sibiri!
dorador
Гость
« Ответ #22 : 07-09-2005 14:38 » 

а затем вызвать SetupCopyOEmInf
Не могли б Вы, уважаемый, привести кусочек кода?
примерно так
      if(!SetupCopyOEMInf(FullSourcePath,
               NULL,
               SPOST_PATH,
               0,
               OemPath,//NULL,
               MAX_PATH,//0,
               NULL,
               NULL))
      {
         Status = GetLastError();
         printf("Fail: SetupCopyOEMInf");
         return Status;
      }
в MSDN есть подробности
Цитата
что пишется в реестр я знаю, вручную заносить не пробовал - считаю что это неправильно, хотя может попробую для эксперимента
а чтобы система воспринимало устройство как новое делаю следующее (WinXP)
1. удаляю inf и соотвествующий pnf файлы из каталога windows\inf
2. в реестре удаляю ветки
 HKLM\System\CurrentControlSet\Control\Class\ далее GUID из inf-файла
 HKLM\System\CurrentControlSet\Enum\ далее PCI или USB и устройство по вендору и девайсу
 HKLM\System\CurrentControlSet\Service\ далее имя драйвера


Интересно, а как это в "enum" записать что нибудь?. У меня права Admin, но при попытке записи шипитt: "Цыц, иди на..."
 

в RegEdit есть пункт меню "Permissions..."
Записан
AlexANDor
Гость
« Ответ #23 : 07-09-2005 23:07 » 

Цитата
А что такое географичсекая адресация и как она получается?
для PCI-устройств похоже, что применяется она же

Географическая - "Location", адресация - неудачно я выразился, точнее - идентификация.
Из глоссария в описании DDK:

device instance ID - A system-supplied string that identifies a device instance. This string consists of a device ID and an additional, instance-specific instance ID. The string format is:
<enumerator>\<enumerator-specific-device-ID>\<instance-specific-ID>
For example:
PCI\VEN_1000&DEV_0001&SUBSYS_00000000&REV_02\1&08

instance ID - A string that distinguishes a device from other devices of the same type on a machine. An instance ID is a string (without any path-separator characters) that contains serial-number information, if supported by the underlying bus, or some kind of location information. The format of the string is bus specific.

Я не встречал описания, как именно образуется строка instance ID в случае отсутствия SN для того же USB, но не особо и искал, в общем-то какая мне разница? На PCI тем более Location уместен - SN при всем желании не мог бы идентифицировать устройство, ибо важен слот - линии прерываний индивидуальны для разных слотов. И тем более нет горячего подключения.

PS. А новый микрософтовский DIF (Driver Install Frameworks) для сабжа не поможет?
« Последнее редактирование: 07-09-2005 23:49 от AlexANDor » Записан
dorador
Гость
« Ответ #24 : 08-09-2005 08:10 » 

Из глоссария в описании DDK:
туда я как раз заглянуть и не догадался Отлично
Цитата
PS. А новый микрософтовский DIF (Driver Install Frameworks) для сабжа не поможет?
не пробовал, но читал где-то, что он поддерживает только подписанные драйвера
впрочем, встречал и такое мнение, что тихая установка (без окна визарда) вообще возможна только на подписанных драйверах
Записан
AlexANDor
Гость
« Ответ #25 : 08-09-2005 12:26 » 

Как не крути, ветки в реестре для данного экземпляра устройства должны быть в реестре, иначе при его втыкании получим визард установки. И наоборот - если все ветки заранее правильно созданы - это ничем imho не отличается от корректной установки и при втыкании устройства не будет предупреждения о неподписанном доайвере, это просто аналогично уже повторному втыканию. Для USB очевидно все-таки удобно иметь SN. Но пока устройство не воткнуто - SN взять неоткуда, замкнутый круг. Или иметь индивидуальные инсталляторы настроенные на свои SN, но это уже снова неудобства. Или выпускать все устройства с одним SN в надежде, что два их никогда не воткнут в один компъютер. Что неправильно. Ветки реестра - разные для 9x и NT.
Хотя мне не очень понятна борьба именно с визардом - ну выскочит он, и ладно, как бы обратная связь пользователю - все нормально, устройство найдено. Если речь не о каких-то шпионских штучках. Улыбаюсь
Записан
dorador
Гость
« Ответ #26 : 08-09-2005 12:53 » 

Как не крути, ветки в реестре для данного экземпляра устройства должны быть в реестре, иначе при его втыкании получим визард установки. И наоборот - если все ветки заранее правильно созданы - это ничем imho не отличается от корректной установки и при втыкании устройства не будет предупреждения о неподписанном доайвере, это просто аналогично уже повторному втыканию. Для USB очевидно все-таки удобно иметь SN. Но пока устройство не воткнуто - SN взять неоткуда, замкнутый круг. Или иметь индивидуальные инсталляторы настроенные на свои SN, но это уже снова неудобства. Или выпускать все устройства с одним SN в надежде, что два их никогда не воткнут в один компъютер. Что неправильно. Ветки реестра - разные для 9x и NT.
Хотя мне не очень понятна борьба именно с визардом - ну выскочит он, и ладно, как бы обратная связь пользователю - все нормально, устройство найдено. Если речь не о каких-то шпионских штучках. Улыбаюсь
я с тобой полностью согласен
а изначально вопрос возник из желания упростить:
 1) жизнь пользователю
 2) написание руководства по установке себе
Записан
Viktor Denk
Участник

de
Offline Offline

« Ответ #27 : 08-09-2005 14:03 » 

1. Как не крути, ветки в реестре для данного экземпляра устройства должны быть в реестре, иначе при его втыкании получим визард установки. И наоборот - если все ветки заранее правильно созданы - это ничем imho не отличается от корректной установки и при втыкании устройства не будет предупреждения о неподписанном доайвере, это просто аналогично уже повторному втыканию. Для USB очевидно все-таки удобно иметь SN. Но пока устройство не воткнуто - SN взять неоткуда, замкнутый круг. Или иметь индивидуальные инсталляторы настроенные на свои SN, но это уже снова неудобства. Или выпускать все устройства с одним SN в надежде, что два их никогда не воткнут в один компъютер. Что неправильно. Ветки реестра - разные для 9x и NT.
Хотя мне не очень понятна борьба именно с визардом - ну выскочит он, и ладно, как бы обратная связь пользователю - все нормально, устройство найдено.
2. Если речь не о каких-то шпионских штучках. Улыбаюсь
2. При системном и удаленном администкировании ЭТО жизненно необходимо, админ - по определению левый
1. Не очевидно. На свежем ХП Проф вставил HID клаву, дождался опознания, сфотал регистры, експортировал все важные ( как мне казалось) ветки и импортировал их снова на новом ВЫНЕ. Результат - теперь никакими силами не могу заставить работать. Конечно после деинсталляции ручками всех итемс цвета детской неожиданности в Device manager все встало на место, но ....
Viktor
vetoshkin@mail333.com
Записан

A u nas v Sibiri!
AlexANDor
Гость
« Ответ #28 : 08-09-2005 14:53 » 

Цитата
1. Не очевидно.
Не спорю. Увы, cейчас специально ставить эксперимент времени нет, но:
1). instance ID для USB в случае отсутствия SN скорее всего машинно- и OS-зависимый.
2). Возможно скопировали не все ветки. Там их довольно много, в том числе связанные с Class GUID, Interface GUID, сервисом.
3). После правки реестра может быть нужна перезагрузка (именно потому что обошлись только правкой, а не вызовом системных функций установки).
4). HID - стандартный класс, возможно есть еще какая-то специфика.
« Последнее редактирование: 08-09-2005 23:43 от AlexANDor » Записан
Viktor Denk
Участник

de
Offline Offline

« Ответ #29 : 09-09-2005 06:53 » 

AlexANDor:
Сейчас еще на раз проанализировал, что и как сделал ( для меня это все жизненно важно):
1. Там больше 700 изменений в регистрах, смотрел RegShot 1.72;
2. Скопировал все ветви HKLM\SYSTEM\CurrentControlSet\;
3. Не скопировал в HKLM\SYSTEM\ControlSet001\ и HKU\...;
4. Но критичными окзались ( по моему мнению) немодифицтрованные значения в HKLM\SYSTEM\CurrentControlSet\. там есть такие вещи как:
...Kbdclass\Enum\Count: 0x00000002 на 0x00000003
...Kbdclass\Enum\NextInstance: 0x00000002 на 0x00000003
и.т.д.
Да, делать все ручками - по большому счета: "ножками"
Viktor
vetoshkin@mail333.com
Записан

A u nas v Sibiri!
Страниц: [1] 2  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines