Как вы запрашиваете Windows, чтобы закрутить жесткий диск программно? Есть ли какая-либо функция пользовательского режима, которую я могу вызвать (или функция режима ядра для вызова или IRP для отправки), чтобы это произошло?
Я пытался создать программу для отправки команды ATA STANDBY непосредственно на жесткий диск, но проблема в том, что этот метод не информирует систему и, следовательно, всякий раз, когда система нуждается в сбросе. кеш, он снова разбудит жесткий диск. Как мне сказать system , чтобы сделать это для меня? (Если система сделает это, она сохранит кэш и «разгрузит» данные, когда станет слишком большой, вместо записи небольшими шагами.)
(Весь смысл в том, чтобы сделать это напрямую , , а не , изменив тайм-аут замедления в масштабе всей системы на 1-секундный период и ожидая вращения диска вниз. Мне нужна функция, которую я могу вызвать в определенный момент времени, когда использую свой ноутбук, а не что-то общее, что не подходит в 95% случаев.)
Как далеко я дошел:
У меня такое ощущение, что PoCallDriver и IRP_MJ_POWER могут быть полезны для этого, но у меня очень ограниченный опыт программирования в режиме ядра (и практически нулевой опыт работы с драйверами), поэтому я действительно понятия не имею.
Пожалуйста, прочитайте:
Обновление
Люди, кажется, неоднократно упоминают о решениях, которые я уже упоминал, не работают. Как я уже говорил выше, я уже пробовал"хакерских" решений, которые изменяют значение тайм-аута или которые напрямую запускают команду привода, и причина Я задал этот вопрос вот что те не делали то, что мне было нужно. Пожалуйста, прочитайте весь вопрос (особенно параграфы 2 и 3), прежде чем повторять то, что я уже сказал в ваших ответах - это вся сложность в вопросе .
Подробнее:
Я нашел этот документ об обнаружении простоя диска полезным, но моего ответа там нет. В нем говорится, что Power Manager отправляет IRP драйверу диска (поэтому я подозреваю, что IRP_MJ_POWER
будет полезным), но я понятия не имею, как использовать информацию.