FSCTL_GET_COMPRESSION DeviceIoControl操作获取文件系统支持每流压缩的卷上的文件或目录的当前压缩状态。
dwIoControlCode = FSCTL_GET_COMPRESSION; //操作代码
lpInBuffer = NULL; //指向输入缓冲区的指针;不曾用过;必须为NULL
nInBufferSize = 0; //输入缓冲区的大小不曾用过;必须为零
lpOutBuffer ; //指向输出缓冲区的指针
nOutBufferSize ; //输出缓冲区的大小
lpBytesReturned ; //指向输出的实际字节
参数
【lpInBuffer】
指向输入缓冲区。不用于此操作。设置为NULL。
【nInBufferSize】
指定【lpInBuffer】指向的缓冲区的大小(以字节为单位)。不用于此操作。设置为零。
【lpOutBuffer】
指向接收USHORT指示文件或目录的当前压缩状态的缓冲区。
定义了以下值:
值 | 含义 |
COMPRESSION_FORMAT_NONE | 文件或目录未压缩。 |
COMPRESSION_FORMAT_LZNT1 | 使用LZNT1压缩格式压缩文件或目录。 |
所有其他值 | 留作将来使用。 |
【nOutBufferSize】
指定【lpOutBuffer】指向的缓冲区的大小(以字节为单位)。缓冲区必须足够大以容纳一个USHORT值。
【lpBytesReturned】
指向DWORD值,它接收由【lpOutBuffer】指向的缓冲区中存储的数据的实际大小(以字节为单位)。
返回值
如果操作成功,DeviceIoControl返回TRUE。
如果操作失败,DeviceIoControl返回FALSE。要获取扩展错误信息,请调用GetLastError.
备注
在这个版本中,LZNT1是唯一实现的压缩算法。未来版本可能会有其他压缩方法。
COMPRESSION_FORMAT_DEFAULT不是压缩状态,因此它不包含在【lpOutBuffer】参数下的表中。此值仅用于FSCTL_SET_COMPRESSION操作
如果包含指定文件或目录的卷的文件系统不支持每个文件或每个目录的压缩,则FSCTL_GET_COMPRESSION操作将失败。
Windows NT 3.51版支持使用NTFS格式化的卷上的文件压缩。
您可以使用FSCTL_SET_COMPRESSION DeviceIoControl操作设置文件或目录的压缩状态。您还可以使用该操作来压缩或解压缩文件。
您可以通过调用GetFileAttributes函数来获取文件或目录的压缩属性。压缩属性指示文件或目录是否被压缩。压缩状态表示文件或目录是否被压缩,如果是压缩数据的格式。
也可以看看