我必须阅读正在运行的Windows(XP或更高版本)的MFT文件并通过它来访问保存机器上存在的特定文件内容($ DATA)的高清扇区。
问题在于,在读取MFT到获取相关扇区和读取它们之间,文件系统结构可能会有所不同,而且位置可能不再相关。
有没有办法"冻结"系统一段时间?也许保证这个文件不会有变化?锁定特定文件以使其不在扇区之间移动? (包括由于优化和间接变化)
当然我宁愿不复制整个硬盘并静态工作,因为这是一个缓慢的操作,此时不允许正常使用系统。不用说,我不想使用操作系统的API函数或编写驱动程序。
答案 0 :(得分:0)
我只需使用读共享模式打开文件,请求读/写访问权限。如果您成功打开文件,则可以保证在关闭句柄之前数据不会更改。见https://msdn.microsoft.com/en-us/library/windows/desktop/hh449422%28v=vs.85%29.aspx
如果你想在已经被不同进程打开和锁定的文件上实现这一点,那就完全不同了,我相信你必须编写自己的过滤器驱动程序。
答案 1 :(得分:0)
如果系统中的文件位置不同,则会相应地反映在MFT中。因此,您可以简单地比较读取文件之前和之后的MFT信息,而不是尝试停止文件的任何活动。除非您要解压缩或删除文件的内容,否则文件存储结构不会更改。对文件的添加不会影响您阅读的数据的一致性。因此,如果这是您的方案,您可以继续使用上述方法。