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

Jer*_*dge 10 windows filesystems winapi ntfs

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

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

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

RRU*_*RUZ 11

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

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

  • 当你在那里时,请参阅[`IOCTL_DISK_GET_DRIVE_GEOMETRY_EX`](http://msdn.microsoft.com/en-us/library/windows/desktop/aa365171%28v=vs.85%29.aspx)了解扇区数. (2认同)