다음을 통해 공유


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 포함)

추가 정보