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 |