Можно ли автоматизировать смену драйвера в Windows для периферийного устройства Plug & Play?

584
Gnoupi

Можно ли автоматизировать смену драйвера для того же периферийного устройства под Windows? Как правило, для переключения между двумя. (Я говорю о типе драйвера, который обычно не требует перезагрузки компьютера).

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

Для более подробной информации, речь идет о «геймпаде Xbox360 для Windows» (или что-то в этом роде). Базовый драйвер хорош для новых игр, но он неправильно обрабатывает старые (некоторые проблемы с осями и вибрациями). Модифицированный драйвер заставляет его вести себя как классический контроллер, но в новых играх он работает некорректно (как правило, с использованием новой версии dxinput, связанной с «Играми для Windows»). Тем не менее, это не вопрос, специфичный для этого геймпада, я вообще спрашиваю об автоматизации этой смены драйверов.

В настоящее время я использую Windows XP, поэтому мой вопрос в основном об этом, но меня также интересует та же проблема для более поздних версий (Windows 7, скорее всего).

Я не совсем уверен, возможно ли это, но если у кого-то есть идея, я спрашиваю.


Изменить: После того, как я задал этот вопрос, я не был в состоянии дать ему время снова, например, чтобы попробовать то, что предложил harrymc (и теперь шарлатанство). Поэтому я прошу прощения за отсутствие обратной связи, но я исправлю это позже.

2

3 ответа на вопрос

1
harrymc

См. Утилиту Driver Loader по адресу http://www.osronline.com/article.cfm?article=157 .
Это может решить вашу проблему.

Если вам понравился мой ответ, как насчет голосования? harrymc 14 лет назад 0
ооо, застрял за голоса? вот +1 за хорошую находку :) 14 лет назад 0
Большое спасибо за ваше внимание, Молли. harrymc 14 лет назад 0
1
quack quixote

Интересный вопрос. К сожалению, это не полный ответ, поскольку я несколько лет не занимался разработкой драйверов для Windows. Надеюсь, это поможет вам встать на правильный путь.

Быстрый поиск нашел эту тему на OSRonline. Он старый, но довольно прямой:

Вы можете использовать диспетчер устройств и отключить устройство для выгрузки, а также включить возможность перезагрузки, как было сказано другими здесь. Кстати, драйвер будет выгружен, только если каждый экземпляр устройства отключен.

Также вы можете отключить / включить программно. Посмотрите на пример devcon в последнем DDK, чтобы увидеть, как это делается. Фактически, пример devcon - это, по сути, диспетчер устройств командной строки с исходным кодом, в нем содержится много полезной информации.

Если вам удастся найти утилиту devcon (кажется, что она доступна в этой статье базы знаний ; я не уверен, что она по-прежнему доступна в текущем Windows DDK), вы можете запустить пакетный скрипт, чтобы отключить устройства PnP и драйверы подкачки. Такой сценарий может потребоваться загрузить в реестре, чтобы поменять драйверы, но devcon должен позволить сценарию выполнить отключение / включение.

0

правильным способом был бы другой аппаратный профиль, но это не совсем о «удобстве» :)

Я использую этот метод для экспериментов с различными драйверами или конфигурациями служб, но, конечно, переключение профилей требует перезагрузки.

Да, так что я думаю, что такой метод был бы хорош в случае смены нескольких драйверов, для которых в любом случае необходима перезагрузка. К сожалению, это не совсем соответствует смене драйверов для одного периферийного устройства, так как это, в конечном итоге, займет больше времени. Gnoupi 14 лет назад 0