FSCTL_SET_COMPRESSION IOCTL (winioctl.h)

Mengatur status kompresi file atau direktori pada volume yang sistem filenya mendukung kompresi per file dan per direktori. Anda dapat menggunakan FSCTL_SET_COMPRESSION untuk memadatkan atau menghapus kompresi file atau direktori pada volume tersebut.

Untuk melakukan operasi ini, panggil fungsi DeviceIoControl dengan parameter berikut.

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
);

Keterangan

Algoritma kompresi LZNT1 adalah satu-satunya algoritma kompresi yang diterapkan. Akibatnya, algoritma kompresi LZNT1 digunakan sebagai metode kompresi DEFAULT.

Jika sistem file volume yang berisi file atau direktori yang ditentukan tidak mendukung kompresi per file atau per direktori, operasi gagal.

Perubahan status kompresi file atau direktori terjadi secara sinkron dengan panggilan ke DeviceIoControl.

Untuk mengambil status kompresi file atau direktori, gunakan kode kontrol FSCTL_GET_COMPRESSION .

Untuk mengambil atribut kompresi file atau direktori, gunakan fungsi GetFileAttributes . Atribut kompresi menunjukkan apakah file atau direktori dikompresi. Status pemadatan menunjukkan apakah file atau direktori dikompresi dan, jika ya, format data terkompresi.

Direktori sebenarnya tidak dikompresi oleh operasi ini. Sebaliknya, operasi menetapkan status default untuk file yang dibuat di direktori yang akan dikompresi.

Perhatikan bahwa stempel waktu mungkin tidak diperbarui dengan benar untuk file jarak jauh. Untuk memastikan hasil yang konsisten, gunakan I/O yang tidak dibuffer.

Pemadatan file didukung untuk file dengan ukuran maksimum yang tidak dikompresi sebesar 30 gigabyte.

Di Windows 8 dan Windows Server 2012, kode ini didukung oleh teknologi berikut.

Teknologi Didukung
Protokol Server Message Block (SMB) 3.0 Ya
SMB 3.0 Transparent Failover (TFO) Tidak
SMB 3.0 dengan Scale-out File Shares (SO) Tidak
Sistem File Volume Bersama Kluster (CsvFS) Lihat komentar
Sistem File Tangguh (ReFS) Tidak

CsvF tidak mendukung pembuatan direktori terkompresi. CsvF memungkinkan pembuatan file yang dikompresi hanya ketika file dibuka secara eksklusif oleh node. Failover Transparan SMB 3.0 dan Scale-Out tidak mendukung file terkompresi NTFS. Panggilan FSCTL tidak diblokir, tetapi tidak didukung."

Operasi yang Ditransaksikan

Anda tidak dapat mengubah status kompresi file yang dibuka dengan CreateFileTransacted.

Untuk informasi selengkapnya tentang transaksi, lihat NTFS Transaksi.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows XP [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2003 [hanya aplikasi desktop]
Header winioctl.h (termasuk Windows.h)

Lihat juga