Я ищу программный API для перезапуска любого устройства, которое позволяет включать/отключать в диспетчере устройств,
такие как аудиоустройства и сетевой адаптер
Я ищу программный API для перезапуска любого устройства, которое позволяет включать/отключать в диспетчере устройств,
такие как аудиоустройства и сетевой адаптер
Вам придется использовать SetupApi / API ConfigManager. Но имейте в виду, что под x64 вы app. также должен быть 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 (не знаю, разрешает ли это лицензия) и включать/отключать устройства с его помощью?
У меня нет опыта работы с этим, но я думаю, что вы можете использовать DeviceIoControl API.