【发布时间】:2014-08-09 08:07:11
【问题描述】:
感谢David Heffernan 的帮助我有一个用 Freepascal 编写的程序(但我的问题的 Delphi 解决方案就足够了),它逐扇区读取物理磁盘。它使用 Windows API CreateFileW 函数来处理磁盘句柄,然后使用FileFile、FileSeek 等进行导航和读取。如果所有扇区都正常,它工作正常。但是,如果磁盘有坏扇区,我需要区别对待。
我的问题是,在读取这些扇区时,是否可以使用程序或库来确定它们是否是坏扇区?如果没有,我该怎么做?我认为是磁盘控制器知道哪些扇区是坏的,哪些不是,所以我认为我的程序实际上不能访问坏扇区,那么我如何检测哪些是坏扇区并采取相应的行动?是否需要查询 SMART,如果需要,如何查询?
我已经搜索了这个网站(只找到了this C post,它与一个程序有关,而不是代码)并用谷歌搜索了它,我没有注意到任何明显的解决方案。
【问题讨论】:
-
如果您还没有,请查看 Roadkil 的 Unstoppable Copier。这可以很好地从坏扇区中读取数据,显然是通过一遍又一遍地读取扇区,可能是几十甚至几百次。并不是说这是对您的 q 的回答,但也许通过谷歌搜索它会发现一些关于它使用的技术的有用信息。
-
很容易出现连操作系统都认为没问题的坏磁盘扇区。
-
请原谅缺乏细节。我不需要读取或尝试读取坏扇区中的数据。识别出的任何坏扇区都需要视为零。
标签: delphi file-io freepascal sector