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

IAsyncRpcChannelBuffer

COM
IIDa5029fb6-3c34-11d1-9c99-00c04fb998aa継承元IRpcChannelBuffer2自前メソッド開始 vtbl9

メソッド 3

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

vtbl 9 HRESULT Send(RPCOLEMESSAGE* pMsg, ISynchronize* pSync, DWORD* pulStatus)
pMsgRPCOLEMESSAGE*inout送信する RPC 呼び出しのデータを格納した RPCOLEMESSAGE 構造体へのポインタである。マーシャリング済みの引数バッファを含む。
pSyncISynchronize*in呼び出しの完了を待機・通知するための ISynchronize オブジェクトへのポインタである。非同期呼び出しの完了同期に用いる。
pulStatusDWORD*out送信処理の状態を受け取る DWORD へのポインタである。
vtbl 10 HRESULT Receive(RPCOLEMESSAGE* pMsg, DWORD* pulStatus)
pMsgRPCOLEMESSAGE*inout受信した応答データを格納する RPCOLEMESSAGE 構造体へのポインタである。戻り値のマーシャリング済みバッファを受け取る。
pulStatusDWORD*out受信処理の状態を受け取る DWORD へのポインタである。
vtbl 11 HRESULT GetDestCtxEx(RPCOLEMESSAGE* pMsg, DWORD* pdwDestContext, void** ppvDestContext)
pMsgRPCOLEMESSAGE*in対象の呼び出しを表す RPCOLEMESSAGE 構造体へのポインタである。
pdwDestContextDWORD*out送信先のマーシャリングコンテキスト(MSHCTX 値)を受け取る DWORD へのポインタである。
ppvDestContextvoid**outoptional送信先コンテキストに関連付けられた追加情報を受け取るポインタへのポインタである。

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IAsyncRpcChannelBuffer "{A5029FB6-3C34-11D1-9C99-00C04FB998AA}"
#usecom global IAsyncRpcChannelBuffer IID_IAsyncRpcChannelBuffer "{}"
#comfunc global IAsyncRpcChannelBuffer_Send          9 var,sptr,var
#comfunc global IAsyncRpcChannelBuffer_Receive       10 var,var
#comfunc global IAsyncRpcChannelBuffer_GetDestCtxEx  11 var,var,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。