最近在几次停电之后,我的电脑变得非常混乱(不时出现蓝屏,整个操作系统的行为真的很奇怪)。
现在我有一个程序在我的电脑坏掉之前运行得非常好。该程序基本上只是使用创建一个文件CreateFile
并使用WriteFile
. 这个程序还有其他的东西基于这个文件做他们的事情。我注意到整个程序的行为也很奇怪。
我的调试结果:
- 我注意到在 之后
CreateFile
,文件被创建在它应该在的位置(使用资源管理器和命令行检查)。 WriteFile
没有写入文件(再次使用资源管理器和命令行检查)。- 之后
WriteFile
,每当我在资源管理器中双击该文件或对该文件执行任何操作时,一切都表现得好像该文件不存在一样。 - 所有 API 都返回了各自的成功代码。绝对没有错误。
在我停止我的程序并退出 IDE 后,我去资源管理器并尝试删除包含上面创建的文件的文件夹,它向我显示了这个:
虽然文件被删除了。
注意:上述情况并非总是发生。
由于上述调试,我得出的结论是,由于我的整个操作系统表现异常,我的程序也表现异常。我的程序没有错误(因为在那些该死的停电之前一切都很完美)。
无论如何,微软对这个错误有话要说。基本上我的硬盘有很多坏扇区。
我的问题:有没有办法以编程方式检查硬盘驱动器在 C 语言中是否正常?这种检测不需要是 100% 正确的。但是,我确实希望此检查非常快(因为我做了很多写入等)。
我想要这个检查,因为到目前为止,我的程序的其余部分认为文件在那里并且准备好了(因为没有返回错误)并且随之而来的是各种奇怪的行为。作为一个可能不知道他/她的硬盘被分区的用户,我希望我的程序建议运行磁盘检查。