Windows — Обеспечение того, что жесткий диск (диск) не находится в режиме ожидания во время выполнения программы

У меня есть несколько вопросов:

  1. Приведет ли следующий код C ++ к тому, что мой жесткий диск простаивает через некоторое время?

    #include <stdio.h>
    
    int main()
    {
    while(1);
    }
    
  2. Если так, что я могу добавить к этому коду, чтобы мой жесткий диск не работал во время выполнения?

  3. Есть ли какой-нибудь способ проверить, находится ли мой жесткий диск в состоянии ожидания, хотя код C ++?

Примечание: я использую Windows 7

0

Решение

  1. Если режим ожидания включен, то да, поскольку он не имеет доступа к жесткому диску.
  2. Ничего такого; Ваш код может даже не запускаться с жесткого диска. Даже если вы добавите код для чтения некоторых данных, он может кэшироваться и не трогать диск. Вероятно, вы можете сделать что-то с записью, за которой следуют сбросы, чтобы гарантировать, что данные записаны на диск, но это заблокирует вашу программу во время сброса (и этот метод также не надежен).
  3. Может быть, вы можете проверить с помощью SMART или около того, но помните, что ваша программа может не работать с жесткого диска — может быть на SSD, может быть по сети, может быть с RAM-диска.

В общем, вы не должны включать подобные предположения в вашу программу. Если вам нужно дотронуться до диска и вы обеспокоены тем, что жесткий диск может отключиться и это займет много времени, попросите пользователя отключить режим ожидания жесткого диска. Для серверных приложений это, скорее всего, не будет проблемой, так как диск всегда работает. Для твердотельных накопителей и прочего это не проблема, так как эти диски не «раскручиваются» из режима ожидания.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]