FSCTL_SET_COMPRESSION IOCTL(winioctl.h)

파일 시스템이 파일별 및 디렉터리별 압축을 지원하는 볼륨에서 파일 또는 디렉터리의 압축 상태를 설정합니다. FSCTL_SET_COMPRESSION 사용하여 이러한 볼륨에서 파일 또는 디렉터리를 압축하거나 압축 해제할 수 있습니다.

이 작업을 수행하려면 다음 매개 변수를 사용하여 DeviceIoControl 함수를 호출합니다.

BOOL DeviceIoControl(
  (HANDLE) hDevice,                 // handle to file or directory
  FSCTL_SET_COMPRESSION,            // 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
);

설명

LZNT1 압축 알고리즘은 구현된 유일한 압축 알고리즘입니다. 결과적으로 LZNT1 압축 알고리즘이 DEFAULT 압축 메서드로 사용됩니다.

지정된 파일 또는 디렉터리가 포함된 볼륨의 파일 시스템이 파일별 또는 디렉터리당 압축을 지원하지 않으면 작업이 실패합니다.

파일 또는 디렉터리의 압축 상태 변경은 DeviceIoControl 호출과 동기적으로 발생합니다.

파일 또는 디렉터리의 압축 상태를 검색하려면 FSCTL_GET_COMPRESSION 제어 코드를 사용합니다.

파일 또는 디렉터리의 압축 특성을 검색하려면 GetFileAttributes 함수를 사용합니다. 압축 특성은 파일 또는 디렉터리가 압축되었는지 여부를 나타냅니다. 압축 상태는 파일 또는 디렉터리가 압축되었는지 여부와 압축된 데이터의 형식을 나타냅니다.

디렉터리 실제로이 작업에 의해 압축 되지 않습니다. 대신 작업은 디렉터리에서 만든 파일의 기본 상태를 압축하도록 설정합니다.

원격 파일에 대한 타임스탬프를 올바르게 업데이트하지 못할 수 있습니다. 일관된 결과를 보장하려면 버퍼되지 않은 I/O를 사용합니다.

압축되지 않은 최대 크기가 30기가바이트인 파일에 대해 파일 압축이 지원됩니다.

Windows 8 및 Windows Server 2012 이 코드는 다음 기술에서 지원됩니다.

기술 지원됨
SMB(서버 메시지 블록) 3.0 프로토콜 Yes
SMB 3.0 TFO(투명 장애 조치(failover)) No
SO(스케일 아웃 파일 공유)를 사용하는 SMB 3.0 No
CsvFS(클러스터 공유 볼륨 파일 시스템) 주석 참조
ReFS(Resilient File System) No

CsvFs는 디렉터리를 압축하는 작업을 지원하지 않습니다. CsvFs를 사용하면 노드에서만 파일을 열 때만 파일을 압축할 수 있습니다. SMB 3.0 투명한 장애 조치(failover) 및 Scale-Out NTFS 압축 파일을 지원하지 않습니다. FSCTL 호출은 차단되지 않지만 지원되지 않습니다."

거래된 작업

CreateFileTransacted를 사용하여 연 파일의 압축 상태를 변경할 수 없습니다.

트랜잭션에 대한 자세한 내용은 트랜잭션 NTFS를 참조하세요.

요구 사항

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

추가 정보