2014-01-21 1 views
0

У меня есть приложение, которое каждую секунду записывает небольшой файл данных и переименовывает предыдущую версию файла. Иногда (редко) система не закрыта правильно (мой клиент знает, что он не должен этого делать, но тем не менее он делает ...), и файловая система повреждена.Как перехватить ошибку «Windows - поврежденный файл» в C

Действительно, когда приложение пытается открыть файл данных, появляется всплывающее сообщение с сообщением о поврежденном Windows файле. Заметьте, что мне еще не удалось воспроизвести событие в моей тестовой среде, поэтому все, что я знаю об этом, - это то, что сообщил мне клиент.

Теперь я, по крайней мере, предотвратил бы запуск моего приложения и как можно скорее перехватил повреждение файла, чтобы предупредить пользователя и (если возможно) автоматизировать последовательность перезагрузки-chkdsk. Есть ли способ перехватить filesystem corruption error в программе на языке C (например, пытаясь открыть файл и проверить возвращенный код ошибки)? Обратите внимание, что я не уверен, что смогу воспроизвести ситуацию (вот почему я задаю вопрос!).

Системы, которые я использую на данный момент, - Windows XP SP3 (32 bits) и Windows 7 64 bits.

ответ

0

Попробуйте позвонить SetErrorMode() с SEM_FAILCRITICALERRORS флагом, а затем проверить код ERROR_FILE_CORRUPT ошибки (и возможно также ERROR_DISK_CORRUPT) всякий раз, когда вы открываете/чтения/записи файла.

Смежные вопросы