Сброс устройства в диспетчере устройств - PullRequest
2 голосов
/ 01 ноября 2010

Я ищу программный API для перезапуска любого устройства, которое позволяет включать / отключать в диспетчере устройств,

, например, аудиоустройства и сетевой адаптер

Ответы [ 2 ]

4 голосов
/ 01 ноября 2010

Вам нужно будет использовать SetupApi / ConfigManager API .Но имейте в виду, что под x64 вы приложение.также должно быть x64 для включения / выключения устройства (поэтому вы не можете сделать это прямо в Delphi прямо сейчас - сначала я подумал, что это проблема с перенаправлением файлов / реестра для x86-приложения под x64, но это не помогло).Перечень устройств работает нормально.В одной статье на MSDN было что-то об этом, но я не могу сейчас найти это.Я сделал приложение FP / Lazarus x64 для включения / выключения устройств под ОС x64.

Вы можете скачать WDK и найти исходный код DevCon (C:\ WinDDK \ 7600.16385.1 \ SRC \ Setup \ Devcon).В cmds.cpp есть функция ControlCallback, которая включает / отключает устройство с помощью SetupApi).Но сначала вам нужно перечислить классы устройства (по GUID или ClassName), а затем перечислить экземпляры устройства или открыть устройство по строке DeviceInstanceId.Это на C, но должно быть легко узнать, как использовать этот API.

Не уверен, что вы делаете, но, возможно, будет проще использовать этот devcon.exe (не знаю, разрешает ли это лицензия) и включить / отключить устройства им?

0 голосов
/ 01 ноября 2010

У меня нет опыта, но я думаю, что вы можете использовать DeviceIoControl API.

...