FSCTL_SET_COMPRESSION IOCTL (winioctl.h)

Imposta lo stato di compressione di un file o di una directory in un volume il cui file system supporta la compressione per file e per directory. È possibile usare FSCTL_SET_COMPRESSION per comprimere o decomprimere un file o una directory in un volume di questo tipo.

Per eseguire questa operazione, chiamare la funzione DeviceIoControl con i parametri seguenti.

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

Commenti

L'algoritmo di compressione LZNT1 è l'unico algoritmo di compressione implementato. Di conseguenza, l'algoritmo di compressione LZNT1 viene usato come metodo di compressione DEFAULT.

Se il file system del volume contenente il file o la directory specificata non supporta la compressione per file o per directory, l'operazione ha esito negativo.

La modifica dello stato di compressione del file o della directory si verifica in modo sincrono con la chiamata a DeviceIoControl.

Per recuperare lo stato di compressione di un file o una directory, usare il codice di controllo FSCTL_GET_COMPRESSION .

Per recuperare l'attributo di compressione di un file o una directory, usare la funzione GetFileAttributes . L'attributo di compressione indica se è compresso un file o una directory. Lo stato di compressione indica se un file o una directory è compresso e, se è, il formato dei dati compressi.

Le directory non vengono effettivamente compresse da questa operazione. Invece, l'operazione imposta lo stato predefinito per i file creati nella directory da comprimere.

Si noti che i timestamp potrebbero non essere aggiornati correttamente per un file remoto. Per garantire risultati coerenti, usare I/O non memorizzati.

La compressione dei file è supportata per i file di dimensioni massime non compresse di 30 gigabyte.

In Windows 8 e Windows Server 2012 questo codice è supportato dalle tecnologie seguenti.

Tecnologia Supportato
Protocollo SMB (Server Message Block) 3.0
Failover trasparente SMB 3.0 (TFO) No
SMB 3.0 con condivisioni file con scalabilità orizzontale (SO) No
File system del volume condiviso del cluster (CsvFS) Vedere il commento
File system resiliente (ReFS) No

CsvFs non supporta la compressione di una directory. CsvFs consente di creare file compressi solo quando il file viene aperto esclusivamente da un nodo. SMB 3.0 Transparent Failover e Scale-Out non supporta i file compressi NTFS. La chiamata FSCTL non è bloccata, ma non è supportata."

Operazioni transazionate

Non è possibile modificare lo stato di compressione di un file aperto con CreateFileTransacted.

Per altre informazioni sulle transazioni, vedere NTFS transazionale.

Requisiti

Requisito Valore
Client minimo supportato Windows XP [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Intestazione winioctl.h (include Windows.h)

Vedi anche