Цитата evgen_b:
все-таки с ошибками индексируется. »
|
Конечно, с ошибками. Над индексатором давно никто не работал, и те ошибки, что ты нашел являются относительно малозначительными по сравнению с известными мне проблемами.
Цитата evgen_b:
в нем есть inf-файл вместе с каталог-файлом: »
|
DPS все равно неправильно ищет cat файл. Нужно искать тот файл, который указан в inf файле, а не то как это делается в DPS.
SDI делает это правильно и, кроме того, извлекает из cat файлов информацию о том для какой ОС рассчитан драйвер.
Цитата evgen_b:
В общем продолжаю ковырять dev_parser.vbs, сам хочу немножко разобраться, лишь бы голову себе не сломать. Пока удалось вернуть в работу option explicit и обернуть вычисление индексов в класс (без фанатизма), чтобы хоть немножко структурировать код. »
|
Дорабатывать индексацию здесь довольно сложно, так как она сделана на регулярных выражениях, а они и так очень сложны для восприятия.
Код:
![Выделить весь код](images/misc/selectcode.png)
r_identS = "([^; \t\r\n][^;\t\r\n]*[^; \t\r\n])"
r_str = "(?:""([^\r\n""]*)""|([^\r\n;]*))"
r_strORind = "(?:%([^%\r\n]+)%|""([^\r\n]+)""|([^;=\r\n]+))"
regex_mandef = r_beg & "[^;\r\n=]*=[ \t]*([^;\r\n]*)"
regex_devdef = r_beg & r_strORind & "[^=\r\n]*=[^\r\n,]*" & "([^;\r\n]*)"
regex_sectnames = "(?:,?[ \t]*""([^""\r\n]+)""|,?[ \t]*([^,\t\r\n;]+[^,\t\r\n ;]))"
Исправление проблем в них сделает их еще длиннее, сложнее и гораздо медленнее.
Я не думаю, что это стоит затраченных усилий. Проще все переписать с нуля, как я уже сделал с SDI.
В SDI исходный код легко читается и индексация длится всего 19 секунд, в то время как у DPS почти 5 минут. Причем сам формат у DPS уже давно устарел.
Вот пример того как выглядят индексы у SDI. Обрати внимание на пустую секцию [nvidia_sys.ntamd64.6.1], которая говорит о том что этот драйвер не подходит для Семерки и выше. В индексах у DPS информации о пустых секциях нет.
читать дальше »
Код:
![Выделить весь код](images/misc/selectcode.png)
nVidia\6x64\STRICT\SMBUS_4.7.4\nfsmb64.inf (2429 bytes)
date 29/7/2009
version 4.7.4.0
classguid {4D36E97D-E325-11CE-BFC1-08002BE10318}
class System
provider NVIDIA
catalogfile nfsmb64.cat
2:5.1,2:5.2,2:6.0
{NVIDIA}
[nvidia_sys]
[nvidia_sys.ntamd64.5.1]
PCI\VEN_10DE&DEV_0264 NO_DRV NVIDIA nForce System Management
feature:FF no_drv
PCI\VEN_10DE&DEV_0368 NO_DRV NVIDIA nForce System Management
feature:FF no_drv
PCI\VEN_10DE&DEV_03EB NO_DRV NVIDIA nForce System Management
feature:FF no_drv
PCI\VEN_10DE&DEV_07D8 NO_DRV NVIDIA nForce System Management
feature:FF no_drv
PCI\VEN_10DE&DEV_0752 NO_DRV NVIDIA nForce System Management
feature:FF no_drv
PCI\VEN_10DE&DEV_0AA2 NO_DRV NVIDIA nForce System Management
feature:FF no_drv
[nvidia_sys.ntamd64.6.0]
PCI\VEN_10DE&DEV_0264 NO_DRV NVIDIA nForce System Management
feature:FF no_drv
PCI\VEN_10DE&DEV_0368 NO_DRV NVIDIA nForce System Management
feature:FF no_drv
PCI\VEN_10DE&DEV_03EB NO_DRV NVIDIA nForce System Management
feature:FF no_drv
PCI\VEN_10DE&DEV_07D8 NO_DRV NVIDIA nForce System Management
feature:FF no_drv
PCI\VEN_10DE&DEV_0752 NO_DRV NVIDIA nForce System Management
feature:FF no_drv
PCI\VEN_10DE&DEV_0AA2 NO_DRV NVIDIA nForce System Management
feature:FF no_drv
[nvidia_sys.ntamd64.6.1]
Decors:
plain 0
ntamd64.5.1 6
ntamd64.6.0 6
ntamd64.6.1 0
Цитата evgen_b:
Осталось полноценную командную строку, обработку ошибок тоже пока совсем убрал, и может счетчики производительности переписать. Хочу полноценную консольную версию с командной строкой. Доделаю - поделюсь, может кому пригодится. »
|
У SDI есть консольный режим.
Я бы даже не рекомендовал запускать установку драйверов в DPS в автоматическом режиме, так на одно устройство предлагается сразу несколько драйверов(со звуком такое чаще всего происходит) и DPS попытается поставить всех их сразу. Также зачастую устанавливаются драйверы татчпадов на десктопы.