【问题标题】:Get file offset on disk/cluster number获取磁盘/集群号上的文件偏移量
【发布时间】:2012-08-13 12:47:06
【问题描述】:

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

更新

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

The identifier that is stored in the nFileIndexHigh and nFileIndexLow members is called the file ID. Support for file IDs is file system-specific. File IDs are not guaranteed to be unique over time, because file systems are free to reuse them. In some cases, the file ID for a file can change over time.

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

更新

发现这个: This identifier and the volume serial number uniquely identify a file. This number can change when the system is restarted or when the file is opened.

这不能满足我的要求,因为我要打开文件,而 ID 可能会更改的事实并不让我高兴。

有什么想法吗?

【问题讨论】:

  • 请注意,您的问题标题与您的实际问题不符。您的问题是您要扫描所有未使用的数据。为此,请使用FSCTL_GET_VOLUME_BITMAP,它会告诉您哪些 LCN 正在使用中,哪些未使用。否则,您将重复扫描元数据。

标签: windows winapi file-io ntfs


【解决方案1】:

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

【讨论】:

  • 另外,请记住,除非您先锁定音量,否则此信息可能会在您下方发生变化。
  • @Raymond Chen:谢谢。让我检查一下。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-14
  • 2011-04-14
  • 2018-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-10
相关资源
最近更新 更多