Win32 API 日本語リファレンス
ホームStorage.Packaging.Appx › IAppxBundleFactory2

IAppxBundleFactory2

COM
IID7325b83d-0185-42c4-82ac-be34ab1a2a8a継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

バンドルパッケージの読み取りおよび書き込みを行うオブジェクトを作成します。バンドルファイルに期待されるダイジェストを指定できます。

メソッド 1

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT CreateBundleReader2(IStream* inputStream, LPWSTR expectedDigest, IAppxBundleReader** bundleReader)

IStream オブジェクトからコンテンツを読み取る読み取り専用のバンドルオブジェクトを作成します。バンドルに期待されるダイジェストを指定する省略可能なパラメーターがあります。

inputStreamIStream*in読み取り対象となるパッケージのコンテンツを提供する入力ストリーム。このストリームは ISequentialStream::ReadIStream::Seek、および IStream::Stat をサポートしている必要があります。これらのメソッドが失敗した場合、そのエラーコードが本メソッドに渡され、本メソッドの戻り値として返されることがあります。
expectedDigestLPWSTRin期待されるダイジェスト(バンドルファイルのハッシュ化された表現)を格納する LPCWSTR。
bundleReaderIAppxBundleReader**out作成されたバンドルリーダー。

戻り値

メソッドが成功した場合は 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_MANIFEST バンドルマニフェストが有効ではありません。
APPX_E_DIGEST_MISMATCH オブジェクトのダイジェストが expectedDigest で指定されたダイジェストと一致しません。

解説(Remarks)

expecteDigest パラメーターに指定するダイジェスト文字列は、IAppxDigestProvider::GetDigest を呼び出して取得します。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

#define global IID_IAppxBundleFactory2 "{7325B83D-0185-42C4-82AC-BE34AB1A2A8A}"
#usecom global IAppxBundleFactory2 IID_IAppxBundleFactory2 "{378E0446-5384-43B7-8877-E7DBDD883446}"
#comfunc global IAppxBundleFactory2_CreateBundleReader2  3 sptr,wstr,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。