我放弃了我的笔记本电脑而Windows正准备冬眠,因此,我得到了硬盘上的磁头损坏。 (教我得到一个硬盘驱动器和/或笔记本采用了自由落体传感器周围下一次。)无论如何,运行SpinRite尝试恢复数据,导致在磁盘上的所有备用扇区都被全部用完了所有的可收回部门至今。 SpinRite仍在继续,现在,但因为不会有使用了备用扇区,我认为这将是徒劳的锻炼,除了告诉我,所有的坏扇区。

不管怎样,我打算写一个应用程序,试图打捞数据从硬盘驱动器。从我过去的进军整理磁盘碎片,我知道我可以使用FSCTL_GET_RETRIEVAL_POINTERS找出逻辑集群数字对于任何给定的文件。

我如何去试图读取该实际集群的行业?通过MSDN的上市对磁盘,文件和卷设备控制代码我挖什么都没对我跳出我得到实际的集群数据的方式。

我不应该甚至懒得想在那个低的水平读什么书?如果我不是做SetFilePointer()和ReadFile的()调用来获得到相应的簇大小的偏移到文件和读取簇大小的块?

如果我试图读取该文件有坏扇区,将NTFS标记整个文件作为不良和阻止我访问该文件的未来?如果是的话我怎么知道NTFS不将文件标记为坏的或死的? (记住,HD而出现在被重新映射的备用扇区。)

我应该灰尘,我的* nix的知识,并找出如何从/ dev /?

阅读

更新:我找到了答案,以我自己的问题。 :-)将溶液上的卷柄做SetFilePointer()和ReadFile的(),而不是在文件句柄。

有帮助吗?

解决方案

我找到了答案,以我自己的问题。 :-)将溶液上的卷柄做SetFilePointer()和ReadFile的(),而不是在文件句柄。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top