Рейтинг:
1
Sonhospa
Спасибо, Дэйв. Однако это должно быть что-то специфичное для диска, так как на одной и той же машине, например, 4 диска сообщаются истинными (IsReady), а 2 других - нет-по крайней мере, до того, как они проснутся вручную.
Dave Kreskowiak
и как вы "будите их вручную"?
Sonhospa
Например, открыв окно Проводника (список сетей -> имя сервера -> буква диска)
Dave Kreskowiak
Итак, у вас есть диски, которые переходят в спящий режим, даже когда пользователь работает в Windows? Это странно.
Sonhospa
Привет, Дэйв, извини за задержку ответа. Это может показаться странным, но все же верно - только для некоторых дисков SATA. Если пользователь обращается к конкретному жесткому диску, ему требуется несколько секунд, чтобы "проснуться" из какого-то режима ожидания, который я подозреваю. Как уже упоминалось, после пробуждения я получаю "IsReady = TRUE".
Dave Kreskowiak
Я понятия не имею, как разбудить их с помощью кода.
Sonhospa
Но все равно спасибо!
Ralf Meier
Привет,
при чтении всех ответов моя идея заключается в том, что вы сначала пытаетесь прочитать каталог (например) этого диска. Я полагаю, что Windows-проводник делает что-то вроде этого. Но, конечно, вы должны проверить на наличие exeptions, потому что вполне возможно, что вы не можете получить диск готов. Кроме того, при попытке доступа к сетевым дискам возможно, что вы получите очень длинный тайм-аут для каждого ответа (если диск не готов).
Я знаю, что это не похоже на решение проблемы ... но, возможно, идея сделать шаг вперед ...
Sonhospa
Спасибо, Ральф. Как написано в моем первом посте, у меня была та же идея, но я нашел ее немного неуклюжей ("...von hinten durch die Brust ins Auge" ;-) sozusagen). Я надеялся, что у кого-нибудь найдется более элегантное решение. Приятного вам вечера!
Dave Kreskowiak
Проблема с чтением каталога для пробуждения диска заключается в том, что если вы получаете каталог из кэша либо в NTFS, либо на диске вместо того, чтобы диск вращался для чтения его непосредственно с диска?
Ralf Meier
Привет Дэйв,
Я не понимаю, что вы имеете в виду своим комментарием - не могли бы вы объяснить это еще раз? ..
Dave Kreskowiak
Windows хранит некоторые структуры файловой системы в памяти, в кэше.
Чтение каталога может в конечном итоге быть извлечено из кэшированной копии вместо диска.
Но, если он не кэшируется в памяти, Windows перейдет на диск, чтобы получить информацию о каталоге. Ну, у вращающихся ржавых дисков тоже есть кэш-память. С таким же успехом вы можете прочитать каталог, в котором пытаетесь разбудить диск, из кэша дисков.
Вам нужно пройти через два тайника, прежде чем вы доберетесь до тарелок и вызовете их вращение.
Ralf Meier
Я сделал это предложение, потому что несколько лет назад у меня была проблема с хранением данных из HMI-системы, которая была подключена к ПЛК (оба Siemens), к сетевому диску. Иногда сетевой диск был недоступен, но Windows этого не понимала (возможно, из-за кэшированной информации). С программированием у меня были только возможности VBA. Обычный доступ на запись к сетевому диску вызывает очень длительный тайм-аут, который не был заметен, но чтение каталога в этой среде вызывает ошибку, которая была для меня рулем внутри скрипта. Но дополнительно : я попытался прочитать каталог из определенного подкаталога, а не из корня ...
Ralf Meier
"von hinten durch die Brust ins Auge" - это фраза, которую я обычно использую - возможно ли, чтобы мы знали друг друга лично ?