Можно ли честным системным способом заставить нужный мне винчестер остановиться (standby), и чтобы он становился для системы недоступным. И, соотвествеенно, когда понадобится включать его заново.
На сколько я помню, после команды sleep (а может standby, уже не помню) шпиндель останавливается, а головки паркуются до первого обращения к нему, либо по сигналу ресет. Вопрос в том, как грамотно отобрать у системы заданное устройство (допустим Primary Master) и послать ему этот код sleep или standby
выключить диск: MSDN -> Device Class Power Management Reference Specification -> Storage and Related Peripherals" -> chapter 4 -> power management requirements for disk drives блокировать чтобы вдруг не включился FSCTL_LOCK_VOLUME FSCTL_DISMOUNT_VOLUME (и не завершать процесс, а то разблоикруется
порты ввода/вывода лучше не трогать по нескольким причинам. 1) растет кол-во SCSI/RAID и всякой прочей нечисти, включая USB->HDD, управляемых своими драйврами, о которых знает система, но не знаешь ты 2) попытка управления одним HDD из двух драйверов (его родного драйвера и твоего) может очень сильно аукнуться, особенно если родной драйер не подозревает, что в системе есть кто-то еще. если ты хочешь передавать винту ATA-команды, делай это через SCSIOP_ATA_PASSTHROUGH (CCh) никто же не запрещает причем с прикладного уровня, но с правами админа. если хочешь, могу скинуть программу, которая именно этим и занимается.
То ли я совсем MSDN'ом пользоваться не умею, то ли у меня не то (2003 года, от Visual Studio Net), но таких глав я не нашел. Гуглил по всему нету, и все равно не нашел :-(
Солидарен. Видать kaspersky что-то попутал. Очень жаль, хотелось бы поэкспериментировать. У меня 3 винта, два из них для архивов. Обращаюсь к ним редко, но шумят они постоянно.