检查硬盘上的坏扇区

Ani*_*amy 1 c winapi corruption hard-drive

最近几次停电后,我的计算机已经搞得很乱(BSODs时不时,整个操作系统表现得非常奇怪).

现在我有一个程序在我的计算机弄乱之前运行得非常好.这个程序基本上只是创建一个文件使用CreateFile和写入它WriteFile.这个程序还有其他东西基于这个文件做他们的事情.我注意到整个程序也表现得很奇怪.

我的调试结果:

  • 我注意到之后CreateFile,文件被创建应该在哪里(使用资源管理器和命令行检查).
  • WriteFile 没有写入文件(再次使用资源管理器和命令行检查).
  • 之后WriteFile,每当我在资源管理器中双击该文件或对该文件执行任何操作时,所有操作都表现为该文件不存在.
  • 所有API都返回了各自的成功代码.绝对没有错误.
  • 在我停止我的程序并退出IDE之后,我去了资源管理器并试图删除包含上面创建的文件的文件夹,它向我展示了这个:

    我尝试删除文件夹时出错

  • 该文件已被删除.

注意:上述情况并非总是如此.

由于上面的调试,我得出结论,由于我的整个操作系统表现得很奇怪,我的程序也很奇怪.我的计划没有错(因为在那些严重的停电之前一切都很完美).

无论如何,微软有这个说错误.基本上我的硬盘有很多坏道.

我的问题:有没有办法以编程方式检查C中的硬盘是否正常?该检测不需要100%正确.但是,我确实希望这个检查非常快(因为我做了大量的写操作等).

我想要这个检查,因为截至目前,我的程序的其余部分认为该文件已准备就绪(因为没有返回错误)并且随后出现各种奇怪的行为.作为一个可能不知道他/她的硬盘被驱动的用户,我希望我的程序建议运行磁盘检查.

Ran*_*ard 5

您可能最好通过一个API来查看SMART故障前通知,该API允许在驱动器问题发生之前对其进行早期预警.是我发现的一个实现,它似乎适用于您的平台,但我还没有测试过.

我怀疑有更好的可用.这种SMART方法的主要优点是在问题变得重要之前找到问题.但是,许多操作系统都内置了此功能,除了磁盘实用程序之外,很少在应用程序级别执行此操作.