Показать полную графическую версию : Помощник установки драйверов (DIA - Drivers Installer Assistant) v.6.4.28 PreFinal
BadPointer
31-10-2010, 23:00
И как дальний анализ этих секций поможет лучше определить совместимость? В них же нет ничего на что можно положится.
Учти что Windows принимает решение о совместимости драйверов тоже на основании секции manufacturer и в случае нехватки информации пользуется похожими предположениями о совместимости. Так что создатели драйверов наверняка правильно составили inf файлы.
За время моих наблюдений я не зафиксировал неудачной установки из-за неверного анализа этой секции. DPS действует довольно аккуратно при анализе драйверов, где их совместимость под вопросом, в результате DPS скорее отвергнет сомнительный драйвер вместо того чтобы предложить потенциально несовместимый драйвер.
Учти что Windows принимает решение о совместимости драйверов тоже на основании секции manufacturer и в случае нехватки информации пользуется похожими предположениями о совместимости. Так что создатели драйверов наверняка правильно составили inf файлы. »
В данном примере скорее всего происходит следующим образом. SetupApi берет данные из секции manufacturer и на основании оных получает имена секций, содержащих данные об hwid поддерживаемых устройств. Далее если в секции для поддерживаемой ОС присутствует совместимый hwid происходят дальнейшие действия о установке драйвера, если нет, то соответственно отказ в установке. В первом фрагменте секция [AzaliaManufacturerID.NTX86.6.0] содержит только коментарий и интерпретатор это понимает. Хотя конечно можно и не заморачиваться. Чего не сделает DSP или DIA сделает SetupApi Если драйвер не подходит для системы, он его просто не поставит ;)
BadPointer
31-10-2010, 23:40
А, теперь понял что ты имеешь ввиду.
Конечно, DPS и DIA просматривают HWIDы в этих секциях и учитывают для какой системы драйверы с этими HWIDами рассчитаны.
Я думал что ты считал информацию в секции Manufacturer не достаточной для определения совместимой системы и предлагал выяснять совместимость с ОС каким-то образом анализируя секции с HWID'ами.
Я вспомнил, пересмотрев еще раз структуру БД. Однако как то при такой структуре БД несколько избыточна
PCI\VEN_1039&DEV_0900 D\L\SS2\ netoem.inf IBM 02/22/2006,2.0.1039.1190 Integrated 10/100 Ethernet Controller
PCI\VEN_1039&DEV_0900 D\\L\\SS2\\ netoem.inf IBM.NT.5.1 02/22/2006,2.0.1039.1190 Integrated 10/100 Ethernet Controller
PCI\VEN_1039&DEV_0900 D\\L\\SS2\\ netoem.inf SIS 02/22/2006,2.0.1039.1190 SiS 900-Based PCI Fast Ethernet Adapter
PCI\VEN_1039&DEV_0900 D\\L\\SS2\\ netoem.inf SIS.NT.5.1 02/22/2006,2.0.1039.1190 SiS 900-Based PCI Fast Ethernet Adapter
PCI\VEN_1039&DEV_0900 D\\L\\SS2\\ netoem.inf SONY 02/22/2006,2.0.1039.1190 SiS 900 PCI Fast Ethernet Adapter
PCI\VEN_1039&DEV_0900 D\\L\\SS2\\ netoem.inf SONY.NT.5.1 02/22/2006,2.0.1039.1190 SiS 900 PCI Fast Ethernet Adapter
Не находишь? Так было бы лучше
PCI\VEN_1039&DEV_0900 D\L\SS2\ netoem.inf IBM,SIS,SONY,NT.5.1 02/22/2006,2.0.1039.1190 Integrated 10/100 Ethernet Controller
Но это уже скорее к romeo91
BadPointer
01-11-2010, 00:01
Возможно, но такая структура позволяет DPS быстрее подбирать драйвер за счет использования hash-таблиц. Из-за ограниченности JavaScript, hash-таблицы ускоряют подбор драйвера всего в жалкие 4 раза, хотя могли бы ускорить как минимум в 40 раз.
Возможно, но такая структура позволяет DPS быстрее подбирать драйвер за счет использования hash-таблиц. Из-за ограниченности JavaScript, hash-таблицы ускоряют подбор драйвера всего в жалкие 4 раза, хотя могли бы ускорить как минимум в 40 раз. »
Возможно, тут к сожалению я уже слабо разбираюсь :blush2:
Комсомолец
01-11-2010, 01:06
BadPointer, но я тогда подключился к проекту из-за лицензии GPL » почему такая упертость в GPL? не всё закрытое-зло.
BadPointer
01-11-2010, 01:35
По моему убеждению, закрытое(пусть и бесплатное) ПО тормозит развитие. Успешные проекты закрывают свой код и часто пользуются своим положением, вместо того чтобы делится своим опытом в интересах всего сообщества. Совершенствование такого ПО зависит только от узкого круга разработчиков и у них со временем могут новые иссякнуть идеи или они могут потерять мотивацию и некому будет продолжить, так как нет исходников.
GPL способствует свободному обмену кода и опыта и не позволяет безвозвратный уход кода в закрытые проекты.
Например название секции "SN.NTamd64.6.1" означает что драйвер предназначен для 64-разрядной("NTamd64") Windows 7("6.1").
DPS полностью полагается на эту информацию при подборе драйвера. »
К тому же иногда требуются драйвера, выпущенные до выхода в свет win vista/7 и никаких суфиксов типа NTx86.5.1 нет, что подразумевало "драйвер для всех систем NT". »
Если этой информации нет, то DPS делает вывод что драйверы предназначены для XP. Windows 7 и Vista(после сервиспака) требует наличие этой информации в названии секции и она уже не является опциональной как это было в Windows XP. »
Ну это не всегда правильно...
Вот пример, того же драйвера
[Manufacturer]
%MfgName%=Realtek,NTamd64
или
[Manufacturer]
%MfgName% = AzaliaManufacturerID, NTamd64
Т.е я так понимаю DPS решит что это для XP x64 ? Но эти драйверы подходят и для Vista и 7. Остальное на что полагаться DPS это имя файла пакета драйверов. Но и имя могут изменить c DP_Audio_wnt6-x64_1007, например на DP_Sound.7z/
Не находишь? Так было бы лучше
PCIVEN_1039&DEV_0900 DLSS2 netoem.inf IBM,SIS,SONY,NT.5.1 02/22/2006,2.0.1039.1190 Integrated 10/100 Ethernet Controller
Но это уже скорее к romeo91 »
Избыточность не проблема...
Мало кто в базу смотрит - информация служебная. Плюс в текущей версии базы секция manufacturer уже разделена - это сделано при построении базы. И мне не потребуются дополнительные итерации при поиске совместимых драйверов при старте. Возможно это будет удобно, если менять структуры базы данных вообще...
GPL способствует свободному обмену кода и опыта и не позволяет безвозвратный уход кода в закрытые проекты. »
Но многие проекты видя, что у них не хватает времени, уже после предоставляют свой код.
Да и каждая новая версия вроде может менять свою лицензию...
Вот некоторые компоненты, которые могут быть включены в будущие версии DIA. Правда каждый надо дорабатывать до ума...
Во вложении скомпилированные exeшники. Работать вроде как должны без всяких добавок.
Если поискать, то в инете можно много всего найти, но надо стабильные разработки. Многие используют сабсклассинг, а эта вещь если сделана криво, то очень нестабильная...
romeo91, А есть какой нибудь Навороченный LISTVIEW ???
Мне кажется кнопочки все таки не ахти. Есть что нибудь по существенее..
А есть какой нибудь Навороченный LISTVIEW ??? »
Вот тут (http://www.planet-source-code.com/vb/scripts/BrowseCategoryOrSearchResults.asp?lngWId=1&grpCategories=&txtMaxNumberOfEntriesPerPage=20&optSort=&chkThoroughSearch=&blnTopCode=False&blnNewestCode=False&blnAuthorSearch=False&lngAuthorId=&strAuthorName=&blnResetAllVariables=&blnEditCode=False&mblnIsSuperAdminAccessOn=False&intFirstRecordOnPage=61&intLastRecordOnPage=80&intMaxNumberOfEntriesPerPage=20&intLastRecordInRecordset=425&chkCodeTypeZip=&chkCodeDifficulty=&chkCodeTypeText=&chkCodeTypeArticle=&chkCode3rdPartyReview=&txtCriteria=listview&cmdGoToPage=1&lngMaxNumberOfEntriesPerPage=20) смотри, к каждому коду есть скриншот.
А так у меня и текущий использующийся имеет множество возможностей... :)
sosed213
02-11-2010, 07:40
Всем здравствуйте!
Я тоже пишу программу по установки драйверов, и имея небольшой опыт в этой области, хотел бы предложить одну полезную функцию под названием "Система подтверждения вендора".
Например, случается так, что для устройства PCI\VEN_8086&DEV_100E&SUBSYS_002E8086 (это Сетевая карта Intel(R) PRO/1000 MT) необходимо установить драйвер, а у нас нет подходящего драйвера, чтобы прям вплоть до SUBSYS было совпадение.
В этом случае программа для установки драйверов предлагает немного другой драйвер:
[Intel.NTx86.6.0.1]
%E100E.DeviceDesc% = E100ECopper, PCI\VEN_8086&DEV_100E&SUBSYS_001E8086
Здесь уже решение стоит за человеком, устанавливать его или нет.
Но если бы человек не стал бы его устанавливать, за не имением лучшего, то собственно и грош цена моему сообщению.
Ну так вот, человек его установил и все заработало, и забыл про это. Но программа записала это действие в свою базу и ждет, когда человек подтвердит что это вендор подошел к этому устройству, и к этой операционной системе.
В следующий раз, в этой же ситуации программа будет на 100% уверена, что ранее подтвержденный вендор подходит для данного устройства и для данной версии ОС.
Информацию о подтвержденных вендорах необходимо заносить в отдельные Базы Данных, чтобы при переиндексации пакетов драйверов эти данные не потерялись.
Также надо придумать общий стандарт выходного файла, чтобы этой, очень полезной, информацией можно было обмениваться между разработчиков программного обеспечения по установки драйверов.
Например:
;#Vendor #CompatibleVendor
PCI\VEN_8086&DEV_100E&SUBSYS_002E8086 PCI\VEN_8086&DEV_100E&SUBSYS_001E8086
tsosed213, единственная проблема: прога путешествует по компьютеру на двд-диске (
BadPointer
02-11-2010, 09:29
sosed213, в этом нет необходимости. В файлах inf есть вся информация о том какие HWID'ы драйвер поддерживает. Само устройство выдает список подходящих и совметстимых HWID'ов в порядке ухудшения совместимости. Если точное соотвесвие между этими HWID'ами не выявлено, то драйверы точно не подходят и установщик Windows(он же devcon) откажется ставить, хотя, например, DPInst имеет привычку ставить драйвер про запас, хотя устройство к нему не обнаружено в системе. Так как DPInst'у нельзя указать что именно нужно ставить(ему скармливается вся папка, а не HWID), DPInst иногда устанавливал драйверы которые не заказывались.
Прога должна использовать повсемесно полные HWID'ы и опрашивать устройства о всех HWID'ах. DIA по умолчанию создает индексы с урезанными HWIDами и только недавно стал опрашивать устройсво о совместимых HWIDах. DPS уже давно использует только полные HWIDы и опрашивает устройства.
sosed213
02-11-2010, 10:36
kpuk, да это действительно проблема. Я просто сужу по себе, пользуюсь USB-HDD диском.
Комсомолец
03-11-2010, 17:08
romeo91, я понял, какого переключателя нехватает. Нужно сделать включение\выключение группировок пакетов по версии ОС. Пример: не нашлись в 7\64 дрова на звук, переключили в полное отображение всех пакетов и раз-в пакетет для 7\32 они оказались.
Реально такое организовать?
Реально такое организовать? »
в принципе реально, но пока не представил как это сделать корректно. обдумать надо
в принципе реально, но пока не представил как это сделать корректно. обдумать надо »
Провести индексацию пакетов, потом записать все в базу. А потом от базы отпрыгивать и решать какой пакет для какой ОСИ.
Вообще надо провести опрос, скока в процентах Людей пользуются разными ОСЯМИ и 64 разрядными, чтобы понять масштабы проблемы!!
Комсомолец
04-11-2010, 00:48
SOLON7, по-моему не то. надо чтобы были вкладки по осям. как есть в текущей версии. но была кнопка "убрать сортировку", после нажатия которой все пакеты отобразятся в одной вкладке.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC