Win32 API 日本語リファレンス
ホームSystem.Com › IRpcStubBuffer

IRpcStubBuffer

COM
IIDd5f56afc-593b-101a-b569-08002b2dbf7a継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IRpcStubBuffer (objidlbase.h) インターフェイスは、COM コンポーネント間でデータをマーシャリングするために使用される RPC スタブを制御します。

メソッド 7

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

vtbl 3 HRESULT Connect(IUnknown* pUnkServer)

IRpcStubBuffer::Connect (objidlbase.h) メソッドは、サーバースタブを初期化し、指定されたインターフェイスにバインドします。

pUnkServerIUnknown*inインターフェイスへのポインター。

戻り値

このメソッドは、標準の戻り値 E_INVALIDARGE_OUTOFMEMORYE_UNEXPECTEDE_FAIL、および S_OK を返すことがあります。

vtbl 4 void Disconnect()

IRpcStubBuffer::Disconnect (objidlbase.h) メソッドは、サーバースタブを、接続されている任意のインターフェイスから切断します。

vtbl 5 HRESULT Invoke(RPCOLEMESSAGE* _prpcmsg, IRpcChannelBuffer* _pRpcChannelBuffer)

IRpcStubBuffer::Invoke (objidlbase.h) メソッドは、スタブが表すインターフェイスを呼び出します。

_prpcmsgRPCOLEMESSAGE*inoutマーシャリングされた呼び出し引数を含む RPCOLEMESSAGE データ構造へのポインター。
_pRpcChannelBufferIRpcChannelBuffer*inRPC マーシャリングチャネルを制御する IRpcChannelBuffer インターフェイスへのポインター。

戻り値

このメソッドは、標準の戻り値 E_INVALIDARGE_OUTOFMEMORYE_UNEXPECTEDE_FAIL、および S_OK を返すことがあります。

vtbl 6 IRpcStubBuffer* IsIIDSupported(GUID* riid)

IRpcStubBuffer::IsIIDSupported (objidlbase.h) メソッドは、スタブが特定のインターフェイスのアンマーシャリングを処理するように設計されているかどうかを判定します。

riidGUID*inインターフェイスの IID。このパラメーターに IID_IUnknown を指定することはできません。

戻り値

スタブが指定されたインターフェイスを処理できる場合、このメソッドはそのインターフェイスに対する IRpcStubBuffer ポインターを返します。それ以外の場合は NULL を返します。

解説(Remarks)

特定のオブジェクトで新しい IID をリモート化する必要が生じた場合、RPC ランタイムは通常、新しいスタブを作成する手間をかける前に、要求のマーシャリングを処理できるものを見つけようとして、現在接続されているすべてのインターフェイススタブに対してこのメソッドを呼び出します。

IPSFactoryBuffer::CreateStub と同様に、スタブが現在サーバーオブジェクトに接続されている場合、このメソッドはスタブが指定されたインターフェイスを処理できることを検証するだけでなく、接続されているサーバーオブジェクトが実際に指定されたインターフェイスをサポートしていることも (QueryInterface を使用して) 検証する必要があります。IID とそれまでのインターフェイス処理要求によっては、すでに検証済みの場合もあります。

vtbl 7 DWORD CountRefs()

IRpcStubBuffer::CountRefs (objidlbase.h) メソッドは、スタブが接続先のサーバーオブジェクトに対して保持している参照の総数を取得します。

戻り値

このメソッドは、スタブが接続先のサーバーオブジェクトに対して保持している参照の総数を返します。

vtbl 8 HRESULT DebugServerQueryInterface(void** ppv)

IRpcStubBuffer::DebugServerQueryInterface (objidlbase.h) メソッドは、スタブが表すインターフェイスへのポインターを取得します。

ppvvoid**outスタブが表すインターフェイスへのポインター。

戻り値

このメソッドは、標準の戻り値 E_INVALIDARGE_OUTOFMEMORYE_UNEXPECTEDE_FAIL、および S_OK を返すことがあります。

vtbl 9 void DebugServerRelease(void* pv)

IRpcStubBuffer::DebugServerRelease (objidlbase.h) メソッドは、以前に DebugServerQueryInterface によって返されたインターフェイスポインターを解放します。

pvvoid*in呼び出し元が不要になったインターフェイスへのポインター。
出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IRpcStubBuffer "{D5F56AFC-593B-101A-B569-08002B2DBF7A}"
#usecom global IRpcStubBuffer IID_IRpcStubBuffer "{}"
#comfunc global IRpcStubBuffer_Connect                    3 sptr
#comfunc global IRpcStubBuffer_Disconnect                 4
#comfunc global IRpcStubBuffer_Invoke                     5 var,sptr
#comfunc global IRpcStubBuffer_IsIIDSupported             6 var
#comfunc global IRpcStubBuffer_CountRefs                  7
#comfunc global IRpcStubBuffer_DebugServerQueryInterface  8 sptr
#comfunc global IRpcStubBuffer_DebugServerRelease         9 sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。