Как отключить системное устройство?

Есть ли способ отключить системное устройство от С#.NET.

В основном эмуляция, когда вы переходите в диспетчер устройств и отключите устройство таким образом?

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

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

Мне нужно работать в Windows XP и Vista (x86 и x64). Я посмотрел на то, что называется "DevCon", но, похоже, он не работает на Vista x64.

Спасибо.

Для ответа см. здесь: Как отключить системное устройство программно?

Ответ 1

В этой статье CodeProject есть действительно отличный класс С# для выполнения этого:

http://www.codeproject.com/KB/cs/HardwareHelper.aspx

В конце концов вы просто вызываете вызов, например:

HH_Lib hwh = new HH_Lib();

hwh.SetDeviceState("MyDevice", /*Enable*/ true);
hwh.SetDeviceState("MyDevice", /*Disable*/ false);

alt text

Ответ 2

Чтобы ответить Mel Green, аппаратная вспомогательная библиотека использует interop для вызова Windows API (setupapi), в частности метода SetupDiSetClassInstallParams. Конечно, здесь есть другие вызовы, которые используются для поиска деталей устройства и т.д.

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

Для получения дополнительной информации см. http://www.pinvoke.net (и для конкретного вызова: http://pinvoke.net/default.aspx/setupapi.SetupDiSetClassInstallParam)

Ответ 3

Я знаю, что это старый вопрос, но я столкнулся с ним с той же проблемой. Чтобы решить эту проблему, мне пришлось использовать новый DevCon, доступный в TechNet wiki. Статья CodeProject была полезной, но в конце было проще просто положиться на обновленный DevCon. К сожалению, он доступен только в Windows Driver Kit, который превышает 600 мб.