IAppxFile::GetStream 方法 (appxpackaging.h)
获取包含文件未压缩内容的只读流。
语法
HRESULT GetStream(
[out, retval] IStream **stream
);
参数
[out, retval] stream
类型: IStream**
一个只读流,其中包含文件的未压缩内容。
返回值
类型: HRESULT
如果方法成功,则返回 S_OK。
[致命]如果 zip 存档中的文件的本地文件标头或数据描述符无效,OPC 错误代码 (0x8051xxxx) 。 此故障导致整个 OPC zip 使用者进入无效状态,发生此错误后,无法从 IAppxPackageReader 对象访问其他文件。
HRESULT_FROM_WIN32 (ERROR_CRC) (0x80070017) 流是否以前已读取,并且其 CRC 无效。
从返回的 IStream 的 Read 和 CopyTo 方法返回值
[致命]如果已读取整个流并且发现其 CRC 无效,则HRESULT_FROM_WIN32 (ERROR_CRC) (0x80070017)
APPX_E_CORRUPT_CONTENT (0x80080206) 如果由于 zip 文件损坏而无法在 (解压缩文件内容)
HRESULT_FROM_WIN32 (ERROR_INVALID_DATA) (0x8007000d) 如果文件中的块无法完全读取或块大小意外
APPX_E_BLOCK_HASH_INVALID (0x80080207) 此文件块的内容是否与块映射中的哈希不一致
注解
返回的 流 是只读的且可克隆的。
有效负载文件的验证是“延迟的”。首次调用文件的 GetStream 方法时,会验证相应的 zip 文件项的本地文件标头和数据描述符,并可能导致 GetStream 失败。 对同一文件上的 GetStream 的后续调用不会重复这些验证。 仅当按顺序完整读取流时,才会验证 zip 文件项的 CRC 校验和。
为有效负载文件返回的 IStream 实例针对顺序访问进行了优化。 虽然支持对流的随机访问,但这种随机访问可能速度较慢且占用更多 CPU。 建议尽可能对这些流进行单次顺序读取。 支持多次读取同一范围,但不建议出于性能要求;如果此类范围的使用方案需要缓存,请考虑缓存此类范围。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 8 [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2012 [仅限桌面应用] |
目标平台 | Windows |
标头 | appxpackaging.h |