我有一个应用程序,每秒写一个小数据文件并重命名以前的文件版本。有时(很少)系统没有正确关闭(我的客户知道他不应该这样做,但他确实......)并且文件系统被破坏了。
实际上,当应用程序尝试打开数据文件时,会出现一个消息气球,说明Windows损坏的文件。请注意,我还没有设法在我的测试环境中重现该事件,所以我所知道的就是客户向我报告的内容。
现在我至少会阻止我的应用程序运行并尽快拦截文件损坏,以便警告用户并(如果可能)自动执行reboot-chkdsk序列。
有没有办法拦截C程序中的filesystem corruption error
(例如,通过尝试打开文件并检查返回的错误代码)?请注意,我不确定能够重现这种情况(这就是我提出这个问题的原因!)。
我目前使用的系统是Windows XP SP3 (32 bits)
和Windows 7 64 bits
。
答案 0 :(得分:0)
尝试使用SEM_FAILCRITICALERRORS
标记调用SetErrorMode()
,然后在打开/读取/写入文件时检查ERROR_FILE_CORRUPT
错误代码(也可能是ERROR_DISK_CORRUPT
)。