IAppxFactory3::CreatePackageReader2 方法 (appxpackaging.h)

重要

某些信息与预发行产品相关,在商业发布之前,该产品可能会进行实质性修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。

使用可选参数从 IStream 提供的内容创建只读包读取器,用于指定包的预期摘要。 此方法不验证数字签名。

语法

HRESULT CreatePackageReader2(
  [in]          IStream            *inputStream,
  [in,optional] LPCWSTR            expectedDigest,
  [out]         IAppxPackageReader **packageReader
);

参数

[in] inputStream

提供用于读取的包的输入流。 流必须支持 ISequentialStream::ReadIStream::SeekIStream::Stat。如果这些方法失败,则其错误代码可能会传递到此方法并由此方法返回。

[in,optional] expectedDigest

包含预期摘要的 LPCWSTR,包文件的哈希表示形式。

[out] packageReader

创建的包读取器。

返回值

如果方法成功,则返回 S_OK。 否则,它将返回一个错误代码,该错误代码包括但不限于下表中的代码。

返回代码 说明
APPX_E_INTERLEAVING_NOT_ALLOWED inputStream 提供的 ZIP 文件是交错 OPC 包。
APPX_E_RELATIONSHIPS_NOT_ALLOWED inputStream 提供的 OPC 包包含 OPC 包/部件关系。
APPX_E_MISSING_REQUIRED_FILE 存在 CI 目录时, inputStream 提供的 OPC 包没有清单、块映射或签名文件。
APPX_E_INVALID_MANIFEST 包清单无效。
APPX_E_INVALID_BLOCKMAP 包块映射无效,ZIP 中心目录中的文件列表与块映射中的文件列表不匹配,或者 ZIP 中心目录中列出的文件大小与块映射中列出的文件和块大小不匹配。
APPX_E_DIGEST_MISMATCH 对象的摘要与 expectedDigest 中提供的摘要不匹配。

注解

CreatePackageReader2 方法通过流立即检索应用包的占用元素并验证其内容。 仅当 OPC 包和所有占用元素 (包括 ZIP 中心目录、清单、[Content_Types].xml 和块映射) 有效时,此方法才成功。

通过调用 IAppxDigestProvider::GetDigest 获取 expecteDigest 参数的摘要字符串。

示例

有关示例,请参阅 快速入门:提取应用包内容快速入门:读取应用包清单信息

要求

要求
Header appxpackaging.h