Как вы попросите Windows программно замедлить работу жесткого диска? Есть ли какая-либо функция пользовательского режима, которую я могу вызвать (или функцию режима ядра для вызова или IRP для отправки), чтобы это произошло?
Я пытался создать программу для отправки команды ATA STANDBY непосредственно на жесткий диск, но проблема в том, что этот метод не информирует систему, и, следовательно, всякий раз, когда системе требуется очистить кеш, она снова разбудит жесткий диск. Как мне сказать системе сделать это за меня? (Если система сделает это, она сохранит кэш и «разорвет» данные, когда они станут слишком большими, вместо того, чтобы писать маленькими приращениями.)
(Весь смысл здесь в том, чтобы сделать это напрямую, не путем изменения общесистемного тайм-аута замедления на 1-секундный период и ожидания, пока диск замедлится. . Мне нужна функция, которую я могу вызвать в определенный момент времени, когда я использую свой ноутбук, а не что-то общее, не подходящее для 95% ситуаций.)
Как далеко я зашел:
У меня такое ощущение, что PoCallDriver и IRP_MJ_POWER может быть полезным для этого, но у меня очень ограниченный опыт программирования в режиме ядра (и почти нулевой опыт работы с драйверами), поэтому я действительно понятия не имею.
Прочтите:
Обновление:
Кажется, что люди постоянно упоминают решения, которые я уже упоминал, не работают. Как я уже сказал выше, я уже пробовал "хакерские" решения, которые изменяют значение тайм-аута или напрямую выдают команду накопителю, и всю причину я спросил вопрос здесь в том, что они не сделали то, что мне нужно. Пожалуйста прочтите весь вопрос (особенно параграфы 2 и 3), прежде чем повторять то, что я уже сказал в ваших ответах - в этом вся трудность в вопросе.
Больше информации:
Я нашел этот документ об обнаружении простоя диска быть полезным, но моего ответа там нет. В нем указано, что Power Manager отправляет IRP драйверу диска (поэтому я подозреваю, что IRP_MJ_POWER
будет полезен), но я понятия не имею, как использовать эту информацию.
GetDevicePowerState
, но нетSetDevicePowerState
, что означает, что это либо невозможно, либо требуется недокументированный API. - person Gabe   schedule 20.03.2011hard disk burst ignore time
. Эта функция полностью зависит от Windows. - person user541686   schedule 05.04.2011