5

ファイルがNTFSディスクの物理的にどこにあるかについての情報を取得する必要があります。絶対オフセット、クラスターID..何でも。ディスクを2回スキャンする必要があります。1回目は割り当てられたファイルを取得するため、もう1回はRAWモードで直接パーティションを開き、残りのデータ(削除されたファイルから)を検索する必要があります。見つけたデータが、以前にファイルとして処理したデータと同じであることを理解する方法が必要です。RAWモードでディスクをスキャンしているので、見つけたデータのオフセットをファイルのオフセットに変換できます(ディスクの形状に関する情報があります)。これを行う方法はありますか?他の解決策も受け入れられます。現在、FSCTL_GET_NTFS_FILE_RECORDで遊んでいますが、現時点では機能させることができず、それが役立つかどうかはわかりません。

アップデート

次の関数が見つかりました http://msdn.microsoft.com/en-us/library/windows/desktop/aa364952(v=vs.85).aspxnFileIndexHigh 変数と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が変更される可能性があるという事実は私を幸せにしないからです。

何か案は?

4

1 に答える 1

6

デフラグIOCTLを使用します。たとえば、FSCTL_GET_RETRIEVAL_POINTERSファイルデータを含むエクステントを教えてくれます。

于 2012-08-13T16:10:10.610 に答える