如何拦截C中的“Windows - 损坏文件”错误

时间:2014-01-21 08:45:50

标签: c winapi windows-xp ntfs

我有一个应用程序,每秒写一个小数据文件并重命名以前的文件版本。有时(很少)系统没有正确关闭(我的客户知道他不应该这样做,但他确实......)并且文件系统被破坏了。

实际上,当应用程序尝试打开数据文件时,会出现一个消息气球,说明Windows损坏的文件。请注意,我还没有设法在我的测试环境中重现该事件,所以我所知道的就是客户向我报告的内容。

现在我至少会阻止我的应用程序运行并尽快拦截文件损坏,以便警告用户并(如果可能)自动执行reboot-chkdsk序列。 有没有办法拦截C程序中的filesystem corruption error(例如,通过尝试打开文件并检查返回的错误代码)?请注意,我不确定能够重现这种情况(这就是我提出这个问题的原因!)。

我目前使用的系统是Windows XP SP3 (32 bits)Windows 7 64 bits

1 个答案:

答案 0 :(得分:0)

尝试使用SEM_FAILCRITICALERRORS标记调用SetErrorMode(),然后在打开/读取/写入文件时检查ERROR_FILE_CORRUPT错误代码(也可能是ERROR_DISK_CORRUPT)。