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 が呼び出されたアパートメントにオブジェクトをローカライズします。
戻り値
この関数は、これらの値のいずれかを返すことができます。
戻り値 | 説明 |
---|---|
|
関数は正常に終了しました。 |
|
の options パラメーターが無効です。 |
|
メモリ不足状態のため、アジャイル参照を構築できませんでした。 |
|
pUnk パラメーターは、riid パラメーターで指定されたインターフェイス ID をサポートしていません。 |
|
オブジェクトは 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 |