参考文档 / 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。内部辅助函数契约描述库内部使用的例程。