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

IOpcUri

COM
IIDbc9c1b9b-d62c-49eb-aef0-3b4e0b28ebed継承元IUri自前メソッド開始 vtbl28

公式ドキュメント

パッケージルート、またはパッケージルートからの相対パートの URI を表します。

解説(Remarks)

以前の Windows バージョンでのサポート

このインターフェイスの動作とパフォーマンスは、サポートされているすべての Windows バージョンで同じです。詳細については、Getting Started with the Packaging API および Platform Update for Windows Vista を参照してください。

メソッド 3

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 28 HRESULT GetRelationshipsPartUri(IOpcPartUri** relationshipPartUri)

現在の OPC URI オブジェクトが表すソース URI を持つリレーションシップを格納する Relationships パートのパート名を取得します。

relationshipPartUriIOpcPartUri**outRelationships パートのパート名を表すパート URI オブジェクトの IOpcPartUri インターフェイスへのポインターです。この Relationships パートに格納されるリレーションシップのソース URI は、現在の OPC URI オブジェクトによって表されます。

戻り値

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

戻り値のコード/値 説明
S_OK
メソッドは成功しました。
E_POINTER
relationshipPartUri パラメーターが NULL です。
OPC_E_NONCONFORMING_URI
0x80510001
現在の IOpcUri は Relationships パートを表しており、いかなるリレーションシップのソースにもなれません。
CreateUri 関数のエラー
CreateUri 関数から返された HRESULT エラーコードです。
WinINet のエラー
WinINet API から返された HRESULT エラーコードです。

解説(Remarks)

次の表は、いくつかの OPC URI に対する Relationships パートの URI を示しています。

OPC URI Relationships パート名 戻り値
/mydoc/images/picture.jpg /mydoc/images/_rels/picture.jpg.rels S_OK
/ /_rels/.rels S_OK
/mydoc/images/_rels/picture.jpg.rels 未定義 OPC_E_NONCONFORMING_URI

以前の Windows バージョンでのサポート

このメソッドの動作とパフォーマンスは、サポートされているすべての Windows バージョンで同じです。詳細については、Getting Started with the Packaging API および Platform Update for Windows Vista を参照してください。

スレッドセーフティ

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

詳細については、Getting Started with the Packaging API を参照してください。

vtbl 29 HRESULT GetRelativeUri(IOpcPartUri* targetPartUri, IUri** relativeUri)

現在の OPC URI オブジェクトが表す URI を基準として、指定されたパートの相対 URI を生成します。

targetPartUriIOpcPartUri*in相対 URI の生成元となるパート名を表すパート URI オブジェクトの IOpcPartUri インターフェイスへのポインターです。
relativeUriIUri**out現在の OPC URI オブジェクトを基準とした、パートの URI の IUri インターフェイスへのポインターです。

戻り値

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

戻り値のコード 説明
S_OK
メソッドは成功しました。
E_POINTER
targetPartUri および relativePartUri パラメーターの少なくとも 1 つが NULL です。
CreateUri 関数のエラー
CreateUri 関数から返された HRESULT エラーコードです。
WinINet のエラー
WinINet API から返された HRESULT エラーコードです。

解説(Remarks)

入力と出力の例:

入力の IOpcPartUri が表すもの 現在の IOpcUri が表すもの 返される相対 IUri が表すもの
/mydoc/markup/page.xml /mydoc/markup/picture.jpg picture.jpg
/mydoc/markup/page.xml /mydoc/picture.jpg ../picture.jpg
/mydoc/markup/page.xml /mydoc/images/pictures.jpg ../images/pictures.jpg

以前の Windows バージョンでのサポート

このメソッドの動作とパフォーマンスは、サポートされているすべての Windows バージョンで同じです。詳細については、Getting Started with the Packaging API および Platform Update for Windows Vista を参照してください。

スレッドセーフティ

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

詳細については、Getting Started with the Packaging API を参照してください。

vtbl 30 HRESULT CombinePartUri(IUri* relativeUri, IOpcPartUri** combinedUri)

指定された相対 URI が参照するパートのパート名を生成します。

relativeUriIUri*in

パートの相対 URI の IUri インターフェイスへのポインターです。

パート名を表すパート URI オブジェクトを生成するために、この入力 URI は現在の OPC URI オブジェクトが表す URI に対して解決されます。したがって、入力 URI は現在の OPC URI オブジェクトが表す URI からの相対でなければなりません。

この URI にはフラグメント要素を含めることができますが、フラグメントは無視され、生成されるパート名には含まれません。フラグメント要素は、RFC 3986: URI Generic Syntax に記載されているとおり、'#' が前に付きます。

combinedUriIOpcPartUri**out

パート名を表すパート URI オブジェクトの IOpcPartUri インターフェイスへのポインターです。

このパート URI オブジェクトは、relativeUri の相対 URI を現在の OPC URI オブジェクトが表す URI に対して解決することで生成されます。

戻り値

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

戻り値のコード/値 説明
S_OK
メソッドは成功しました。
E_FAIL
CoInternetCombineUrl 関数が無効なサイズを返しました。
E_POINTER
relativeUri および combinedUri パラメーターの少なくとも 1 つが NULL です。
E_UNEXPECTED
CoInternetCombineUrl 関数が必要とするバッファーのサイズが予期せず変化しました。
OPC_E_NONCONFORMING_URI
0x80510001
パート名が OPC 標準で規定された規則に準拠していません。
OPC_E_RELATIVE_URI_REQUIRED
0x80510002
パート名を絶対 URI にすることはできません。絶対 URI は、RFC 3986: URI Generic Syntax に記載されているとおり、スキーム要素とそれに続く ":" で始まります。
CoInternetCombineUrl 関数のエラー
CoInternetCombineUrl 関数から返された HRESULT エラーコードです。
CreateUri 関数のエラー
CreateUri 関数から返された HRESULT エラーコードです。
WinINet のエラー
WinINet API から返された HRESULT エラーコードです。

解説(Remarks)

入力と出力の例:

入力の相対 IUri 現在の IOpcUri 生成される IOpcPartUri
picture.jpg /mydoc/markup/page.xml /mydoc/markup/picture.jpg
../picture.jpg /mydoc/markup/page.xml /mydoc/picture.jpg
../../images/picture.jpg /mydoc/page.xml /images/picture.jpg

このメソッドを使用してパート名を解決する方法については、Resolving a Part Name from a Target URI を参照してください。

以前の Windows バージョンでのサポート

このメソッドの動作とパフォーマンスは、サポートされているすべての Windows バージョンで同じです。詳細については、Getting Started with the Packaging API および Platform Update for Windows Vista を参照してください。

スレッドセーフティ

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

詳細については、Getting Started with the Packaging 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_IOpcUri "{BC9C1B9B-D62C-49EB-AEF0-3B4E0B28EBED}"
#usecom global IOpcUri IID_IOpcUri "{}"
#comfunc global IOpcUri_GetRelationshipsPartUri  28 sptr
#comfunc global IOpcUri_GetRelativeUri           29 sptr,sptr
#comfunc global IOpcUri_CombinePartUri           30 sptr,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。