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

IAppxManifestReader

COM
IID4e1bd148-55a0-4480-a3d1-15544710637c継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

パッケージマニフェストのオブジェクトモデルを表し、マニフェストの要素と属性にアクセスするためのメソッドを提供します。(IAppxManifestReader)

解説(Remarks)

このオブジェクトは実装しないでください。代わりに、提供されている実装を使用してください。

この IAppxManifestReader オブジェクトは、アプリパッケージのマニフェストを解析して検証し、マニフェスト内の要素と属性を型安全な方法で公開します。また、必要に応じて、生の XML を表す基になる IStream を取得するためにも使用できます。

注意 Windows 8.1 以降では、マニフェスト内の Language 値のみを列挙する目的で IAppxManifestReader::GetResources を使用することは推奨されません。代わりに IAppxManifestReader2::GetResources を使用してください。これは ScaleDXFeatureLevel などの他のリソース修飾子も列挙するためです。
このオブジェクトは、IAppxFactory インターフェイスの CreateManifestReader メソッド、または IAppxPackageReader インターフェイスの GetManifest メソッドを使用して取得できます。いずれの場合も、IAppxManifestReader オブジェクトが返される前にマニフェストが検証されます。XML が構文的に正しくない場合、上記のメソッドは失敗し、IAppxManifestReader オブジェクトは返されません。

例については、クイックスタート: アプリパッケージのマニフェスト情報を読み取る を参照してください。

メソッド 9

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

vtbl 3 HRESULT GetPackageId(IAppxManifestPackageId** packageId)

マニフェストで定義されているパッケージ識別子を取得します。

packageIdIAppxManifestPackageId**outパッケージ識別子。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

packageId オブジェクトの使用が終わったら、IUnknown::Release メソッドを呼び出してください。

例については、クイックスタート: アプリパッケージのマニフェスト情報を読み取る を参照してください。

vtbl 4 HRESULT GetProperties(IAppxManifestProperties** packageProperties)

マニフェストで定義されているパッケージのプロパティを取得します。

packagePropertiesIAppxManifestProperties**outマニフェストに記述されたパッケージのプロパティ。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。

解説(Remarks)

プロパティは、マニフェストの Properties 要素を使用して指定します。

例については、クイックスタート: アプリパッケージのマニフェスト情報を読み取る を参照してください。

vtbl 5 HRESULT GetPackageDependencies(IAppxManifestPackageDependenciesEnumerator** dependencies)

マニフェストで定義されている依存関係を列挙する列挙子を取得します。

dependenciesIAppxManifestPackageDependenciesEnumerator**out依存関係を列挙する列挙子。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

マニフェストにパッケージの依存関係が見つからない場合、このメソッドは空の列挙子とともに S_OK を返します。

dependencies オブジェクトの使用が終わったら、IUnknown::Release メソッドを呼び出してください。

vtbl 6 HRESULT GetCapabilities(APPX_CAPABILITIES* capabilities)

パッケージが要求する機能 (capability) の一覧を取得します。

capabilitiesAPPX_CAPABILITIES*outパッケージが要求する機能の一覧。これは列挙体の値のビットごとの組み合わせです。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

機能は、パッケージマニフェストの Capability 要素を使用して指定します。

マニフェストにパッケージの機能が定義されていない場合、このメソッドは値 0 とともに S_OK を返します。

vtbl 7 HRESULT GetResources(IAppxManifestResourcesEnumerator** resources)

マニフェストで定義されているリソースを列挙する列挙子を取得します。

resourcesIAppxManifestResourcesEnumerator**outリソースを列挙する列挙子。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。

解説(Remarks)

リソースは、マニフェストの Resources 要素を使用して指定します。

resources オブジェクトの使用が終わったら、IUnknown::Release メソッドを呼び出してください。

vtbl 8 HRESULT GetDeviceCapabilities(IAppxManifestDeviceCapabilitiesEnumerator** deviceCapabilities)

マニフェストで定義されているデバイス機能を列挙する列挙子を取得します。

deviceCapabilitiesIAppxManifestDeviceCapabilitiesEnumerator**outデバイス機能を列挙する列挙子。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

デバイス機能は、パッケージマニフェストの DeviceCapability 要素を使用して指定します。

マニフェストにパッケージのデバイス機能が定義されていない場合、このメソッドは空の列挙子とともに S_OK を返します。

deviceCapabilities オブジェクトの使用が終わったら、IUnknown::Release メソッドを呼び出してください。

vtbl 9 HRESULT GetPrerequisite(LPWSTR name, ULONGLONG* value)

パッケージマニフェストで定義されている、指定した前提条件を取得します。

nameLPWSTRin前提条件の名前。"OSMinVersion" または "OSMaxVersionTested" のいずれかです。
valueULONGLONG*out指定した前提条件。マニフェストでは、ドットで区切られた 3 つ組の表記は Major.Minor.AppPlatform です。これは次のように 64 ビット値に変換されます。 最上位ワードには Major バージョンが格納されます。次のワードには Minor バージョンが格納されます。 次のワードには、指定されている場合、省略可能な AppPlatform バージョンが格納されます。

戻り値

型: HRESULT

このメソッドは、次の値のいずれかを返すことがあります。

戻り値 説明
E_INVALIDARG
name で指定された前提条件がマニフェストに定義されていません。

解説(Remarks)

前提条件は、パッケージマニフェストの OSMinVersion 要素および OSMaxVersionTested 要素を使用して指定します。

vtbl 10 HRESULT GetApplications(IAppxManifestApplicationsEnumerator** applications)

マニフェストで定義されているアプリケーションを列挙する列挙子を取得します。

applicationsIAppxManifestApplicationsEnumerator**outアプリケーションを列挙する列挙子。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

マニフェストにアプリケーションが定義されていない場合、このメソッドは空の IAppxManifestApplicationsEnumerator オブジェクトとともに S_OK を返します。

IAppxManifestReader オブジェクトの使用が終わったら、IUnknown::Release メソッドを呼び出してください。

例については、クイックスタート: アプリパッケージのマニフェスト情報を読み取る を参照してください。

vtbl 11 HRESULT GetStream(IStream** manifestStream)

マニフェストリーダーが解析して読み取った生の XML を取得します。

manifestStreamIStream**outマニフェストの XML コンテンツを表す読み取り専用ストリーム。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

生の XML ストリームはソースストリーム全体であり、マニフェストリーダーが無視する他の名前空間の要素や属性が含まれている場合があります。たとえば、XML ストリームには、Package 要素の IgnorableNamespaces 属性で指定された他の名前空間の要素が含まれることがありますが、これらは検証されていません。そのため、この XML は信頼できないものとして扱う必要があります。

生の XML を解析するのではなく、パッケージング API を使用してマニフェストから情報を取得することをお勧めします。

XML を解析する場合は、XML データの検証と XML のセキュリティテストを必ず実施してください。

manifestStream オブジェクトの使用が終わったら、IUnknown::Release メソッドを呼び出してください。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IAppxManifestReader "{4E1BD148-55A0-4480-A3D1-15544710637C}"
#usecom global IAppxManifestReader IID_IAppxManifestReader "{}"
#comfunc global IAppxManifestReader_GetPackageId            3 sptr
#comfunc global IAppxManifestReader_GetProperties           4 sptr
#comfunc global IAppxManifestReader_GetPackageDependencies  5 sptr
#comfunc global IAppxManifestReader_GetCapabilities         6 var
#comfunc global IAppxManifestReader_GetResources            7 sptr
#comfunc global IAppxManifestReader_GetDeviceCapabilities   8 sptr
#comfunc global IAppxManifestReader_GetPrerequisite         9 wstr,var
#comfunc global IAppxManifestReader_GetApplications         10 sptr
#comfunc global IAppxManifestReader_GetStream               11 sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。