[Win7x64]Программное отключение и включение устройств

Andbar

Какое API следует использовать для отключения и включения конкретного устройства (тех же действий, которые можно вызвать из диспетчера устройств, соответственно)?
Пытался использовать какую-то старую консольную утилиту (найденную на мелкософтном сайте но она не работает под Win7 (точнее, устройства и их свойства перечисляет, но любые действия отказывается делать).
Длинное описание того, зачем мне это нужно:
После установки винта из "зелёной" серии рядом с системным, у меня начались проблемы при выходе компа из ждущего режима. Винт просто не успевал запуститься за то время, пока система просыпалась. По идее, SATA-шина должна нормально воспринимать хотсвоп, однако почему-то винт в системе не появлялся. И не похоже, чтобы производитель материнки спешил выпустить обновление биоса, которое бы исправило проблему. Опытным путём было установлено, что удаление контроллера SATA-канала, на котором висит хард, из диспетчера устройств и дальнейшее обновление устройств, а также выключение и включение этого устройства приводит к обнаружению винта, так что вполне возможно, что не биос виноват в проблеме, а винда. Дрова от производителя матери ставил - не помогло. А лазить в диспетчер устройств почти каждый день (комп спит с ночи до того, как я прихожу с работы) уже надоело.
Соответственно, нарисовалась проблема в том, чтобы программно отключить определённый девайс и включить заново самым простым способом, чтобы делать это по выходу из сна.

Dasar

Пытался использовать какую-то старую консольную утилиту (найденную на мелкософтном сайте но она не работает под Win7 (точнее, устройства и их свойства перечисляет, но любые действия отказывается делать).
похоже на WMI, через него и стоит попробовать

Andbar

похоже на WMI, через него и стоит попробовать
я думал, WMI только различную информацию предоставляет. Через него ещё можно отключать/включать устройства?

Dasar

да, в WMI есть еще методы
первая попавшаяся ссылка http://msdn.microsoft.com/en-us/library/aa384832%28v=vs.85%2...
> Через него ещё можно отключать/включать устройства?
скорее всего - да.
поищи WMI-браузер, по современнее, и посмотри что он выдает

Andbar

в общем, пока научился получать экземпляр Win32_IDEController, соответствующий sata-каналу, на котором висит хард. У него есть два метода - Reset и SetPowerState, про оба в MSDN написано, что они не реализованы, а все свойства - readonly, т.е. посмотреть его можно, но остановить - нет. Или я что-то неправильно понял?

Dasar

WMI - по смыслу, это обычные классы
WIN32_IDEController - это обобщенный абстрактный класс.
в реальности вместо него будет какой-то более конкретный класс, который уже может реализовать данные методы
как-то так

Andbar

это понятно. Я пытался вызывать эти методы, но получал ошибку "This method is not implemented in any class"
Посмотрел немного список Public Device Installation Functions из SetupAPI, научился даже перечислять какие-то устройства, но среди выводящегося списка нужного не нашлось... видимо, неправильно ищу.
Оставить комментарий
Имя или ник:
Комментарий: