IOpcRelationship
COM公式ドキュメント
リレーションシップを表します。リレーションシップとは、ソース (パートまたはパッケージ) とターゲットとの間のリンクです。
解説(Remarks)
リレーションシップを表すリレーションシップオブジェクトを作成するには、IOpcRelationshipSet::CreateRelationship メソッドを呼び出します。既存のリレーションシップを表すリレーションシップオブジェクトのインターフェイスへのポインターを取得するには、IOpcRelationshipSet::GetRelationship メソッドまたは IOpcRelationshipEnumerator::GetCurrent メソッドを呼び出します。
パートをターゲットとするリレーションシップのマークアップの例:
<Relationship Id="rId1"
Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument"
Target="word/document.xml" />
パッケージ内のパートを見つけるための確実な方法は、リレーションシップタイプ (Relationship 要素の Type 属性) を使用することです。リレーションシップタイプを使用する理由の詳細については、Parts Overview を参照してください。リレーションシップタイプを使用してパートを見つける例については、Finding the Core Properties Part を参照してください。
リレーションシップの有効な識別子は xsd:ID の制約に従います。この制約は W3C 勧告『XML Schema Part 2: Datatypes Second Edition』 (http://www.w3.org/TR/xmlschema-2/#ID) のセクション 3.3.8 ID に規定されています。
IOpcRelationship インターフェイスのメソッドは、リレーションシップ (リレーションシップオブジェクトによって表されます) のリレーションシッププロパティへのアクセスを提供します。メソッド、対応するプロパティ、および説明を次の表に示します。
| メソッド | プロパティ | 説明 |
|---|---|---|
| GetId | リレーションシップ識別子 | パッケージ内でローカルな、リレーションシップの一意で任意の識別子。 |
| GetRelationshipType | リレーションシップタイプ | パッケージ設計者が定義したリレーションシップの修飾名。 |
| GetSourceUri | ソース URI | リレーションシップのソースの URI。ソース URI には、パッケージの URI またはパートの URI を指定できます。 |
| GetTargetMode | ターゲットモード | リレーションシップのターゲットがパッケージ内部にあるか外部にあるかを示します。 |
| GetTargetUri | ターゲット URI | リレーションシップのターゲットの URI。 |
リレーションシップの詳細については、Open Packaging Conventions Fundamentals および ECMA-376 OpenXML, 1st Edition, Part 2: Open Packaging Conventions (OPC) を参照してください。
スレッドセーフティ
パッケージングオブジェクトはスレッドセーフではありません。
詳細については、Getting Started with the Packaging API を参照してください。
メソッド 5
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
リレーションシップの一意の識別子を取得します。
| relationshipIdentifier | LPWSTR* | out | リレーションシップの識別子。 リレーションシップの識別子は任意であり、パッケージ内でローカルです。 有効な識別子は xsd:ID の制約に従います。この制約は W3C 勧告『XML Schema Part 2: Datatypes Second Edition』 (http://www.w3.org/TR/xmlschema-2/#ID) のセクション 3.3.8 ID に規定されています。 |
戻り値
このメソッドは HRESULT を返します。戻り値には次の表の値が含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| relationshipIdentifier パラメーターが NULL です。 |
解説(Remarks)
リレーションシップの識別子は任意でパッケージ内でローカルなものであるため、リレーションシップを見つける用途には適していません。
目的のパートを見つける確実な方法は、リレーションシップタイプを使用することです。
パートを見つけるには複数の手順が必要です。パートの検索の詳細については、Finding the Core Properties Part を参照してください。
このメソッドは、relationshipIdentifier で返される文字列が使用するメモリを割り当てます。メソッドが成功した場合は、CoTaskMemFree 関数を呼び出してメモリを解放してください。
リレーションシップの詳細については、Open Packaging Conventions Fundamentals および ECMA-376 OpenXML, 1st Edition, Part 2: Open Packaging Conventions (OPC) を参照してください。
スレッドセーフティ
パッケージングオブジェクトはスレッドセーフではありません。
詳細については、Getting Started with the Packaging API を参照してください。
リレーションシップタイプを取得します。
| relationshipType | LPWSTR* | out | リレーションシップタイプを受け取ります。これは、パッケージ形式の設計者または OPC によって定義されたリレーションシップの修飾名です。 リレーションシップタイプの詳細については、「解説」を参照してください。 |
戻り値
このメソッドは HRESULT を返します。戻り値には次の表の値が含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| relationshipType パラメーターが NULL です。 |
解説(Remarks)
このメソッドは、relationshipType で返される文字列が使用するメモリを割り当てます。メソッドが成功した場合は、CoTaskMemFree 関数を呼び出してメモリを解放してください。
目的のパートを見つける確実な方法は、リレーションシップタイプを使用することです。
目的のパートを見つけるには複数の手順が必要です。パートの検索の詳細については、Finding the Core Properties Part を参照してください。
リレーションシップ、リレーションシップタイプ、および OPC が定義するリレーションシップタイプの一覧の詳細については、Open Packaging Conventions Fundamentals および OPC を参照してください。
スレッドセーフティ
パッケージングオブジェクトはスレッドセーフではありません。
詳細については、Getting Started with the Packaging API を参照してください。
リレーションシップのソースの URI を取得します。
| sourceUri | IOpcUri** | out | リレーションシップのソースの URI を表す OPC URI オブジェクトの IOpcUri インターフェイスへのポインター。 |
戻り値
このメソッドは HRESULT を返します。戻り値には次の表の値が含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| sourceUri パラメーターが NULL です。 |
解説(Remarks)
リレーションシップのソースがパッケージ自体である場合、sourceUri の URI はパッケージのルート "/" を表します。
リレーションシップのターゲットがパートである場合は、sourceUri で受け取った IOpcUri インターフェイスポインターから IOpcUri::CombinePartUri メソッドを呼び出してパート名を組み立てます。IOpcUri::CombinePartUri の呼び出しの入力パラメーターには、GetTargetUri メソッドの targetUri パラメーターで受け取った相対 URI を使用します。例については、Resolving a Part Name from a Target URI を参照してください。
リレーションシップの詳細については、Open Packaging Conventions Fundamentals および ECMA-376 OpenXML, 1st Edition, Part 2: Open Packaging Conventions (OPC) を参照してください。
スレッドセーフティ
パッケージングオブジェクトはスレッドセーフではありません。
詳細については、Getting Started with the Packaging API を参照してください。
リレーションシップのターゲットの URI を取得します。
| targetUri | IUri** | out | リレーションシップのターゲットの URI を表す IUri インターフェイスへのポインター。 リレーションシップのターゲットが内部の場合、ターゲットはパートであり、ターゲットの URI はソースパートの URI に対する相対 URI になります。 |
戻り値
このメソッドは HRESULT を返します。戻り値には次の表の値が含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| targetUri パラメーターが NULL です。 |
解説(Remarks)
目的のパートを見つける確実な方法は、リレーションシップタイプを使用することです。
目的のパートを見つけるには複数の手順が必要です。パートの検索の詳細については、Parts Overview および Finding the Core Properties Part を参照してください。
リレーションシップのターゲットが内部か外部かを判断するには、GetTargetUri メソッドを呼び出します。
リレーションシップのターゲットが内部の場合、ターゲットはパートです。
リレーションシップのターゲットがパートである場合、targetUri の URI はリレーションシップのソースの URI に対する相対 URI になります。
リレーションシップのターゲットがパートである場合は、GetSourceUri メソッドの sourceUri パラメーターで受け取った IOpcUri インターフェイスポインターから IOpcUri::CombinePartUri メソッドを呼び出してパート名を組み立てます。IOpcUri::CombinePartUri の呼び出しの入力パラメーターには、targetUri で受け取った相対 URI を使用します。例については、Resolving a Part Name from a Target URI を参照してください。
リレーションシップの詳細については、Open Packaging Conventions Fundamentals および ECMA-376 OpenXML, 1st Edition, Part 2: Open Packaging Conventions (OPC) を参照してください。
スレッドセーフティ
パッケージングオブジェクトはスレッドセーフではありません。
詳細については、Getting Started with the Packaging API を参照してください。
リレーションシップのターゲットがパッケージ内部にあるか外部にあるかを示す値を取得します。
| targetMode | OPC_URI_TARGET_MODE* | out | リレーションシップのターゲットがパッケージ内部にあるか外部にあるかを示す値。 リレーションシップのターゲットが内部の場合、ターゲットはパートです。 リレーションシップのターゲットが外部の場合、ターゲットはパッケージ外のリソースです。 |
戻り値
このメソッドは HRESULT を返します。戻り値には次の表の値が含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| targetMode パラメーターが NULL です。 |
解説(Remarks)
リレーションシップのターゲットが内部の場合、ターゲットはパートです。ターゲットの URI はソースパートの URI に対する相対 URI になります。
リレーションシップのターゲットの URI を取得するには、IOpcRelationship::GetTargetUri メソッドを呼び出します。
目的のパートを見つける確実な方法は、リレーションシップタイプを使用することです。
目的のパートを見つけるには複数の手順が必要です。パートの検索の詳細については、Parts Overview および Finding the Core Properties Part を参照してください。
リレーションシップの詳細については、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_IOpcRelationship "{42195949-3B79-4FC8-89C6-FC7FB979EE72}" #usecom global IOpcRelationship IID_IOpcRelationship "{}" #comfunc global IOpcRelationship_GetId 3 var #comfunc global IOpcRelationship_GetRelationshipType 4 var #comfunc global IOpcRelationship_GetSourceUri 5 sptr #comfunc global IOpcRelationship_GetTargetUri 6 sptr #comfunc global IOpcRelationship_GetTargetMode 7 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IOpcRelationship "{42195949-3B79-4FC8-89C6-FC7FB979EE72}" #usecom global IOpcRelationship IID_IOpcRelationship "{}" #comfunc global IOpcRelationship_GetId 3 sptr #comfunc global IOpcRelationship_GetRelationshipType 4 sptr #comfunc global IOpcRelationship_GetSourceUri 5 sptr #comfunc global IOpcRelationship_GetTargetUri 6 sptr #comfunc global IOpcRelationship_GetTargetMode 7 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。