FSCTL_SET_ZERO_DATA IOCTL(winioctl.h)
파일의 지정된 범위를 0으로 채웁니다. 파일이 스파스 또는 압축된 경우 NTFS 파일 시스템은 파일의 디스크 공간을 할당 취소할 수 있습니다. 이렇게 하면 파일 크기를 확장하지 않고 바이트 범위를 0으로 설정합니다.
이 작업을 수행하려면 다음 매개 변수를 사용하여 DeviceIoControl 함수를 호출합니다.
BOOL DeviceIoControl(
(HANDLE) hDevice, // handle to a file
FSCTL_SET_ZERO_DATA, // dwIoControlCode
(LPVOID) lpInBuffer, // input buffer
(DWORD) nInBufferSize, // size of input buffer
NULL, // lpOutBuffer
0, // nOutBufferSize
(LPDWORD) lpBytesReturned, // number of bytes returned
(LPOVERLAPPED) lpOverlapped // OVERLAPPED structure
);
설명
이 작업에 겹치는 I/O의 의미는 DeviceIoControl 항목의 설명 섹션을 참조하세요.
WriteFile 함수를 사용하여 스파스 파일에 0을 쓰는 경우 파일 시스템은 작성 중인 데이터의 디스크 공간을 할당합니다. FSCTL_SET_ZERO_DATA 제어 코드를 사용하여 스파스 파일에 0을 쓰고 0(0) 영역이 충분히 큰 경우 파일 시스템에서 디스크 공간을 할당하지 않을 수 있습니다.
FSCTL_SET_ZERO_DATA 컨트롤 코드를 사용하여 스파스가 아닌 파일에 0을 쓰는 경우 0(0)이 파일에 기록됩니다. 시스템은 WriteFile 함수를 사용하여 파일에 0을 쓰는 것과 동일한 모든 0 범위의 디스크 스토리지를 할당합니다.
원격 파일에 대한 타임스탬프를 올바르게 업데이트하지 못할 수 있습니다. 일관된 결과를 보장하려면 버퍼되지 않은 I/O를 사용합니다.
Windows 8 및 Windows Server 2012에서 이 코드는 다음 기술에서 지원됩니다.
기술 | 지원됨 |
---|---|
SMB(서버 메시지 블록) 3.0 프로토콜 | 예 |
SMB 3.0 TFO(투명 장애 조치(failover)) | 예 |
SO(스케일 아웃 파일 공유)를 사용하는 SMB 3.0 | 예 |
CsvFS(클러스터 공유 볼륨 파일 시스템) | 예 |
ReFS(Resilient File System) | 예 |
요구 사항
지원되는 최소 클라이언트 | Windows XP [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱만 해당] |
머리글 | winioctl.h(Windows.h 포함) |