0

NTFS で MFT を解析するユーティリティを作成しています。ここまでで、1024 バイトの MFT レコードを取得してその属性をトラバースするコードを作成しました。私の知る限り、MFT はレコード番号 0x23 からユーザー ファイルへのレコードの割り当てを開始するため、0x23 から N 個のレコードまでループしています。MFT の最後のレコードに到達する方法を知りたいですか? ある種のエンドマーカーはありますか?MFT レコードのループを停止できるように、特定のレコードが最後のレコードかどうかを知るにはどうすればよいですか。

どんな助けでも大歓迎です。

4

2 に答える 2

3

MFT の場所は、ボリューム上で常に固定されているわけではありません。ブート セクタから開始 MFT オフセットを取得する必要があります (ボリュームのセクタ 0、構造はオンラインで確認できます)。

MFT の最初のファイルは、MFT 全体のファイル レコードである「$MFT」ファイルです。このファイルの属性を他のファイルと同様に解析し、そのデータ ラン リストを取得できます。クラスター内の各フラグメントのサイズがわかっている場合は、最後のフラグメントの 1024 バイト レコードごとに最後のクラスターを解析します (断片化された MFT はまれだと思いますが)。MFT の最後のレコードは、「FILE0」とマークされた特定のクラスターの最後のレコードです。1024 バイトを超える null マジック番号が発生した場合。

または、ファイルの属性からファイル サイズを取得し、フラグメントの数に基づいて MFT の末尾までのオフセットを計算することもできます。次に、オフセットから 1024 を引くと、最後のファイルが表示されます。

于 2013-09-09T06:30:11.573 に答える
0

NTFSInfo v1.0と呼ばれるこの無料の Windows Sysinternals ツールを使用して、テーブルの開始と終了の MFT 境界と MFT サイズを取得できます。

于 2014-05-09T20:19:33.473 に答える