无论如何,我打算写一个应用程序试图从硬盘驱动器中抢救数据。从我过去的尝试到碎片整理,我知道我可以使用FSCTL_GET_RETRIEVAL_POINTERS来计算任何给定文件的逻辑簇号。
如何尝试读取该实际群集的扇区?我通过MSDN的磁盘,文件和卷设备控制代码列表挖掘出来并没有像我到达实际集群数据那样突然出现。
我是否应该费心去尝试低水平的阅读?我是否应该执行SetFilePointer()和ReadFile()调用以获取适当的簇大小的偏移到文件中并读取簇大小的块?
如果我试图读取的文件有坏扇区,NTFS会将整个文件标记为坏,并阻止我将来访问该文件吗?如果是这样,我怎么告诉NTFS不要将文件标记为坏或死? (请记住,HD现在已经没有重新映射的备用扇区了。)
我是否应该清除我的* nix知识,并弄清楚如何阅读/ dev /?
更新:我找到了自己问题的答案。 :-)解决方案是在卷句柄而不是文件句柄上执行SetFilePointer()和ReadFile()。
答案 0 :(得分:2)
我找到了自己问题的答案。 :-)解决方案是在卷句柄而不是文件句柄上执行SetFilePointer()和ReadFile()。