3

NTFS ボリューム上の未使用のクラスターをすべて読み取るプログラムを作成したいと考えています。(誤って切り捨てられたファイルからデータを回復しようとしています)。

このページによると、ボリュームハンドルで SetFilePointer() と ReadFile() を呼び出して、ボリューム上の各論理クラスターを通過できます。しかし、どのクラスターがファイルによって使用されていて、どのクラスターが空いているかを知るにはどうすればよいでしょうか?

4

2 に答える 2

1

FSCTL_GET_VOLUME_BITMAPは、まさにあなたが探しているものであり、かなり速いはずです。これは、多くのコンポーネントが単一のファイルを、たとえば大きな連続したスペースにデフラグするために使用するものです。

于 2010-08-27T14:03:53.397 に答える
1

NTFSボリューム上のすべての未使用のクラスターを取得するには、すべてのファイルとストリームのすべての割り当てのマップを作成する必要があります。非常駐ファイル属性のexntentリストを解析する必要があるため、これは非常に複雑です。そしてMFT。

ただし、切り捨てられたファイルに対してIOCTLまたはfsutilファイルのqueryallocrangesを使用して、最後のエクステント以降を読み取ることができます。現在のファイルが終了する場所を計算すると、ファイルのたるみが生じます。

これは、ファイルが圧縮またはEFS暗号化されていない場合です。

無料または商用のデータ回復プログラムは、ここでより迅速な方法です。

于 2010-08-23T20:03:40.897 に答える