FSCTL_SHRINK_VOLUME IOCTL(winioctl.h)
축소 작업을 수행하기 위해 볼륨을 준비하거나, 축소 작업을 커밋하거나, 축소 작업을 종료해야 한다는 신호를 보냅니다.
이 작업을 수행하려면 다음 매개 변수를 사용하여 DeviceIoControl 함수를 호출합니다.
BOOL DeviceIoControl(
(HANDLE) hDevice, // handle to device
FSCTL_SHRINK_VOLUME, // dwIoControlCode
(LPVOID) lpInBuffer, // input buffer
nInBufferSize, // size of input buffer
NULL, // output buffer
O, // size of output buffer
(LPDWORD) lpBytesReturned, // number of bytes returned
(LPOVERLAPPED) lpOverlapped // OVERLAPPED structure
);
설명
이 제어 코드는 NTFS 및 RAW 파일 시스템에서만 지원됩니다.
축소 작업을 완료하려면 다음을 수행해야 합니다.
- CreateFile을 호출하여 볼륨에 대한 핸들을 엽니다.
- FSCTL_SHRINK_VOLUME 호출합니다. SHRINK_VOLUME_INFORMATION 구조체의 ShrinkRequestType 멤버를 ShrinkPrepare로 설정합니다. 동일한 구조체의 NewNumberOfSectors 멤버를 0으로 설정합니다. 이 호출이 성공하면 파일 시스템은 새 볼륨 길이가 끝날 때까지 클러스터를 할당하지 않습니다.
- 새 섹터 수를 초과하는 모든 파일에서 FSCTL_MOVE_FILE 호출하고 유효한 범위 내에서 이동합니다. 축소 작업의 영향을 받는 모든 파일을 이동할 책임이 있습니다.
- FSCTL_SHRINK_VOLUME 호출합니다. SHRINK_VOLUME_INFORMATION 구조체의 ShrinkRequestType 멤버를 ShrinkCommit으로 설정합니다. 동일한 구조체의 NewNumberOfSectors 멤버를 0으로 설정합니다. 새 볼륨 크기 종료 이후의 모든 파일이 이동되지 않은 경우 STATUS_ALREADY_COMMITTED (ERROR_ACCESS_DENIED)으로 호출이 실패합니다. 그렇지 않으면 파일 시스템이 축소되었습니다.
- IOCTL_DISK_GROW_PARTITION 호출합니다. DISK_GROW_PARTITION 구조체의 BytesToGrow 멤버를 제거할 바이트 수를 나타내는 음수로 설정합니다.
Windows 8 및 Windows Server 2012 이 코드는 다음 기술에서 지원됩니다.
기술 | 지원됨 |
---|---|
SMB(서버 메시지 블록) 3.0 프로토콜 | No |
SMB 3.0 TFO(투명 장애 조치(failover)) | No |
SO(스케일 아웃 파일 공유)를 사용하는 SMB 3.0 | No |
CsvFS(클러스터 공유 볼륨 파일 시스템) | 주석 참조 |
NTFS가 탑재된 노드에서만 지원됩니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows Vista [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2008 [데스크톱 앱만 해당] |
머리글 | winioctl.h(Windows.h 포함) |