如何确定文件碎片的程度?

时间:2012-10-05 18:03:35

标签: windows winapi filesystems ntfs

我想提供一种方法来识别何时将大文件分段到某个程度,并在用户执行碎片整理时提醒用户。另外,我想向他们展示一个视觉显示,展示文件如何在整个磁盘上分成碎片。

我不需要知道如何计算它是多么碎片化,或者如何进行视觉显示。我需要知道的是两件事:1)如何识别包含任何特定给定文件的任何磁盘上的特定集群,以及2)如何识别该磁盘上的集群总数。我基本上需要一个包含此文件片段的所有群集的列表,以及每个群集位于磁盘上的位置。

大多数碎片整理实用程序都有一个可视化显示,显示文件如何在磁盘上传播。我的显示屏将显示一个特定文件如何分成磁盘的不同区域。我只需要知道如何检索必要的数据来告诉我文件的簇/扇区在磁盘上的位置,这样我就可以进一步确定它的碎片程度。

1 个答案:

答案 0 :(得分:11)

您可以将DeviceIoControl功能与FSCTL_GET_RETRIEVAL_POINTERS控制代码一起使用。

  

FSCTL_GET_RETRIEVAL_POINTERS操作检索可变大小   数据结构,描述磁盘上的分配和位置   具体文件。该结构描述了虚拟之间的映射   群集号码(文件或流空间内的VCN偏移量)和   逻辑集群编号(卷空​​间内的LCN偏移)。