ターゲット ファイルの最後のクラスターを見つけて、そこからバイナリ データを読み取ろうとしています。私は CreateFile() から始めて、その結果を DeviceIoControl() で使用し、制御コード FSCTL_GET_RETRIEVAL_POINTERS を指定しました。
hfile = CreateFile(result,
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
RETRIEVAL_POINTERS_BUFFER retrievalBuffer;
const DWORD Clusters = 1000;
const DWORD rpBufferSize = sizeof(RETRIEVAL_POINTERS_BUFFER) + (2 * (Clusters - 1) *sizeof(LARGE_INTEGER));
BYTE output[rpBufferSize];
STARTING_VCN_INPUT_BUFFER startVcn;
startVcn.StartingVcn.QuadPart = 0;
returns = DeviceIoControl(hfile,
FSCTL_GET_RETRIEVAL_POINTERS,
&startVcn,
sizeof(startVcn),
&output,
sizeof(output),
&bytesReturned,
NULL);
だから私は次に何をすべきか本当に知りません。LARGE_INTEGER Lcn
から表示RETRIEVAL_POINTERS_BUFFER
すると、現在の範囲を表す膨大な数が得られます。NO_ERROR
また、すべてのクラスター データが正常に読み取られたと仮定して、スイッチ エラーのケースが発生します。ファイルの最後のクラスターを見つけるのに役立つ Lcn 番号は何ですか?