FSCTL_SET_COMPRESSION IOCTL (winioctl.h)

Establece el estado de compresión de un archivo o directorio en un volumen cuyo sistema de archivos admite la compresión por archivo y por directorio. Puede usar FSCTL_SET_COMPRESSION para comprimir o descomprimir un archivo o directorio en dicho volumen.

Para realizar esta operación, llame a la función DeviceIoControl con los siguientes parámetros.

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

Comentarios

El algoritmo de compresión LZNT1 es el único algoritmo de compresión implementado. Como resultado, el algoritmo de compresión LZNT1 se usa como método de compresión DEFAULT.

Si el sistema de archivos del volumen que contiene el archivo o directorio especificado no admite la compresión por archivo o por directorio, se produce un error en la operación.

El cambio de estado de compresión del archivo o directorio se produce de forma sincrónica con la llamada a DeviceIoControl.

Para recuperar el estado de compresión de un archivo o directorio, use el código de control FSCTL_GET_COMPRESSION .

Para recuperar el atributo de compresión de un archivo o directorio, use la función GetFileAttributes . El atributo de compresión indica si un archivo o directorio está comprimido. El estado de compresión indica si un archivo o directorio está comprimido y, si es así, el formato de los datos comprimidos.

Esta operación no comprime realmente los directorios. En su lugar, la operación establece el estado predeterminado para los archivos creados en el directorio que se van a comprimir.

Tenga en cuenta que es posible que las marcas de tiempo no se actualicen correctamente para un archivo remoto. Para garantizar resultados coherentes, use E/S sin búfer.

La compresión de archivos es compatible con archivos de un tamaño máximo sin comprimir de 30 gigabytes.

En Windows 8 y Windows Server 2012, este código es compatible con las siguientes tecnologías.

Tecnología Compatible
Protocolo Bloque de mensajes del servidor (SMB) 3.0
Conmutación por error transparente (TFO) de SMB 3.0 No
SMB 3.0 con recursos compartidos de archivos de escalabilidad horizontal (SO) No
Sistema de archivos de Volumen compartido de clúster (CsvFS) Ver comentario
Sistema de archivos resistente a errores (ReFS) No

CsvFs no admite la compresión de un directorio. CsvFs permite comprimir el archivo solo cuando un nodo abre el archivo exclusivamente. La conmutación por error transparente de SMB 3.0 y Scale-Out no admite archivos comprimidos NTFS. La llamada FSCTL no está bloqueada, pero no es compatible".

Operaciones de transacción

No se puede cambiar el estado de compresión de un archivo abierto con CreateFileTransacted.

Para obtener más información sobre las transacciones, vea NTFS transaccional.

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Encabezado winioctl.h (incluya Windows.h)

Consulte también