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

另请参阅

IAppxFile

IAppxPackageReader