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 | Sì |
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) |