|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
01.07.2013, 15:21 | #1 |
Пользователь
Регистрация: 23.12.2009
Сообщений: 56
|
Как программно установить драйвер
Доброго времени суток!
Не понимаю, теряюсь в догадках, как установить программно драйвер. Итак, есть пакет драйверов от FTDI для интерфейсной микросхемы (мост USB - RS232/485). Он представляет собой набор .sys и .inf файлов. Эти драйвера, путем модификации .inf файла, можно настраивать под нужные скорости (в нем выставляются множители частот) Можно получить таким образом скорости до 12МБит по RS485. Для модификации этого файла есть "тюнер" специальный, от FTDI, в документации также есть подробные описания этих множителей, так что тюнер написать можно. Проблема возникает, когда нужно довольно часто менять скорость порта. Каждый раз модифицировать .inf файлы и переустанавливать вручную драйвер очень неудобно, тем более для целевого пользователя. Возможно ли программно устанавливать драйвер в данном случае?
Nostra Sunt
|
01.07.2013, 22:46 | #2 |
Участник клуба
Регистрация: 12.09.2012
Сообщений: 1,030
|
А может просто перезагрузить компьютер?
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби. |
01.07.2013, 23:01 | #3 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
SetupAPI вас спасет, там видел установку драйверов из inf.
Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
01.07.2013, 23:28 | #4 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,430
|
|
02.07.2013, 05:24 | #5 | |
Просветитель
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,833
|
Цитата:
Код:
Если же нужно полностью программное управление, смотрим в MSDN функции, начинающиеся на SetupDi, типа SetupDiOpenDeviceInterfaceRegKey. Программно этими функциями не пользовался, больше подсказать не могу. Возможно, в Windows Vista и выше команда установки в реестре уже выглядит по-другому.
В разработке: воспроизводственный контур ИТ
|
|
09.07.2013, 16:10 | #6 |
Пользователь
Регистрация: 23.12.2009
Сообщений: 56
|
Как говорится, "все болит, ничего не помогает".... Все перечисленные способы, приведенные здесь, дают просто тупой молчок системы. Все отрабатывает, но никаких сообщений никто не выдает, а изменения в драйверах не происходят. Пробую посредством функций типа SetupDi - выдает "Range Check"
Код:
Nostra Sunt
|
09.07.2013, 17:05 | #7 |
Просветитель
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,833
|
Если честно, представленный здесь код мне представляется бредом.
Нужно или разобрать логику inf-файла и генерировать соответствующие записи программно, или разбирать inf-файл, меняя параметры в нем по надобности, а потом ставить либо вызовом rundll32, либо написать его собственный аналог, начав, как понимаю, с SetupGetInfInformation, которая и разбирает inf-файл, превращая его строки в структуры, нужные функциям API. Модуль SetupApi, кстати, есть в JEDI (JVCL). Чисто технически сделан весьма грамотно, а вот загрузка Setup API на лету мне кажется решением через задницу весьма спорной. Тем не менее, думаю, сам модуль вполне рабочий. Добавлено: о, режим связывания можно менять условной директивой SETUPAPI_LINKONREQUEST. Беру свои слова про задницу назад. Поскольку сейчас поддержка Win9x не нужна и имеет смысл только юникодный API, присутствующий во всех версиях Windows, директива SETUPAPI_LINKONREQUEST должна быть всегда отключена.
В разработке: воспроизводственный контур ИТ
Последний раз редактировалось Vapaamies; 09.07.2013 в 17:44. |
13.08.2013, 09:21 | #8 |
Пользователь
Регистрация: 23.12.2009
Сообщений: 56
|
Добрый день. Отпишусь, что решил через rundll32, но перед этим надо девайс вытащить из USB, тогда драйвера переустанавливаются на новые. Похоже, проблема программной переустановки драйверов "налету" через JEDI - это несовместимость 64 и 32-битных Windows-систем с приложениями другой битности У меня Win7 64bit, а Дельфи компилит 32-разрядные приложения. Соответственно под 32 заработало, под 64 - нет. Если логически рассуждать, то выходит странновато, т.к. Setupapi же должен быть подставлен виндой тоже рабочий (из system32 либо sysWOW64, в зависимости от разрядности приложения) И вообще не понятно, почему именно с драйверами не выходит такая процедура..
Nostra Sunt
|
13.08.2013, 12:27 | #9 |
Участник клуба
Регистрация: 12.09.2012
Сообщений: 1,030
|
После установки драйвера обязательно перезапустите компьютер, так как иначе система просто его не распознаст.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби. |
13.08.2013, 12:55 | #10 | |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,430
|
Цитата:
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как установить настраиваемые поля программно в MS Office Word? | Slap | Microsoft Office Word | 1 | 10.12.2012 00:35 |
Как программно определить установлен ли драйвер. | avd | Общие вопросы Delphi | 3 | 07.09.2012 13:11 |
Как программно установить службу в windows? | KiL0z | Общие вопросы Delphi | 2 | 10.05.2011 02:29 |
Как установить драйвер (имеется только sys файл)? | Stilet | Компьютерное железо | 7 | 05.08.2009 17:48 |