2012-10-05 11 views
10

大規模なファイルがある程度断片化していることを認識し、デフラグを実行する必要があるときにユーザーに警告する方法を提供したいと考えています。また、ファイルが実際にディスク全体にどのように分割されているかを視覚的に表示したいと思います。ファイルの断片化の程度をどのように判断するのですか?

断片化の程度や視覚的な表示方法を計算する方法を知る必要はありません。私が知る必要があることは、1)特定のファイルを含むディスク上の特定のクラスタを特定する方法、および2)そのディスク上のクラスタの総数を特定する方法。私は本質的に、このファイルの断片を含むすべてのクラスタのリストと、ディスク上の各クラスタが存在する場所のリストを必要とします。

ほとんどのデフラグユーティリティは、ファイルがディスク全体にどのように広がっているかを視覚的に表示します。私のディスプレイには、特定のファイルがどのようにディスクの異なる領域に分割されているかが表示されます。私は、ファイルのクラスタ/セクタがディスク上のどこにあるかを教えるために必要なデータをどのように取得できるのかを知る必要があるので、断片化された方法をさらに判断することができます。

+0

特定のセクターのファイルを特定したいのですが、特定のファイルが占めるセクターを特定することを検討していますか? –

+0

与えられたファイルが占めるセクタ。 –

+5

これは基本的なオペレーティングシステムに関する質問です([NTFS](http://en.wikipedia.org/wiki/NTFS)参照)。ディスク上のファイルの物理的な位置に関する情報は、NTFS情報(特にMFT - リンクされたページの「メタファイル」を参照)を通じた(非常に低いレベルの)散歩を含む。ここで質問するのは非常に広い質問です。リンクを研究してNTFSを調べてから、戻って具体的かつ簡潔な質問をすることができます。 :-)今のところ、広い範囲のために本当の質問ではないと投票して投票してください。 (私はしかし、downvoteしませんでした。) –

答えて

11

DeviceIoControl機能は、FSCTL_GET_RETRIEVAL_POINTERS制御コードで使用できます。

FSCTL_GET_RETRIEVAL_POINTERS動作は可変 特定のファイルのディスク上の割り当ておよび位置を記述する データ構造を大き取り出します。構造体は、仮想番号 クラスタ番号(ファイルまたはストリーム空間内のVCNオフセット)と 論理クラスタ番号(ボリューム空間内のLCNオフセット)の間のマッピングを記述します。

+2

そこにいる間、['IOCTL_DISK_GET_DRIVE_GEOMETRY_EX'](http://msdn.microsoft.com/en-us/library/windows/desktop/aa365171%28v=vs.85%29.aspx)を参照してください。 –

+0

驚くべきことに、デルファイの構造が下がってしまったので、この膨大な数の数字が実際に意味するものを解読してください:Dありがとう。 –

関連する問題