定位文件的扇区

问题描述 投票:0回答:0

我知道文件分散地写入辅助存储介质的各个扇区。我发现了 SysInternals 的文件碎片整理工具

Contig
。如果文件没有写入磁盘上的连续块,这实际上似乎是对文件进行碎片整理。我不知道这是多么真实,因为我试图用这段代码来证明这一点:

https://github.com/zjxylc/FileOffsetOnDisk

我基本上创建了

c:\hello.txt
并在文件中用
hi there
填充它。该文件显然小于 512 字节。我知道 MFT 记录不会扩展此文件,这意味着它是驻留的。也就是说,MFT 记录实际上将在记录中包含文件的数据,而不是提供指向它的指针。如果文件大于 512 字节,MFT 将指向该记录。我不知道它到底在哪里,因为它可能写满了整个磁盘。但是
Contig
工具似乎可以对其进行碎片整理。当我为它检索 MFT 记录时,内容不在 MFT 记录中,但我也是阅读 MFT 记录的新手。

但是,

FileOffsetOnDisk
程序(来自 github)的输出列出了一个偏移量。当我使用
dd.exe
检索内容并在十六进制编辑器中查看时,文件的内容不存在。我想与一些专家一起验证
FileOffsetOnDisk
程序是否确实正确地打印了文件的偏移量。如果不使用
Contig
,它有时会打印 2 个不同的扇区。当
Contig
在有问题的文件上执行,然后
FileOffsetOnDisk
在同一个文件上重新运行时,它显示 1 个扇区偏移量,证明它确实对文件进行了碎片整理,但我仍然无法获得正确的内容文件的。

这是我的

FileOffsetOnDisk
程序的输出(我的只是称为
fileondisk.exe
)以及我如何尝试使用
dd
命令查看文件本身。

如有任何帮助,我们将不胜感激。

c++ winapi sector ntfs-mft
© www.soinside.com 2019 - 2024. All rights reserved.