IAppxManifestReader
COM公式ドキュメント
パッケージマニフェストのオブジェクトモデルを表し、マニフェストの要素と属性にアクセスするためのメソッドを提供します。(IAppxManifestReader)
解説(Remarks)
このオブジェクトは実装しないでください。代わりに、提供されている実装を使用してください。
この IAppxManifestReader オブジェクトは、アプリパッケージのマニフェストを解析して検証し、マニフェスト内の要素と属性を型安全な方法で公開します。また、必要に応じて、生の XML を表す基になる IStream を取得するためにも使用できます。
例
例については、クイックスタート: アプリパッケージのマニフェスト情報を読み取る を参照してください。
メソッド 9
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
マニフェストで定義されているパッケージ識別子を取得します。
| packageId | IAppxManifestPackageId** | out | パッケージ識別子。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
packageId オブジェクトの使用が終わったら、IUnknown::Release メソッドを呼び出してください。
例
例については、クイックスタート: アプリパッケージのマニフェスト情報を読み取る を参照してください。
マニフェストで定義されているパッケージのプロパティを取得します。
| packageProperties | IAppxManifestProperties** | out | マニフェストに記述されたパッケージのプロパティ。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。
解説(Remarks)
マニフェストで定義されている依存関係を列挙する列挙子を取得します。
| dependencies | IAppxManifestPackageDependenciesEnumerator** | out | 依存関係を列挙する列挙子。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
マニフェストにパッケージの依存関係が見つからない場合、このメソッドは空の列挙子とともに S_OK を返します。
dependencies オブジェクトの使用が終わったら、IUnknown::Release メソッドを呼び出してください。
パッケージが要求する機能 (capability) の一覧を取得します。
| capabilities | APPX_CAPABILITIES* | out | パッケージが要求する機能の一覧。これは列挙体の値のビットごとの組み合わせです。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
機能は、パッケージマニフェストの Capability 要素を使用して指定します。
マニフェストにパッケージの機能が定義されていない場合、このメソッドは値 0 とともに S_OK を返します。
マニフェストで定義されているリソースを列挙する列挙子を取得します。
| resources | IAppxManifestResourcesEnumerator** | out | リソースを列挙する列挙子。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。
解説(Remarks)
リソースは、マニフェストの Resources 要素を使用して指定します。
resources オブジェクトの使用が終わったら、IUnknown::Release メソッドを呼び出してください。
マニフェストで定義されているデバイス機能を列挙する列挙子を取得します。
| deviceCapabilities | IAppxManifestDeviceCapabilitiesEnumerator** | out | デバイス機能を列挙する列挙子。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
デバイス機能は、パッケージマニフェストの DeviceCapability 要素を使用して指定します。
マニフェストにパッケージのデバイス機能が定義されていない場合、このメソッドは空の列挙子とともに S_OK を返します。
deviceCapabilities オブジェクトの使用が終わったら、IUnknown::Release メソッドを呼び出してください。
パッケージマニフェストで定義されている、指定した前提条件を取得します。
| name | LPWSTR | in | 前提条件の名前。"OSMinVersion" または "OSMaxVersionTested" のいずれかです。 |
| value | ULONGLONG* | out | 指定した前提条件。マニフェストでは、ドットで区切られた 3 つ組の表記は Major.Minor.AppPlatform です。これは次のように 64 ビット値に変換されます。 最上位ワードには Major バージョンが格納されます。次のワードには Minor バージョンが格納されます。 次のワードには、指定されている場合、省略可能な AppPlatform バージョンが格納されます。 |
戻り値
解説(Remarks)
前提条件は、パッケージマニフェストの OSMinVersion 要素および OSMaxVersionTested 要素を使用して指定します。
マニフェストで定義されているアプリケーションを列挙する列挙子を取得します。
| applications | IAppxManifestApplicationsEnumerator** | out | アプリケーションを列挙する列挙子。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
マニフェストにアプリケーションが定義されていない場合、このメソッドは空の IAppxManifestApplicationsEnumerator オブジェクトとともに S_OK を返します。
IAppxManifestReader オブジェクトの使用が終わったら、IUnknown::Release メソッドを呼び出してください。
例
例については、クイックスタート: アプリパッケージのマニフェスト情報を読み取る を参照してください。
マニフェストリーダーが解析して読み取った生の XML を取得します。
| manifestStream | IStream** | out | マニフェストの XML コンテンツを表す読み取り専用ストリーム。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
生の XML ストリームはソースストリーム全体であり、マニフェストリーダーが無視する他の名前空間の要素や属性が含まれている場合があります。たとえば、XML ストリームには、Package 要素の IgnorableNamespaces 属性で指定された他の名前空間の要素が含まれることがありますが、これらは検証されていません。そのため、この XML は信頼できないものとして扱う必要があります。
生の XML を解析するのではなく、パッケージング API を使用してマニフェストから情報を取得することをお勧めします。
XML を解析する場合は、XML データの検証と XML のセキュリティテストを必ず実施してください。
manifestStream オブジェクトの使用が終わったら、IUnknown::Release メソッドを呼び出してください。
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 指定が可能。#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 sptr #comfunc global IAppxManifestReader_GetResources 7 sptr #comfunc global IAppxManifestReader_GetDeviceCapabilities 8 sptr #comfunc global IAppxManifestReader_GetPrerequisite 9 wstr,sptr #comfunc global IAppxManifestReader_GetApplications 10 sptr #comfunc global IAppxManifestReader_GetStream 11 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。