DeviceIoControl FSCTL_SET_COMPRESSION

 

FSCTL_SET_COMPRESSION

FSCTL_SET_COMPRESSION DeviceIoControl operation设置文件系统支持每个文件和每个目录压缩的卷上的文件或目录的压缩状态。 您可以使用此操作压缩或解压缩此卷上的文件或目录。

dwIoControlCode = FSCTL_SET_COMPRESSION; //操作代码

lpInBuffer; //指向输入缓冲区的指针

nInBufferSize; //输入缓冲区的大小

lpOutBuffer = NULL; //指向输出缓冲区的指针; 不曾用过; 必须为NULL

nOutBufferSize = 0; //输出缓冲区的大小; 不曾用过; 必须为零

lpBytesReturned; //指向DeviceIoControl函数使用的DWORD的指针

参数

lpInBuffer

指向包含USHORT的缓冲区,该USHORT指定文件或目录的新压缩状态。

定义了以下值:

 含义 
COMPRESSION_FORMAT_NONE 解压缩文件或目录。 
COMPRESSION_FORMAT_DEFAULT 使用默认压缩格式压缩文件或目录。 
COMPRESSION_FORMAT_LZNT1 使用LZNT1压缩格式压缩文件或目录。 
所有其他价值观 保留供将来使用。 

nInBufferSize

指定lpInBuffer指向的缓冲区的大小(以字节为单位)。 缓冲区必须足够大才能包含一个USHORT值。

lpOutBuffer

指向输出缓冲区。 不用于此操作。 设置为NULL。

nOutBufferSize

指定lpOutBuffer指向的缓冲区的大小(以字节为单位 。 不用于此操作。 设为零。

lpBytesReturned

指向DWORD的指针。 该值不能为NULL。 尽管FSCTL_SET_COMPRESSION操作不产生输出数据且lpOutBuffer应为NULL,但DeviceIoControlfunction使用lpBytesReturned指向的变量。 在操作之后,该变量的值没有意义

返回值

如果操作成功, 则为DeviceIoControl 返回TRUE。

如果操作失败,则DeviceIoControl返回FALSE。 要获取扩展错误信息,请调用GetLastError 。

备注

在此版本中,LZNT1是唯一实现的压缩算法。 因此,LZNT1将用作DEFAULT压缩方法。 未来版本可能有其他压缩方法,可用作DEFAULT。

如果包含指定文件或目录的卷的文件系统不支持每个文件或每个目录压缩,则FSCTL_SET_COMPRESSION操作将失败。

Windows NT版本3.51支持在使用NTFS格式化的卷上进行文件压缩。

文件或目录的压缩状态更改与对DeviceIoControl的调用同步发生。

您可以使用FSCTL_GET_COMPRESSION DeviceIoControl操作获取文件或目录的压缩状态。

您可以通过调用GetFileAttributes函数来获取文件或目录的compression属性。 compression属性指示文件或目录是否已压缩。 压缩状态指示文件或目录是否被压缩,如果是,则指示压缩数据的格式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值