FSCTL_GET_COMPRESSION IOCTL (winioctl.h)

检索其文件系统支持按流压缩的卷上的文件或目录的当前压缩状态。

若要执行此操作,请使用以下参数调用 DeviceIoControl 函数。

BOOL DeviceIoControl(
  (HANDLE) hDevice,             // handle to file
  FSCTL_GET_COMPRESSION,        // dwIoControlCode
  NULL,                         // lpInBuffer 
  0,                            // nInBufferSize
  (LPVOID) lpOutBuffer,         // output buffer
  (DWORD) nOutBufferSize,       // size of output buffer
  (LPDWORD) lpBytesReturned,    // number of bytes returned
  (LPOVERLAPPED) lpOverlapped   // OVERLAPPED structure
);

注解

LZNT1 压缩算法是实现的唯一压缩算法。

COMPRESSION_FORMAT_DEFAULT不是压缩状态,因此它不包含在 lpOutBuffer 参数下的表中。 此值仅用于 FSCTL_SET_COMPRESSION 控件代码。

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

可以使用 FSCTL_SET_COMPRESSION 控制代码设置文件或目录的压缩状态。 还可以使用此控制代码压缩或解压缩文件。

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

在 Windows 8 和 Windows Server 2012 中,以下技术支持此代码。

技术 支持
服务器消息块 (SMB) 3.0 协议
SMB 3.0 透明故障转移 (TFO)
具有横向扩展文件共享的 SMB 3.0 (SO)
群集共享卷文件系统 (CSV)
弹性文件系统 (ReFS)

SMB 3.0 透明故障转移和 Scale-Out 不支持 NTFS 压缩文件。 FSCTL 调用未受阻止,但不受支持。

要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
标头 winioctl.h (包括 Windows.h)

另请参阅