windows – 获取磁盘/群集号上的文件偏移量

我需要获取有关文件在NTFS磁盘上的物理位置的任何信息.绝对偏移,集群ID ……一切.
我需要扫描磁盘两次,一次是为了获取已分配的文件,还有一次我需要在RAW模式下直接打开分区并尝试查找剩余的数据(来自已删除的文件).我需要一种方法来理解我发现的数据与我以前作为文件处理过的数据相同.当我在原始模式下扫描磁盘时,我发现的数据的偏移量可以某种方式转换为文件的偏移量(具有关于磁盘几何的信息).有没有办法做到这一点?其他解决方案也被接受.
现在我正在玩FSCTL_GET_NTFS_FILE_RECORD,但目前无法使其工作,我不确定它会有所帮助.

UPDATE

我找到了以下功能
http://msdn.microsoft.com/en-us/library/windows/desktop/aa364952(v=vs.85).aspx
它返回包含nFileIndexHigh和nFileIndexLow变量的结构.
文档说

存储在nFileIndexHigh和nFileIndexLow成员中的标识符称为文件ID.对文件ID的支持是特定于文件系统的.文件ID不保证随着时间的推移是唯一的,因为文件系统可以自由地重用它们.在某些情况下,文件的文件ID可能会随时间而变化.

我真的不明白这是什么.我无法将其连接到文件的物理位置.以后可以从MFT中提取此文件ID吗?

UPDATE

发现这个:
该标识符和卷序列号唯一标识文件.重新启动系统或打开文件时,此数字可能会更改.

这不符合我的要求,因为我要打开文件,ID可能会改变的事实并不能让我满意.

有任何想法吗?

使用 Defragmentation IOCTLs.例如,FSCTL_GET_RETRIEVAL_POINTERS将告诉您包含文件数据的范围.

相关文章

文章浏览阅读2.2k次,点赞6次,收藏20次。在我们平时办公工作...
文章浏览阅读1k次。解决 Windows make command not found 和...
文章浏览阅读3.2k次,点赞2次,收藏6次。2、鼠标依次点击“计...
文章浏览阅读1.3w次。蓝光版属于高清版的一种。BD英文全名是...
文章浏览阅读974次,点赞7次,收藏8次。提供了更强大的功能,...
文章浏览阅读1.4w次,点赞5次,收藏22次。如果使用iterator的...