Compress 函数 (compressapi.h)

获取并压缩信息块。

语法

BOOL Compress(
  [in]  COMPRESSOR_HANDLE CompressorHandle,
  [in]  LPCVOID           UncompressedData,
  [in]  SIZE_T            UncompressedDataSize,
  [out] PVOID             CompressedBuffer,
  [in]  SIZE_T            CompressedBufferSize,
  [out] PSIZE_T           CompressedDataSize
);

参数

[in] CompressorHandle

CreateCompressor 返回的压缩器的句柄。

[in] UncompressedData

包含要压缩的信息块。 UncompressedDataSize 提供未压缩块的大小(以字节为单位)。

[in] UncompressedDataSize

未压缩信息的大小(以字节为单位)。

[out] CompressedBuffer

接收压缩信息的缓冲区。 Buffer 的最大大小(以字节为单位)由 CompressedBufferSize 提供。

[in] CompressedBufferSize

接收压缩信息的缓冲区的最大大小(以字节为单位)。

[out] CompressedDataSize

接收的压缩信息的实际大小(以字节为单位)。

返回值

如果该函数成功,则返回值为非零值。 如果函数失败,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。

注解

如果压缩算法由于某种内部原因而失败,则可以ERROR_FUNCTION_FAILED来自 GetLastError 的错误。 如果系统找不到压缩算法句柄,则可以 ERROR_INVALID_HANDLE错误。 如果输出缓冲区太小而无法容纳压缩的数据,则可能会 ERROR_INSUFFICIENT_BUFFER错误。

如果 CompressedBuffer 输出缓冲区太小而无法容纳压缩的数据,则函数会失败,并且可能会ERROR_INSUFFICIENT_BUFFER来自 GetLastError 的错误。 在这种情况下, CompressedDataSize 参数接收的大小为 CompressedBuffer 保证该输入缓冲区成功所需的大小。 可以将 CompressedBufferSize 设置为零,以确定要分配的输出缓冲区的大小。

要求

   
最低受支持的客户端 Windows 8 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows Server 2012 [桌面应用 |UWP 应用]
目标平台 Windows
标头 compressapi.h
Library Cabinet.lib
DLL Cabinet.dll

另请参阅

压缩 API 函数