IOpcRelationshipSet
COM公式ドキュメント
Relationships パートを、リレーションシップオブジェクトへの IOpcRelationship インターフェイスポインターの順序なしのセットとして表します。
解説(Remarks)
リレーションシップオブジェクトが作成され、そのポインターがセットに追加されると、それが表すリレーションシップはパッケージの保存時に保存されます。
IOpcRelationship インターフェイスポインターがセットから削除されると、それが表すリレーションシップはパッケージの保存時に保存されません。
リレーションシップがセット内に表現されている場合、そのリレーションシップは、このセットが表す Relationships パートに格納されます。
リレーションシップのターゲットのパート名を組み立てる方法については、ターゲット URI からのパート名の解決を参照してください。
リレーションシップの詳細については、Open Packaging Conventions の基礎および ECMA-376 OpenXML, 1st Edition, Part 2: Open Packaging Conventions (OPC) を参照してください。
IOpcRelationship インターフェイスは、リレーションシップのプロパティへのアクセスを提供します。これらのプロパティの詳細については、リレーションシップの概要および IOpcRelationship を参照してください。
スレッドセーフティ
パッケージングオブジェクトはスレッドセーフではありません。
詳細については、パッケージング API の使用開始を参照してください。
メソッド 7
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
指定したリレーションシップを表すリレーションシップオブジェクトをセットから取得します。
| relationshipIdentifier | LPWSTR | in | リレーションシップの一意の識別子です。 |
| relationship | IOpcRelationship** | out | 指定した識別子を持つリレーションシップを表すリレーションシップオブジェクトの IOpcRelationship インターフェイスへのポインターです。 |
戻り値
このメソッドは HRESULT を返します。返される値には、次の表の値が含まれますが、これらに限定されません。
| リターンコード/値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| relationship パラメーターが NULL です。 | |
|
指定されたリレーションシップは存在しません。 |
|
Package Consumption エラーグループの HRESULT エラーコードです。 |
|
Part URI エラーグループの HRESULT エラーコードです。 |
解説(Remarks)
IOpcRelationship インターフェイスは、リレーションシップのプロパティへのアクセスを提供します。これらのプロパティの詳細については、リレーションシップの概要および IOpcRelationship を参照してください。
スレッドセーフティ
パッケージングオブジェクトはスレッドセーフではありません。
詳細については、パッケージング API の使用開始を参照してください。
指定したリレーションシップを表すリレーションシップオブジェクトを作成し、そのオブジェクトの IOpcRelationship インターフェイスへのポインターをセットに追加します。
| relationshipIdentifier | LPWSTR | in | リレーションシップオブジェクトとして表現されるリレーションシップの一意の識別子です。ランダムに生成された識別子を使用するには、このパラメーターに NULL を渡します。 有効な識別子は xsd:ID の制約に準拠します。この制約は W3C Recommendation, XML Schema Part 2: Datatypes Second Edition (http://www.w3.org/TR/xmlschema-2/#ID) のセクション 3.3.8 ID に記載されています。 |
| relationshipType | LPWSTR | in | リレーションシップオブジェクトとして表現されるリレーションシップの役割を定義するリレーションシップの種類 (relationship type) です。 |
| targetUri | IUri* | in | リレーションシップオブジェクトとして表現されるリレーションシップのターゲットを指す URI です。 targetMode の値が OPC_URI_TARGET_MODE_INTERNAL の場合、ターゲットはパートであり、URI はリレーションシップのソースからの相対 URI でなければなりません。 targetMode の値が OPC_URI_TARGET_MODE_EXTERNAL の場合、ターゲットはパッケージ外のリソースであり、URI は絶対 URI、またはパッケージの場所からの相対 URI のいずれでもかまいません。 リレーションシップのターゲットの URI の詳細については、OPC を参照してください。 |
| targetMode | OPC_URI_TARGET_MODE | in | リレーションシップオブジェクトとして表現されるリレーションシップのターゲットが、パッケージの内部にあるか外部にあるかを示す値です。 |
| relationship | IOpcRelationship** | out | リレーションシップを表すリレーションシップオブジェクトの IOpcRelationship インターフェイスへのポインターです。 新しいオブジェクトへのポインターが不要な場合、このパラメーターは NULL にできます。 |
戻り値
このメソッドは HRESULT を返します。返される値には、次の表の値が含まれますが、これらに限定されません。
| リターンコード/値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| targetMode パラメーターに渡された値が、有効な OPC_URI_TARGET_MODE 列挙値ではありません。 | |
| relationshipType および targetUri パラメーターの少なくとも一方が NULL です。 | |
|
同じ識別子を持つリレーションシップが現在のパッケージに既に存在します。 |
|
リレーションシップの Id 属性が OPC で規定された規則に準拠していません。 |
|
targetUri の URI が絶対 URI であり、かつ targetMode の値が OPC_URI_TARGET_MODE_INTERNAL です。このターゲットモードを指定する場合、ターゲットの URI は相対 URI でなければなりません。 |
|
リレーションシップの Target 属性が OPC で規定された規則に準拠していません。 |
|
リレーションシップの Type 属性が OPC で規定された規則に準拠していません。 |
|
Package Consumption エラーグループの HRESULT エラーコードです。 |
|
Part URI エラーグループの HRESULT エラーコードです。 |
解説(Remarks)
リレーションシップオブジェクトが作成され、そのポインターがセットに追加されると、それが表すリレーションシップはパッケージの保存時に保存されます。
IOpcRelationship インターフェイスは、リレーションシップのプロパティへのアクセスを提供します。これらのプロパティの詳細については、リレーションシップの概要および IOpcRelationship を参照してください。
スレッドセーフティ
パッケージングオブジェクトはスレッドセーフではありません。
詳細については、パッケージング API の使用開始を参照してください。
指定した IOpcRelationship インターフェイスポインターをセットから削除します。
| relationshipIdentifier | LPWSTR | in | リレーションシップの一意の識別子です。 削除される IOpcRelationship インターフェイスポインターは、指定した識別子を持つリレーションシップを表すリレーションシップオブジェクトへのポインターです。 |
戻り値
このメソッドは HRESULT を返します。返される値には、次の表の値が含まれますが、これらに限定されません。
| リターンコード/値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| relationshipIdentifier パラメーターが NULL です。 | |
|
指定されたリレーションシップは存在しません。 |
|
Package Consumption エラーグループの HRESULT エラーコードです。 |
|
Part URI エラーグループの HRESULT エラーコードです。 |
解説(Remarks)
IOpcRelationship インターフェイスポインターがセットから削除されると、それが表すリレーションシップはパッケージの保存時に保存されません。
スレッドセーフティ
パッケージングオブジェクトはスレッドセーフではありません。
詳細については、パッケージング API の使用開始を参照してください。
指定したリレーションシップが、セット内でリレーションシップオブジェクトとして表現されているかどうかを示す値を取得します。
| relationshipIdentifier | LPWSTR | in | リレーションシップの一意の識別子です。 | ||||||
| relationshipExists | BOOL* | out | 次のいずれかの値です。
|
戻り値
このメソッドは HRESULT を返します。返される値には、次の表の値が含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| relationshipIdentifier および relationshipExists パラメーターの少なくとも一方が NULL です。 | |
|
Package Consumption エラーグループの HRESULT エラーコードです。 |
|
Part URI エラーグループの HRESULT エラーコードです。 |
解説(Remarks)
リレーションシップがセット内に表現されている場合、そのリレーションシップは、そのセットが表す Relationships パートに格納されます。
スレッドセーフティ
パッケージングオブジェクトはスレッドセーフではありません。
詳細については、パッケージング API の使用開始を参照してください。
セット内の IOpcRelationship インターフェイスポインターの列挙子を取得します。
| relationshipEnumerator | IOpcRelationshipEnumerator** | out | セット内の IOpcRelationship インターフェイスポインターの列挙子の IOpcRelationshipEnumerator インターフェイスへのポインターです。 |
戻り値
このメソッドは HRESULT を返します。返される値には、次の表の値が含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| relationshipEnumerator パラメーターが NULL です。 | |
|
Package Consumption エラーグループの HRESULT エラーコードです。 |
|
Part URI エラーグループの HRESULT エラーコードです。 |
セット内の IOpcRelationship インターフェイスポインターのうち、指定したリレーションシップの種類を持つリレーションシップの表現を指すポインターの列挙子を取得します。
| relationshipType | LPWSTR | in | 列挙対象の IOpcRelationship インターフェイスポインターを特定するために使用するリレーションシップの種類です。 |
| relationshipEnumerator | IOpcRelationshipEnumerator** | out | セット内の IOpcRelationship インターフェイスポインターのうち、指定したリレーションシップの種類を持つリレーションシップの表現を指すポインターの列挙子の IOpcRelationshipEnumerator インターフェイスへのポインターです。 |
戻り値
このメソッドは HRESULT を返します。返される値には、次の表の値が含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| relationshipType および relationshipEnumerator パラメーターの少なくとも一方が NULL です。 | |
|
Package Consumption エラーグループの HRESULT エラーコードです。 |
|
Part URI エラーグループの HRESULT エラーコードです。 |
解説(Remarks)
リレーションシップのターゲットのパート名を組み立てる方法については、IOpcRelationship のトピックを参照してください。
IOpcRelationship インターフェイスは、リレーションシップのプロパティへのアクセスを提供します。これらのプロパティの詳細については、リレーションシップの概要および IOpcRelationship を参照してください。
リレーションシップの詳細については、Open Packaging Conventions の基礎および ECMA-376 OpenXML, 1st Edition, Part 2: Open Packaging Conventions (OPC) を参照してください。
スレッドセーフティ
パッケージングオブジェクトはスレッドセーフではありません。
詳細については、パッケージング API の使用開始を参照してください。
セットが表す Relationships パートのパートコンテンツを含む読み取り専用ストリームを取得します。
| contents | IStream** | out | セットが表す Relationships パートのパートコンテンツを含む読み取り専用ストリームの IStream インターフェイスへのポインターです。 Relationships パートに格納されたリレーションシップが変更されていない場合、パートコンテンツには、セット内のリレーションシップオブジェクトからは他の方法でアクセスできないマークアップ互換性データが含まれることがあります。 |
戻り値
このメソッドは HRESULT を返します。返される値には、次の表の値が含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| contents パラメーターが NULL です。 | |
|
Package Consumption エラーグループの HRESULT エラーコードです。 |
|
Part URI エラーグループの HRESULT エラーコードです。 |
解説(Remarks)
このメソッドを呼び出すと、リレーションシップのマークアップ内のすべてのリレーションシップが解析および検証されます。Relationships パートに無効なリレーションシップのマークアップが含まれている場合、このメソッドではそのマークアップを取得できません。
マークアップ互換性とパッケージの詳細については、ECMA-376 OpenXML (https://www.ecma-international.org/publications-and-standards/standards/ecma-376/) の Part 5: Markup Compatibility を参照してください。
スレッドセーフティ
パッケージングオブジェクトはスレッドセーフではありません。
詳細については、パッケージング API の使用開始を参照してください。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IOpcRelationshipSet "{42195949-3B79-4FC8-89C6-FC7FB979EE74}" #usecom global IOpcRelationshipSet IID_IOpcRelationshipSet "{}" #comfunc global IOpcRelationshipSet_GetRelationship 3 wstr,sptr #comfunc global IOpcRelationshipSet_CreateRelationship 4 wstr,wstr,sptr,int,sptr #comfunc global IOpcRelationshipSet_DeleteRelationship 5 wstr #comfunc global IOpcRelationshipSet_RelationshipExists 6 wstr,var #comfunc global IOpcRelationshipSet_GetEnumerator 7 sptr #comfunc global IOpcRelationshipSet_GetEnumeratorForType 8 wstr,sptr #comfunc global IOpcRelationshipSet_GetRelationshipsContentStream 9 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IOpcRelationshipSet "{42195949-3B79-4FC8-89C6-FC7FB979EE74}" #usecom global IOpcRelationshipSet IID_IOpcRelationshipSet "{}" #comfunc global IOpcRelationshipSet_GetRelationship 3 wstr,sptr #comfunc global IOpcRelationshipSet_CreateRelationship 4 wstr,wstr,sptr,int,sptr #comfunc global IOpcRelationshipSet_DeleteRelationship 5 wstr #comfunc global IOpcRelationshipSet_RelationshipExists 6 wstr,sptr #comfunc global IOpcRelationshipSet_GetEnumerator 7 sptr #comfunc global IOpcRelationshipSet_GetEnumeratorForType 8 wstr,sptr #comfunc global IOpcRelationshipSet_GetRelationshipsContentStream 9 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。