проверить наличие плохих секторов на жестком диске
Недавно, после нескольких отключений электропитания, мой компьютер сильно испортился (время от времени BSOD иногда ведет себя очень странно).
Теперь у меня есть программа, которая прекрасно работала до того, как мой компьютер испортился. Эта программа просто создает файл, используяCreateFile
и пишет в него, используяWriteFile
, Эта программа также имеет другие вещи, которые делают свое дело на основе этого файла. Я заметил, что вся программа действовала также странно.
Мои результаты отладки:
Я заметил что послеCreateFile
файл создается там, где он должен быть (проверяется с помощью Проводника и командной строки).WriteFile
не записал в файл (снова проверил используя Проводник и командную строку).ПослеWriteFile
всякий раз, когда я дважды щелкал файл в Проводнике или что-то делал с этим файлом, все происходило так, как будто файл не существует.Все API вернули свои соответствующие коды успеха. Нет ошибок абсолютно.После того, как я остановил свою программу и вышел из IDE, я зашел в проводник и попытался удалить папку, содержащую файл, созданный выше, он показал мне это:
Файл был удален, хотя.
Примечание: Выше не всегда бывает.
Из-за описанной выше отладки я пришел к выводу, что из-за того, что вся моя ОС ведет себя странно, моя программа также работает странно. Нет ошибок в моей программе (так как все работало идеально до тех пороков).
Во всяком случае, Microsoft имеетэто сказать об этой ошибке, По сути, на моем жестком диске много плохих секторов.
Мой вопрос: Есть ли способ программно проверить, нормально ли работает жесткий диск в C? Это обнаружение не обязательно должно быть на 100% правильным. Я, однако, хочу, чтобы эта проверка была довольно быстрой (так как я делаю много записей и тому подобное).
Я хочу эту проверку, потому что на данный момент остальная часть моей программы думает, что файл там и готов (потому что ничего не вернуло ошибку), и возникает всякое странное поведение. Как пользователь, который может не знать, что его / ее жесткий диск зонирован, я хотел бы, чтобы моя программа предложила запустить проверку диска.