FSCTL_GET_COMPRESSION

The FSCTL_GET_COMPRESSION DeviceIoControl operation obtains the current compression state of a file or directory on a volume whose file system supports per-stream compression.

dwIoControlCode = FSCTL_GET_COMPRESSION; // operation code

lpInBuffer = NULL; // pointer to input buffer; not used; must be NULL

nInBufferSize = 0; // size of input buffer; not used; must be zero

lpOutBuffer ; // pointer to output buffer

nOutBufferSize ; // size of output buffer

lpBytesReturned ; // pointer to actual bytes of output

Parameters

lpInBuffer

Points to an input buffer. Not used with this operation. Set to NULL.

nInBufferSize

Specifies the size, in bytes, of the buffer pointed to by lpInBuffer. Not used with this operation. Set to zero.

lpOutBuffer

Points to a buffer that receives a USHORT indicating the current compression state of the file or directory.

The following values are defined:

Value Meaning
COMPRESSION_FORMAT_NONE The file or directory is not compressed.
COMPRESSION_FORMAT_LZNT1 The file or directory is compressed, using the LZNT1 compression format.
all other values Reserved for future use.

nOutBufferSize

Specifies the size, in bytes, of the buffer pointed to by lpOutBuffer. The buffer must be large enough to contain one USHORT value.

lpBytesReturned

Points to a DWORD value that receives the actual size, in bytes, of the data stored into the buffer pointed to by lpOutBuffer.

Return Values

If the operation succeeds, DeviceIoControl returns TRUE.

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

Remarks

On this release, LZNT1 is the only compression algorithm implemented. Future releases may have additional compression methods.

COMPRESSION_FORMAT_DEFAULT is not a compression state so it is not included in the table under the lpOutBuffer parameter. This value is only used with the FSCTL_SET_COMPRESSION operation

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

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

You can set the compression state of a file or directory by using the FSCTL_SET_COMPRESSION DeviceIoControl operation. You can also compress or uncompress a file with that 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_SET_COMPRESSION, GetFileAttributes