IOpcPackage
COM公式ドキュメント
パッケージを表し、パッケージのパートおよびリレーションシップにアクセスするためのメソッドを提供します。
解説(Remarks)
このインターフェイスへのポインターを取得するには、IOpcFactory::CreatePackage または IOpcFactory::ReadPackageFromStream メソッドを呼び出します。
パッケージリレーションシップは、パッケージからターゲットリソースへのリンクによって、パッケージへのエントリポイントとして機能します。パッケージリレーションシップのターゲットは、多くの場合、ECMA-376 OpenXML, 1st Edition, Part 2: Open Packaging Conventions (OPC) に記述された重要なパート、またはパッケージ形式の設計者によって定義された重要なパートです。
たとえば、パッケージリレーションシップは、パッケージのメタデータを格納する Core Properties パートへのアクセスや、パッケージ設計者によってパートとデータが定義された形式固有のデータを含むパートへのアクセスを提供します。ワードプロセッシング用 OpenXML 形式の Main Document パートは、そのような形式固有のパートの一例です。このパートの詳細については、ECMA-376 OpenXML (https://www.ecma-international.org/publications-and-standards/standards/ecma-376/) の Part 1: Fundamentals を参照してください。
目的のパートを見つける確実な方法は、リレーションシップの種類 (relationship type) を使用することです。これにはいくつかの手順が必要です。詳細については、Parts Overview および Finding the Core Properties Part の手順を参照してください。
パッケージの詳細については、Open Packaging Conventions Fundamentals および OPC を参照してください。
スレッドセーフティ
パッケージング オブジェクトはスレッドセーフではありません。
詳細については、Getting Started with the Packaging API を参照してください。
メソッド 2
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
IOpcPart インターフェイス ポインターを保持するパートセット オブジェクトを取得します。
| partSet | IOpcPartSet** | out | パート オブジェクトへの IOpcPart インターフェイス ポインターを保持するパートセット オブジェクトの IOpcPartSet インターフェイスへのポインターです。 |
戻り値
このメソッドは HRESULT を返します。返される可能性のある値には、次の表に示すもの (これらに限定されません) が含まれます。
| リターン コード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| partSet パラメーターが NULL です。 | |
|
Package Consumption Error Group の HRESULT エラー コードです。 |
|
Part URI Error Group の HRESULT エラー コードです。 |
解説(Remarks)
IOpcPart インターフェイスは、パッケージ内の Relationships パート以外のパートを表すためにのみ使用されます。
パッケージ、パート、リレーションシップ、およびそれらを表すインターフェイスの詳細については、Open Packaging Conventions Fundamentals および ECMA-376 OpenXML, 1st Edition, Part 2: Open Packaging Conventions (OPC) を参照してください。
スレッドセーフティ
パッケージング オブジェクトはスレッドセーフではありません。
詳細については、Getting Started with the Packaging API を参照してください。
パッケージリレーションシップを格納する Relationships パートを表すリレーションシップセット オブジェクトを取得します。
| relationshipSet | IOpcRelationshipSet** | out | リレーションシップセット オブジェクトの IOpcRelationshipSet インターフェイスへのポインターです。このセットは、パッケージリレーションシップを格納する Relationships パートを表します。 |
戻り値
このメソッドは HRESULT を返します。返される可能性のある値には、次の表に示すもの (これらに限定されません) が含まれます。
| リターン コード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| relationshipSet パラメーターが NULL です。 | |
|
Package Consumption Error Group の HRESULT エラー コードです。 |
|
Part URI Error Group の HRESULT エラー コードです。 |
解説(Remarks)
セットに含まれるパッケージリレーションシップは、アプリケーションにとってのパッケージへのエントリポイントを提供します。
パッケージ、パート、リレーションシップ、およびそれらを表すインターフェイスの詳細については、Open Packaging Conventions Fundamentals および ECMA-376 OpenXML, 1st Edition, Part 2: Open Packaging Conventions (OPC) を参照してください。
スレッドセーフティ
パッケージング オブジェクトはスレッドセーフではありません。
詳細については、Getting Started with the Packaging API を参照してください。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IOpcPackage "{42195949-3B79-4FC8-89C6-FC7FB979EE70}"
#usecom global IOpcPackage IID_IOpcPackage "{}"
#comfunc global IOpcPackage_GetPartSet 3 sptr
#comfunc global IOpcPackage_GetRelationshipSet 4 sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。