다음을 통해 공유


MOVE_FILE_DATA 구조체(winioctl.h)

FSCTL_MOVE_FILE 제어 코드의 입력 데이터를 포함합니다.

구문

typedef struct {
  HANDLE        FileHandle;
  LARGE_INTEGER StartingVcn;
  LARGE_INTEGER StartingLcn;
  DWORD         ClusterCount;
} MOVE_FILE_DATA, *PMOVE_FILE_DATA;

멤버

FileHandle

이동할 파일에 대한 핸들입니다.

파일에 대한 핸들을 검색하려면 CreateFile을 사용합니다.

파일이 암호화된 경우 핸들에는 FILE_READ_DATA, FILE_WRITE_DATA, FILE_APPEND_DATA 또는 FILE_EXECUTE 액세스 권한이 있어야 합니다. 자세한 내용은 파일 보안 및 액세스 권한을 참조하세요.

StartingVcn

이동할 첫 번째 클러스터의 VCN(파일의 시작 부분에 상대적인 클러스터 번호)입니다.

StartingLcn

VCN을 이동할 LCN(볼륨의 클러스터 번호)입니다.

ClusterCount

이동할 클러스터 수입니다.

설명

이 구조를 채울 데이터를 검색하려면 FSCTL_GET_RETRIEVAL_POINTERS 제어 코드와 함께 DeviceIoControl 함수를 사용합니다.

FAT 파일 시스템 볼륨에 있는 디렉터리의 첫 번째 클러스터를 이동할 수 없습니다.

가능하면 서로 상대적으로 정렬된 블록의 데이터를 16KB(킬로바이트) 단위로 이동합니다. 이렇게 하면 다음 조건이 발생할 때 섀도 복사본 공간이 증가하고 성능이 저하되므로 섀도 복사본이 활성화된 경우 쓰기 시 복사 오버헤드가 줄어듭니다.

  • 이동 요청 블록 크기가 16KB보다 작거나 같습니다.
  • 이동 델타가 16KB 단위가 아닙니다.
이동 델타는 원본 블록 시작과 대상 블록 시작 사이의 바이트 수입니다. 즉, X - Y의 절대값이 16KB의 짝수 배수인 경우 오프셋 X(디스크)에서 시작하는 블록을 시작 오프셋 Y로 이동할 수 있습니다. 따라서 4KB 클러스터를 가정하면 클러스터 3에서 클러스터 27로의 이동은 최적화되지만 클러스터 18에서 클러스터 24로의 이동은 최적화되지 않습니다. mod(3,4) = 3 = mod(27,4)입니다. 모드 4는 각각 4KB인 클러스터 4개가 16KB와 같기 때문에 선택됩니다. 따라서 16KB 클러스터 크기로 포맷된 볼륨에서는 모든 이동 파일이 최적화됩니다.

섀도 복사본에 대한 자세한 내용은 볼륨 섀도 복사본 서비스를 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
머리글 winioctl.h(Windows.h 포함)

추가 정보

파일 조각 모음

FSCTL_GET_RETRIEVAL_POINTERS

FSCTL_MOVE_FILE

GetFileAttributes

GetFileAttributesEx

GetFileInformationByHandle