IRpcOptions
COM公式ドキュメント
IRpcOptions (objidlbase.h) インターフェイスは、COM がリモートプロシージャコール (RPC) をどのように処理するかを制御するさまざまなプロパティの値を、呼び出し元が設定または照会できるようにします。
解説(Remarks)
このインターフェイスを使用すると、呼び出し元は COMBND_RPCTIMEOUT プロパティを設定または照会できます。このプロパティは、失敗するまでに自身のマシンが別のマシンとの RPC 通信の確立をどれだけの時間試みるかを制御します。このプロパティには、次の表に列挙されている値のいずれかを指定できます。
| 値 | 説明 |
|---|---|
| RPC_C_BINDING_INFINITE_TIMEOUT | タイムアウトなしで通信の確立を試み続けます。 |
| RPC_C_BINDING_MIN_TIMEOUT | プロトコルが要求する最小限の時間だけ通信の確立を試みます。この値は信頼性よりもパフォーマンスを優先します。 |
| RPC_C_BINDING_DEFAULT_TIMEOUT | 既定の時間だけ通信の確立を試みます。この値はパフォーマンスと信頼性のバランスを取ります。 |
| RPC_C_BINDING_MAX_TIMEOUT | プロトコルが許容する最大限の時間だけ通信の確立を試みます。この値はパフォーマンスよりも信頼性を優先します。 |
メソッド 2
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
IRpcOptions::Set (objidlbase.h) メソッドは、RPC バインディングオプションプロパティの値を設定します。
| pPrx | IUnknown* | in | プロパティを設定する対象のプロキシへのポインター。 |
| dwProperty | RPCOPT_PROPERTIES | in | 設定するプロパティの識別子。COMBND_RPCTIMEOUT でなければなりません。 |
| dwValue | UINT_PTR | in | プロパティの新しい値。 |
戻り値
このメソッドは、標準の戻り値 E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTED、E_FAIL、および S_OK を返すことがあります。
解説(Remarks)
COMBND_RPCTIMEOUT プロパティに指定できる値の一覧については、IRpcOptions を参照してください。
IRpcOptions::Query (objidlbase.h) メソッドは、RPC バインディングオプションプロパティの値を取得します。
| pPrx | IUnknown* | in | プロパティを照会する対象のプロキシへのポインター。 |
| dwProperty | RPCOPT_PROPERTIES | in | 照会するプロパティの識別子。COMBND_RPCTIMEOUT または COMBND_SERVER_LOCALITY でなければなりません (このフラグは Windows Server 2003 以降で使用できます)。 |
| pdwValue | UINT_PTR* | out | プロパティ値へのポインター。 |
戻り値
このメソッドは、標準の戻り値 E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTED、E_FAIL、および S_OK を返すことがあります。
解説(Remarks)
COMBND_RPCTIMEOUT プロパティは Set メソッドを使用して設定することもできますが、COMBND_SERVER_LOCALITY プロパティは照会のみ可能です。
COMBND_RPCTIMEOUT プロパティに指定できる値の一覧については、IRpcOptions を参照してください。
RPC 接続のリモート度合いを示す COMBND_SERVER_LOCALITY プロパティに指定できる値は、次の表に列挙されています。
| 値 | 説明 |
|---|---|
| SERVER_LOCALITY_PROCESS_LOCAL | 相手側はクライアントと同じプロセス内にあります。 |
| SERVER_LOCALITY_MACHINE_LOCAL | 相手側はクライアントと同じコンピューター上にありますが、別のプロセス内にあります。 |
| SERVER_LOCALITY_REMOTE | 相手側はリモートコンピューター上にあります。 |
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IRpcOptions "{00000144-0000-0000-C000-000000000046}" #usecom global IRpcOptions IID_IRpcOptions "{}" #comfunc global IRpcOptions_Set 3 sptr,int,sptr #comfunc global IRpcOptions_Query 4 sptr,int,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IRpcOptions "{00000144-0000-0000-C000-000000000046}" #usecom global IRpcOptions IID_IRpcOptions "{}" #comfunc global IRpcOptions_Set 3 sptr,int,sptr #comfunc global IRpcOptions_Query 4 sptr,int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。