[Win7x64]Программное отключение и включение устройств
Пытался использовать какую-то старую консольную утилиту (найденную на мелкософтном сайте но она не работает под Win7 (точнее, устройства и их свойства перечисляет, но любые действия отказывается делать).похоже на WMI, через него и стоит попробовать
похоже на WMI, через него и стоит попробоватья думал, WMI только различную информацию предоставляет. Через него ещё можно отключать/включать устройства?
первая попавшаяся ссылка http://msdn.microsoft.com/en-us/library/aa384832%28v=vs.85%2...
> Через него ещё можно отключать/включать устройства?
скорее всего - да.
поищи WMI-браузер, по современнее, и посмотри что он выдает
в общем, пока научился получать экземпляр Win32_IDEController, соответствующий sata-каналу, на котором висит хард. У него есть два метода - Reset и SetPowerState, про оба в MSDN написано, что они не реализованы, а все свойства - readonly, т.е. посмотреть его можно, но остановить - нет. Или я что-то неправильно понял?
WIN32_IDEController - это обобщенный абстрактный класс.
в реальности вместо него будет какой-то более конкретный класс, который уже может реализовать данные методы
как-то так
Посмотрел немного список Public Device Installation Functions из SetupAPI, научился даже перечислять какие-то устройства, но среди выводящегося списка нужного не нашлось... видимо, неправильно ищу.
http://msdn.microsoft.com/en-us/library/ff553567%28v=VS.85%2...
http://www.codeproject.com/KB/cs/HardwareHelper.aspx
http://stackoverflow.com/questions/1438371/win32-api-functio...
Оставить комментарий
Andbar
Какое API следует использовать для отключения и включения конкретного устройства (тех же действий, которые можно вызвать из диспетчера устройств, соответственно)?Пытался использовать какую-то старую консольную утилиту (найденную на мелкософтном сайте но она не работает под Win7 (точнее, устройства и их свойства перечисляет, но любые действия отказывается делать).
Длинное описание того, зачем мне это нужно:
После установки винта из "зелёной" серии рядом с системным, у меня начались проблемы при выходе компа из ждущего режима. Винт просто не успевал запуститься за то время, пока система просыпалась. По идее, SATA-шина должна нормально воспринимать хотсвоп, однако почему-то винт в системе не появлялся. И не похоже, чтобы производитель материнки спешил выпустить обновление биоса, которое бы исправило проблему. Опытным путём было установлено, что удаление контроллера SATA-канала, на котором висит хард, из диспетчера устройств и дальнейшее обновление устройств, а также выключение и включение этого устройства приводит к обнаружению винта, так что вполне возможно, что не биос виноват в проблеме, а винда. Дрова от производителя матери ставил - не помогло. А лазить в диспетчер устройств почти каждый день (комп спит с ночи до того, как я прихожу с работы) уже надоело.
Соответственно, нарисовалась проблема в том, чтобы программно отключить определённый девайс и включить заново самым простым способом, чтобы делать это по выходу из сна.