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

IOpcRelationshipSet

COM
IID42195949-3b79-4fc8-89c6-fc7fb979ee74継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

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。

vtbl 3 HRESULT GetRelationship(LPWSTR relationshipIdentifier, IOpcRelationship** relationship)

指定したリレーションシップを表すリレーションシップオブジェクトをセットから取得します。

relationshipIdentifierLPWSTRinリレーションシップの一意の識別子です。
relationshipIOpcRelationship**out指定した識別子を持つリレーションシップを表すリレーションシップオブジェクトの IOpcRelationship インターフェイスへのポインターです。

戻り値

このメソッドは HRESULT を返します。返される値には、次の表の値が含まれますが、これらに限定されません。

リターンコード/値 説明
S_OK
メソッドは成功しました。
E_POINTER
relationship パラメーターが NULL です。
OPC_E_NO_SUCH_RELATIONSHIP
0x80510048
指定されたリレーションシップは存在しません。
Package Consumption エラー
Package Consumption エラーグループHRESULT エラーコードです。
Part URI エラー
Part URI エラーグループHRESULT エラーコードです。

解説(Remarks)

IOpcRelationship インターフェイスは、リレーションシップのプロパティへのアクセスを提供します。これらのプロパティの詳細については、リレーションシップの概要および IOpcRelationship を参照してください。

スレッドセーフティ

パッケージングオブジェクトはスレッドセーフではありません。

詳細については、パッケージング API の使用開始を参照してください。

vtbl 4 HRESULT CreateRelationship(LPWSTR relationshipIdentifier, LPWSTR relationshipType, IUri* targetUri, OPC_URI_TARGET_MODE targetMode, IOpcRelationship** relationship)

指定したリレーションシップを表すリレーションシップオブジェクトを作成し、そのオブジェクトの IOpcRelationship インターフェイスへのポインターをセットに追加します。

relationshipIdentifierLPWSTRin

リレーションシップオブジェクトとして表現されるリレーションシップの一意の識別子です。ランダムに生成された識別子を使用するには、このパラメーターに NULL を渡します。

有効な識別子は xsd:ID の制約に準拠します。この制約は W3C Recommendation, XML Schema Part 2: Datatypes Second Edition (http://www.w3.org/TR/xmlschema-2/#ID) のセクション 3.3.8 ID に記載されています。

relationshipTypeLPWSTRinリレーションシップオブジェクトとして表現されるリレーションシップの役割を定義するリレーションシップの種類 (relationship type) です。
targetUriIUri*in

リレーションシップオブジェクトとして表現されるリレーションシップのターゲットを指す URI です。

targetMode の値が OPC_URI_TARGET_MODE_INTERNAL の場合、ターゲットはパートであり、URI はリレーションシップのソースからの相対 URI でなければなりません。

targetMode の値が OPC_URI_TARGET_MODE_EXTERNAL の場合、ターゲットはパッケージ外のリソースであり、URI は絶対 URI、またはパッケージの場所からの相対 URI のいずれでもかまいません。

リレーションシップのターゲットの URI の詳細については、OPC を参照してください。

targetModeOPC_URI_TARGET_MODEinリレーションシップオブジェクトとして表現されるリレーションシップのターゲットが、パッケージの内部にあるか外部にあるかを示す値です。
relationshipIOpcRelationship**out

リレーションシップを表すリレーションシップオブジェクトの IOpcRelationship インターフェイスへのポインターです。

新しいオブジェクトへのポインターが不要な場合、このパラメーターは NULL にできます。

戻り値

このメソッドは HRESULT を返します。返される値には、次の表の値が含まれますが、これらに限定されません。

リターンコード/値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
targetMode パラメーターに渡された値が、有効な OPC_URI_TARGET_MODE 列挙値ではありません。
E_POINTER
relationshipType および targetUri パラメーターの少なくとも一方が NULL です。
OPC_E_DUPLICATE_RELATIONSHIP
0x80510013
同じ識別子を持つリレーションシップが現在のパッケージに既に存在します。
OPC_E_INVALID_RELATIONSHIP_ID
0x80510010
リレーションシップの Id 属性が OPC で規定された規則に準拠していません。
OPC_E_INVALID_RELATIONSHIP_TARGET
0x80510012
targetUri の URI が絶対 URI であり、かつ targetMode の値が OPC_URI_TARGET_MODE_INTERNAL です。このターゲットモードを指定する場合、ターゲットの URI は相対 URI でなければなりません。
OPC_E_INVALID_RELATIONSHIP_TARGET
0x80510012
リレーションシップの Target 属性が OPC で規定された規則に準拠していません。
OPC_E_INVALID_RELATIONSHIP_TYPE
0x80510011
リレーションシップの Type 属性が OPC で規定された規則に準拠していません。
Package Consumption エラー
Package Consumption エラーグループHRESULT エラーコードです。
Part URI エラー
Part URI エラーグループHRESULT エラーコードです。

解説(Remarks)

リレーションシップオブジェクトが作成され、そのポインターがセットに追加されると、それが表すリレーションシップはパッケージの保存時に保存されます。

IOpcRelationship インターフェイスは、リレーションシップのプロパティへのアクセスを提供します。これらのプロパティの詳細については、リレーションシップの概要および IOpcRelationship を参照してください。

スレッドセーフティ

パッケージングオブジェクトはスレッドセーフではありません。

詳細については、パッケージング API の使用開始を参照してください。

vtbl 5 HRESULT DeleteRelationship(LPWSTR relationshipIdentifier)

指定した IOpcRelationship インターフェイスポインターをセットから削除します。

relationshipIdentifierLPWSTRin

リレーションシップの一意の識別子です。

削除される IOpcRelationship インターフェイスポインターは、指定した識別子を持つリレーションシップを表すリレーションシップオブジェクトへのポインターです。

戻り値

このメソッドは HRESULT を返します。返される値には、次の表の値が含まれますが、これらに限定されません。

リターンコード/値 説明
S_OK
メソッドは成功しました。
E_POINTER
relationshipIdentifier パラメーターが NULL です。
OPC_E_NO_SUCH_RELATIONSHIP
0x80510048
指定されたリレーションシップは存在しません。
Package Consumption エラー
Package Consumption エラーグループHRESULT エラーコードです。
Part URI エラー
Part URI エラーグループHRESULT エラーコードです。

解説(Remarks)

IOpcRelationship インターフェイスポインターがセットから削除されると、それが表すリレーションシップはパッケージの保存時に保存されません。

スレッドセーフティ

パッケージングオブジェクトはスレッドセーフではありません。

詳細については、パッケージング API の使用開始を参照してください。

vtbl 6 HRESULT RelationshipExists(LPWSTR relationshipIdentifier, BOOL* relationshipExists)

指定したリレーションシップが、セット内でリレーションシップオブジェクトとして表現されているかどうかを示す値を取得します。

relationshipIdentifierLPWSTRinリレーションシップの一意の識別子です。
relationshipExistsBOOL*out

次のいずれかの値です。

意味
TRUE
relationshipIdentifier で指定された識別子を持つリレーションシップがセット内に表現されています。
FALSE
relationshipIdentifier で指定された識別子を持つリレーションシップはセット内に表現されていません。

戻り値

このメソッドは HRESULT を返します。返される値には、次の表の値が含まれますが、これらに限定されません。

リターンコード 説明
S_OK
メソッドは成功しました。
E_POINTER
relationshipIdentifier および relationshipExists パラメーターの少なくとも一方が NULL です。
Package Consumption エラー
Package Consumption エラーグループHRESULT エラーコードです。
Part URI エラー
Part URI エラーグループHRESULT エラーコードです。

解説(Remarks)

リレーションシップがセット内に表現されている場合、そのリレーションシップは、そのセットが表す Relationships パートに格納されます。

スレッドセーフティ

パッケージングオブジェクトはスレッドセーフではありません。

詳細については、パッケージング API の使用開始を参照してください。

vtbl 7 HRESULT GetEnumerator(IOpcRelationshipEnumerator** relationshipEnumerator)

セット内の IOpcRelationship インターフェイスポインターの列挙子を取得します。

relationshipEnumeratorIOpcRelationshipEnumerator**outセット内の IOpcRelationship インターフェイスポインターの列挙子の IOpcRelationshipEnumerator インターフェイスへのポインターです。

戻り値

このメソッドは HRESULT を返します。返される値には、次の表の値が含まれますが、これらに限定されません。

リターンコード 説明
S_OK
メソッドは成功しました。
E_POINTER
relationshipEnumerator パラメーターが NULL です。
Package Consumption エラー
Package Consumption エラーグループHRESULT エラーコードです。
Part URI エラー
Part URI エラーグループHRESULT エラーコードです。
vtbl 8 HRESULT GetEnumeratorForType(LPWSTR relationshipType, IOpcRelationshipEnumerator** relationshipEnumerator)

セット内の IOpcRelationship インターフェイスポインターのうち、指定したリレーションシップの種類を持つリレーションシップの表現を指すポインターの列挙子を取得します。

relationshipTypeLPWSTRin列挙対象の IOpcRelationship インターフェイスポインターを特定するために使用するリレーションシップの種類です。
relationshipEnumeratorIOpcRelationshipEnumerator**outセット内の IOpcRelationship インターフェイスポインターのうち、指定したリレーションシップの種類を持つリレーションシップの表現を指すポインターの列挙子の IOpcRelationshipEnumerator インターフェイスへのポインターです。

戻り値

このメソッドは HRESULT を返します。返される値には、次の表の値が含まれますが、これらに限定されません。

リターンコード 説明
S_OK
メソッドは成功しました。
E_POINTER
relationshipType および relationshipEnumerator パラメーターの少なくとも一方が NULL です。
Package Consumption エラー
Package Consumption エラーグループHRESULT エラーコードです。
Part URI エラー
Part URI エラーグループHRESULT エラーコードです。

解説(Remarks)

リレーションシップのターゲットのパート名を組み立てる方法については、IOpcRelationship のトピックを参照してください。

IOpcRelationship インターフェイスは、リレーションシップのプロパティへのアクセスを提供します。これらのプロパティの詳細については、リレーションシップの概要および IOpcRelationship を参照してください。

リレーションシップの詳細については、Open Packaging Conventions の基礎および ECMA-376 OpenXML, 1st Edition, Part 2: Open Packaging Conventions (OPC) を参照してください。

スレッドセーフティ

パッケージングオブジェクトはスレッドセーフではありません。

詳細については、パッケージング API の使用開始を参照してください。

vtbl 9 HRESULT GetRelationshipsContentStream(IStream** contents)

セットが表す Relationships パートのパートコンテンツを含む読み取り専用ストリームを取得します。

contentsIStream**out

セットが表す Relationships パートのパートコンテンツを含む読み取り専用ストリームの IStream インターフェイスへのポインターです。

Relationships パートに格納されたリレーションシップが変更されていない場合、パートコンテンツには、セット内のリレーションシップオブジェクトからは他の方法でアクセスできないマークアップ互換性データが含まれることがあります。

戻り値

このメソッドは HRESULT を返します。返される値には、次の表の値が含まれますが、これらに限定されません。

リターンコード 説明
S_OK
メソッドは成功しました。
E_POINTER
contents パラメーターが NULL です。
Package Consumption エラー
Package Consumption エラーグループHRESULT エラーコードです。
Part URI エラー
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 の 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_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 指定が可能。