共用方式為


IAppxFactory3::CreatePackageReader2 方法 (appxpackaging.h)

重要

某些資訊與發行前版本產品有關,在發行前版本產品可能經過大幅修改。 Microsoft未就此處提供的資訊提供任何明示或默示擔保。

IStream提供的內容建立唯讀套件讀取器,並搭配選擇性參數來指定封裝的預期摘要。 此方法不會驗證數字簽名。

語法

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

參數

[in] inputStream

傳遞封裝以供讀取的輸入數據流。 數據流必須支援 ISequentialStream::ReadIStream::Seek,以及 IStream::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 inputStream 所傳遞的 OPC 套件 沒有指令清單、區塊對應,或 CI 目錄存在時簽章檔案。
APPX_E_INVALID_MANIFEST 套件指令清單無效。
APPX_E_INVALID_BLOCKMAP 套件區塊對應無效、ZIP 中央目錄中的檔案清單不符合區塊對應中的檔案清單,或 ZIP 中央目錄中所列的檔案大小不符合區塊對應中所列的檔案和區塊大小。
APPX_E_DIGEST_MISMATCH 對象的摘要與 expectedDigest中提供的摘要不符。

言論

CreatePackageReader2 方法會立即透過數據流擷取應用程式套件的使用量元素,並驗證其內容。 只有當 OPC 套件和所有使用量元素(包括 ZIP 中央目錄、指令清單、[Content_Types].xml和區塊對應)有效時,此方法才會成功。

呼叫 IAppxDigestProvider::GetDigest,以取得 expecteDigest 參數的摘要字串。

例子

如需範例,請參閱 快速入門:擷取應用程式套件內容快速入門:讀取應用程式套件指令清單資訊。

要求

要求 價值
標頭 appxpackaging.h