次の方法で共有


RoGetAgileReference 関数 (combaseapi.h)

指定されたインターフェイスで指定されたオブジェクトのアジャイル参照を作成します。

構文

HRESULT RoGetAgileReference(
  [in]  AgileReferenceOptions options,
  [in]  REFIID                riid,
  [in]  IUnknown              *pUnk,
  [out] IAgileReference       **ppAgileReference
);

パラメーター

[in] options

登録オプション。

[in] riid

アジャイル参照が取得されるオブジェクトのインターフェイス ID。

[in] pUnk

アジャイル参照にカプセル化されるインターフェイスへのポインター。 riid と同じ型である必要があります。 インプロセス オブジェクトへのポインター、またはオブジェクトのプロキシへのポインターを指定できます。

[out] ppAgileReference

オブジェクトのアジャイル参照。 Resolve メソッドを呼び出して、Resolve が呼び出されたアパートメントにオブジェクトをローカライズします。

戻り値

この関数は、これらの値のいずれかを返すことができます。

戻り値 説明
S_OK
関数は正常に終了しました。
E_INVALIDARG
の options パラメーターが無効です。
E_OUTOFMEMORY
メモリ不足状態のため、アジャイル参照を構築できませんでした。
E_NOINTERFACE
pUnk パラメーターは、riid パラメーターで指定されたインターフェイス ID をサポートしていません。
CO_E_NOT_SUPPORTED
オブジェクトは INoMarshal インターフェイスを 実装します。

注釈

オブジェクトへのアジャイル参照を要求するには、既存のオブジェクトに対して RoGetAgileReference 関数を呼び出します。 オブジェクトはアジャイルである場合とそうでない場合がありますが、返される IAgileReference はアジャイルです。 アジャイル参照は、同じプロセス内の別のアパートメントに渡すことができます。ここで、元のオブジェクトは IAgileReference インターフェイスを使用して取得されます。

これは概念的には、既存のグローバル インターフェイス テーブル (GIT) と似ています。 GIT と対話するのではなく、 IAgileReference が取得され、オブジェクトを直接取得するために使用されます。 GIT がプロセスごとのみであるのと同様に、アジャイル参照はプロセスごとに行われ、マーシャリングすることはできません。

アジャイル参照機能を使用すると、GIT よりもパフォーマンスが向上します。 アジャイル参照は、既定で一括マーシャリングを実行します。これにより、アジャイル参照が作成された場所とは異なるアパートメント内のアジャイル参照からオブジェクトが取得される場合に、アパートメント間の呼び出しが保存されます。 パフォーマンスをさらに向上させるために、 RoGetAgileReference 関数のユーザーは、同じインターフェイスを使用して IAgileReference を作成し、元のオブジェクトを解決できます。 これにより、解決されたオブジェクトから目的のインターフェイスを取得するための 追加の QueryInterface 呼び出しが保存されます。

たとえば、IDemo インターフェイスと IExample インターフェイスを実装する CDemoExample という名前の非アジャイル オブジェクトがあるとします。 RoGetAgileReference 関数を呼び出し、IID_IDemoを使用して オブジェクトを渡します。 IAgileReference インターフェイス ポインターが返されます。これはアジャイルであるため、別のアパートメントに渡すことができます。 もう 1 つのアパートメントでは、 Resolve メソッドを呼び出し、IID_IExampleします。 このアパートメント内で使用できる IExample ポインターが返されます。 この IExample ポインターは、元の CDemoExample オブジェクトに接続されている IExample プロキシです。 アジャイル参照は、手動でストリームにマーシャリングし、アパートメント境界の反対側でマーシャリングを解除するなどの操作の複雑さを処理します。

要件

要件
サポートされている最小のクライアント Windows 8.1 [デスクトップ アプリ |UWP アプリ]
サポートされている最小のサーバー Windows Server 2012 R2 [デスクトップ アプリ |UWP アプリ]
対象プラットフォーム Windows
ヘッダー combaseapi.h
Library Ole32.lib
[DLL] Ole32.dll

こちらもご覧ください

AgileReferenceOptions

IAgileReference