跳到正文
参考文档 / ZLIB × LEAN

zlib API 手册

此页源文件快照 · ea5942242974f0b2 · 对应提交的原文 ↗

文档 / API 手册

从这里查找 zlib 函数、了解调用者义务,或追踪一个流的生命周期。先按任务选择一组接口,再查单个函数。函数页面中的“共同前提与范围”汇总该组接口共用的内存要求;“形式化目标”给出对应 Lean 命题,两者的范围应分别阅读。

每个条目列出 C 签名、用途、前置条件、后置条件、允许的影响,以及影响使用方式的边界情况。

选择起点

你想要…… 阅读
理解契约术语和构建范围 如何阅读契约
管理缓冲区、所有权、重置和流调用顺序 共享流规则
通过 z_stream 增量压缩 流式压缩
通过 z_stream 增量解压 流式解压
通过回调提供解压输入并接收输出 回调解压
压缩或解压整个缓冲区,或查询库信息 缓冲区工具与库信息
计算或组合 Adler-32 和 CRC-32 校验和 校验和
读写 gzip 文件句柄、定位或关闭文件 Gzip 文件

本手册遵循固定版本的源代码及列出的补丁,首先覆盖默认 LP64 Linux 静态构建和默认分配器。各条目注明额外限制。Windows 的 gzopen_w 条目与该构建分开讨论。这些是聚焦于特定范围的文档契约;部分前置条件比公开头文件更严格。不满足所述前置条件,意味着不在该契约范围内,并不自动意味着 C 未定义行为。参见范围偏差。

本手册不改变范围更广的已登记公开目标。进度是证明状态和剩余工作的唯一记录。

查找函数

下列索引按用途链接全部 96 个条目。函数页面保留 C 名称,包括由初始化宏调用的、名称末尾带下划线的函数。

流式压缩

函数 简述
deflateInit_ 使用默认窗口、内存级别和策略初始化
deflateInit2_ 指定所有参数进行初始化
deflateSetDictionary 预载字典
deflateGetDictionary 复制出当前字典窗口
deflateResetKeep 重新开始一个流,但保留窗口和哈希表(未公开文档化)
deflateReset 重新开始一个流
deflateSetHeader 提供要写入的 gzip 头
deflatePending 查询待输出数据
deflateUsed 查询最近一次刷新最后一个字节使用的位数
deflatePrime 在输出中插入位
deflateParams 更改级别和策略
deflateTune 设置内部匹配搜索的调优参数
deflateBound_z 压缩大小上界(大小类型长度)
deflateBound 压缩大小上界(uLong)
deflate 压缩
deflateEnd 释放流
deflateCopy 复制流

流式解压

函数 简述
inflateResetKeep 重新开始一个流并保留窗口内容(未公开文档化)
inflateReset 重新开始一个流,丢弃窗口内容
inflateReset2 使用新窗口大小重新开始一个流
inflateInit2_ 指定窗口大小进行初始化
inflateInit_ 使用默认窗口大小初始化
inflatePrime 在输入中插入位
inflate 解压
inflateEnd 释放流
inflateGetDictionary 复制出窗口
inflateSetDictionary 提供字典
inflateGetHeader 请求获取 gzip 头
inflateSync 搜索完全刷新点
inflateSyncPoint 检查是否停在同步刷新点
inflateCopy 复制流
inflateUndermine 请求距离检查选项;默认构建返回 Z_DATA_ERROR
inflateValidate 控制包装格式的完整性检查
inflateMark 查询 inflate 在块或码中的位置
inflateCodesUsed 查询当前块已使用的编码表项数(未公开文档化)

回调解压

函数 简述
inflateBackInit_ 为回调解压初始化
inflateBack 使用输入、输出回调解压
inflateBackEnd 释放流

整块缓冲区操作与库信息

函数 简述
compress2_z 按指定级别压缩缓冲区(大小类型长度)
compress2 按指定级别压缩缓冲区
compress_z 按默认级别压缩缓冲区(大小类型长度)
compress 按默认级别压缩缓冲区
compressBound_z 压缩大小上界(大小类型长度)
compressBound 压缩大小上界
uncompress2_z 解压缓冲区,报告使用的输入量(大小类型长度)
uncompress2 解压缓冲区,报告使用的输入量
uncompress_z 解压缓冲区(大小类型长度)
uncompress 解压缓冲区
zlibVersion 库的版本字符串
zlibCompileFlags 构建库所用的类型大小和选项
zError 返回码对应的文本

校验和

函数 简述
adler32_z 缓冲区的 Adler-32(大小类型长度)
adler32 缓冲区的 Adler-32
adler32_combine 组合两个 Adler-32 值
adler32_combine64 组合两个 Adler-32 值(64 位长度)
get_crc_table CRC-32 表
crc32_z 缓冲区的 CRC-32(大小类型长度)
crc32 缓冲区的 CRC-32
crc32_combine_gen64 用于组合的算子(64 位长度)
crc32_combine_gen 用于组合的算子
crc32_combine_op 使用算子组合
crc32_combine64 组合两个 CRC-32 值(64 位长度)
crc32_combine 组合两个 CRC-32 值

Gzip 文件

函数 简述
gzopen, gzopen64, gzdopen, gzopen_w 打开文件
gzbuffer, gzsetparams 缓冲区大小、压缩参数
gzread, gzfread, gzgetc, gzgetc_, gzungetc, gzgets 读取
gzwrite, gzfwrite, gzputc, gzputs, gzprintf, gzvprintf, gzflush 写入
gzrewind, gzseek, gzseek64, gztell, gztell64, gzoffset, gzoffset64 定位
gzeof, gzdirect, gzerror, gzclearerr 状态
gzclose, gzclose_r, gzclose_w 关闭

构建变体与宏

与 zlib.h 声明的函数相比,下列内容不会编译成默认 Linux 库中的独立条目:

名称 原因
gzopen_w 仅为 Windows(_WIN32)声明;gzlib.c 中的定义受宽字符选项控制
deflateInit, deflateInit2, inflateInit, inflateInit2, inflateBackInit 它们是 zlib.h 中的宏;使用头文件自身的版本字符串和 sizeof(z_stream) 调用 deflateInit_, deflateInit2_, inflateInit_, inflateInit2_, inflateBackInit_
作为宏的 gzgetc zlib.h 还把 gzgetc 定义为宏,直接读取缓冲区,缓冲区为空时调用 gzgetc_;函数形式的 gzgetc 也存在

索引包含全部 95 个默认构建条目,以及单独列出的 Windows 条目 gzopen_w。内部辅助函数契约描述库内部使用的例程。

ZLIB × LEAN

全局目录

当前位置zlib API 手册