FSCTL_GET_RETRIEVAL_POINTERS 제어 코드
FSCTL_GET_RETRIEVAL_POINTERS 제어 코드는 특정 파일의 디스크에 할당 및 위치를 설명하는 고정 크기 데이터 구조를 검색합니다. 이 구조는 가상 클러스터 번호(VCN, 파일/스트림 공간 내의 오프셋) 및 논리 클러스터 번호(LCN, 볼륨 공간 내 오프셋) 간의 매핑을 설명합니다.
이 작업을 수행하려면 다음 매개 변수 를 사용하여 FltFsControlFile 또는 ZwFsControlFile 을 호출합니다.
재문 분석 지점 및 FSCTL_GET_RETRIEVAL_POINTERS 제어 코드에 대한 자세한 내용은 Microsoft Windows SDK 설명서를 참조하세요.
매개 변수
FileObject
FltFsControlFile만 해당 합니다. FSCTL_GET_RETRIEVAL_POINTERS 매핑을 검색하는 대체 스트림, 파일 또는 디렉터리에 대한 파일 개체 포인터입니다. 이 매개 변수는 필수이며 NULL일 수 없습니다.
FileHandle
ZwFsControlFile만 해당 합니다. FSCTL_GET_RETRIEVAL_POINTERS 매핑을 검색하는 대체 스트림, 파일 또는 디렉터리에 대한 파일 핸들입니다. FileHandle의 값이 전체 볼륨에 대한 핸들인 경우 루틴은 잘못된 클러스터 파일에 대한 VCN 및 익스텐트 맵을 반환합니다. 이 매개 변수는 필수이며 NULL일 수 없습니다.
FsControlCode
작업에 대한 컨트롤 코드입니다. 이 작업에는 FSCTL_GET_RETRIEVAL_POINTER 사용합니다.
InputBuffer
대체 스트림, 파일 또는 디렉터리의 시작을 표시하는 VCN(가상 클러스터 번호)을 나타내는 STARTING_VCN_INPUT_BUFFER 구조체에 대한 포인터입니다. STARTING_VCN_INPUT_BUFFER 구조체는 다음과 같이 정의됩니다.
typedef struct {
LARGE_INTEGER ;
} STARTING_VCN_INPUT_BUFFER, *PSTARTING_VCN_INPUT_BUFFER;
멤버
StartingVcn
FSCTL_GET_RETRIEVAL_POINTERS 익스텐트와 연결된 가상 및 논리 클러스터 번호를 열거하기 시작하는 VCN입니다. 파일 시스템 제어 코드가 FSCTL_GET_RETRIEVAL_POINTERS FltFsControlFile 또는 ZwFsControlFile에 대한 첫 번째 호출에서는 StartingVcn 을 0으로 설정해야 합니다.
OutputBuffer가 파일의 전체 VCN 및 익스텐트 맵을 포함할 만큼 크지 않은 경우 호출자는 RETRIEVAL_POINTERS_BUFFER 구조체의 NextVcn 멤버에 반환된 값을 시작 VCN으로 사용하여 더 많은 맵 데이터를 요청해야 합니다.
InputBufferLength
InputBuffer의 입력 버퍼 길이(바이트)입니다.
OutputBuffer
대체 스트림, 파일 또는 디렉터리에 해당하는 디스크의 익스텐트 열거형을 포함하는 RETRIEVAL_POINTERS_BUFFER 형식의 고정 크기 구조체에 대한 포인터입니다.
typedef struct RETRIEVAL_POINTERS_BUFFER {
ULONG ExtentCount;
LARGE_INTEGER StartingVcn;
struct {
LARGE_INTEGER NextVcn;
LARGE_INTEGER Lcn;
} Extents[1];
} RETRIEVAL_POINTERS_BUFFER, *PRETRIEVAL_POINTERS_BUFFER;
멤버
StartingVcn
함수 호출에서 반환된 VCN을 시작합니다. 파일 시스템 드라이버가 요청된 시작 VCN을 찾은 범위의 첫 번째 VCN으로 반올림할 수 있으므로 함수 호출에서 요청한 VCN일 필요는 없습니다.
익스텐트
익스텐트 구조의 배열입니다. 배열의 멤버 수는 ExtentCount를 참조하세요. 배열의 각 멤버에는 다음 멤버가 있습니다.
NextVcn
다음 익스텐트 시작 VCN입니다. 이 값은 StartingVcn(첫 번째 익스텐트 배열 멤버의 경우) 또는 배열의 이전 멤버(다른 모든 익스텐트 배열 멤버의 경우)의 NextVcn을 뺀 값으로, 클러스터의 현재 익스텐트 길이입니다.
Lcn
볼륨에서 현재 익스텐트 시작 LCN입니다. NTFS에서 값(LONGLONG) -1은 부분적으로 할당된 압축 단위 또는 스파스 파일의 할당되지 않은 영역을 나타냅니다.
OutputBufferLength
OutputBuffer 매개 변수가 가리키는 버퍼의 크기(바이트)입니다.
상태 블록
FltFsControlFile 및 ZwFsControlFile 은 모두 STATUS_SUCCESS 반환하거나 적절한 NTSTATUS 오류 값을 반환합니다.
VCN/익스텐트 맵이 OutputBuffer에 맞지 않으면 두 루틴 모두 STATUS_BUFFER_OVERFLOW 값을 반환하며, 호출자는 FltFsControlFile 또는 ZwFsControlFile에 대한 다음 호출에서 RETRIEVAL_POINTERS_BUFFER 구조체의 NextVcn 멤버에 반환된 값을 사용하여 시작 VCN(StartingVcn)으로 더 많은 맵 데이터를 요청해야 합니다.
StartingVcn에 지정된 값이 파일의 끝을 벗어나면 STATUS_END_OF_FILE 반환됩니다.
설명
FSCTL_GET_RETRIEVAL_POINTERS 제어 코드는 FastFAT 및 exFAT 디바이스에서 사용할 수 있습니다. 이 기능은 플래시 드라이브와 같은 디바이스에 BitLocker 사용을 지원합니다.
요구 사항
헤더 |
Ntifs.h(Ntifs.h 포함) |