Prev Next

FSCTL_SET_COMPRESSION info  Overview  Group

The FSCTL_SET_COMPRESSION DeviceIoControl operation sets the compression state of a file or directory on a volume whose file system supports per-file and per-directory compression. You can use this operation to compress or uncompress a file or directory on such a volume.

dwIoControlCode = FSCTL_SET_COMPRESSION;   // operation code 

lpInBuffer ;        // pointer to input buffer 

nInBufferSize ;     // size of input buffer 

lpOutBuffer = NULL; // pointer to output buffer; not used; must be NULL 

nOutBufferSize = 0; // size of output buffer; not used; must be zero 

lpBytesReturned ;   // pointer to DWORD used by DeviceIoControl function 

 

Parameters

lpInBuffer
Points to a buffer that contains a USHORT that specifies a new compression state for the file or directory.

The following values are defined:

Value

Meaning

COMPRESSION_FORMAT_NONE

Uncompress the file or directory.

COMPRESSION_FORMAT_DEFAULT

Compress the file or directory, using the default compression format.

COMPRESSION_FORMAT_LZNT1

Compress the file or directory, using the LZNT1 compression format.

all other values

Reserved for future use.

nInBufferSize
Specifies the size, in bytes, of the buffer pointed to by lpInBuffer. The buffer must be large enough to contain one USHORT value.
lpOutBuffer
Points to an output buffer. Not used with this operation. Set to NULL.
nOutBufferSize
Specifies the size, in bytes, of the buffer pointed to by lpOutBuffer. Not used with this operation. Set to zero.
lpBytesReturned
Pointer to a DWORD. This value cannot be NULL. Although the FSCTL_SET_COMPRESSION operation produces no output data and lpOutBuffer should be NULL, the DeviceIoControl function uses the variable pointed to by lpBytesReturned. After the operation, the value of this variable is without meaning.

Return Values

If the operation succeeds, DeviceIoControl returns a nonzero value.

If the operation fails, DeviceIoControl returns zero. To get extended error information, call GetLastError.

Remarks

On this release, LZNT1 is the only compression algorithm implemented. As a result, LZNT1 will be used as the DEFAULT compression method. Future releases may have additional compression methods which may be used as the DEFAULT.

If the file system of the volume containing the specified file or directory does not support per-file or per-directory compression, the FSCTL_SET_COMPRESSION operation fails.

Windows NT release 3.51 supports file compression on volumes formatted with NTFS.

The compression state change of the file or directory occurs synchronously with the call to DeviceIoControl.

You can obtain the compression state of a file or directory by using the FSCTL_GET_COMPRESSION DeviceIoControl operation.

You can obtain the compression attribute of a file or directory by calling the GetFileAttributes function. The compression attribute indicates whether a file or directory is compressed. The compression state indicates whether a file or directory is compressed and, if it is, the format of the compressed data.

See Also

DeviceIoControl, FSCTL_GET_COMPRESSION, GetFileAttributes