共用方式為


IAppxFile::GetStream 方法 (appxpackaging.h)

取得唯讀數據流,其中包含檔案的未壓縮內容。

語法

HRESULT GetStream(
  [out, retval] IStream **stream
);

參數

[out, retval] stream

類型: IStream**

唯讀數據流,其中包含檔案的未壓縮內容。

傳回值

類型: HRESULT

如果方法成功,它會 傳回S_OK

[嚴重]如果 zip 封存中的檔案本機檔頭或數據描述項無效,OPC 錯誤碼 (0x8051xxxx) 。 此失敗會導致整個 OPC zip 取用者進入無效狀態,發生此錯誤之後,無法從 IAppxPackageReader 物件存取其他檔案。

如果先前已讀取數據流,且其CRC無效,HRESULT_FROM_WIN32 (ERROR_CRC) (0x80070017) 。

從傳回 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