共用方式為


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。 否則,它會傳回錯誤碼,其中包含下表中的錯誤碼,但不限於這些錯誤碼。

傳回碼 Description
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