2010-07-16 3 views
3

NTFS 볼륨의 모든 사용되지 않는 클러스터를 읽는 프로그램을 작성하고 싶습니다. (나는 실수로 잘린 파일로부터 데이터를 복구하려고한다).NTFS 논리 클러스터가 무료인지 찾는 방법은 무엇입니까?

this page에 따르면 볼륨 핸들의 SetFilePointer() 및 ReadFile()을 호출하여 볼륨의 각 논리 클러스터를 통과 할 수 있습니다. 그러나 어떤 클러스터가 파일에 사용되고 있고 어떤 클러스터가 사용 가능한지 어떻게 알 수 있습니까?

답변

1

NTFS 볼륨에있는 모든 사용되지 않는 클러스터를 얻으려면 모든 파일과 스트림의 모든 할당 맵을 만들어야합니다. 당신이 비거주 파일 attibutes에 대한 exntent 목록을 구문 분석해야하므로 그것은 매우 복잡합니다. 그리고 MFT.

그러나 잘린 파일에서 IOCTL 또는 fsutil 파일 queryallocranges를 사용하고 마지막 범위를 읽고 넘어갈 수 있습니다. 현재 파일이 끝나는 위치를 계산하면 파일이 느슨해집니다.

파일이 압축되거나 EFS로 암호화되지 않은 경우입니다.

무료 또는 상용 데이터 복구 프로그램이 더 빠른 방법입니다.

1

FSCTL_GET_VOLUME_BITMAP 정확히 찾고 있어야하며 매우 빠릅니다. 이것은 하나의 파일을, 예를 들어 커다란 인접한 공간으로 조각 모으기 위해 많은 구성 요소가 사용하는 것입니다.

관련 문제