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

ICallFrame

COM
IIDd573b4b0-894e-11d2-b8b6-00c04fb9618a継承元IUnknown自前メソッド開始 vtbl3

メソッド 19

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

vtbl 3 HRESULT GetInfo(CALLFRAMEINFO* pInfo)
pInfoCALLFRAMEINFO*out呼び出しフレームに関する情報(引数の数やスタックサイズなど)を受け取る CALLFRAMEINFO 構造体へのポインタである。
vtbl 4 HRESULT GetIIDAndMethod(GUID* pIID, DWORD* piMethod)
pIIDGUID*out呼び出されたインターフェイスの IID を受け取る GUID へのポインタである。不要な場合は NULL を指定できる。
piMethodDWORD*out呼び出されたメソッドの vtable 内インデックスを受け取る。不要な場合は NULL を指定できる。
vtbl 5 HRESULT GetNames(LPWSTR* pwszInterface, LPWSTR* pwszMethod)
pwszInterfaceLPWSTR*outインターフェイス名を受け取る文字列ポインタへのポインタである。不要な場合は NULL を指定できる。
pwszMethodLPWSTR*outメソッド名を受け取る文字列ポインタへのポインタである。不要な場合は NULL を指定できる。
vtbl 6 void* GetStackLocation()
vtbl 7 void SetStackLocation(void* pvStack)
pvStackvoid*in呼び出しフレームが参照するスタックメモリの位置へのポインタを指定する。
vtbl 8 void SetReturnValue(HRESULT hr)
hrHRESULTin呼び出しの戻り値として設定する HRESULT を指定する。
vtbl 9 HRESULT GetReturnValue()
vtbl 10 HRESULT GetParamInfo(DWORD iparam, CALLFRAMEPARAMINFO* pInfo)
iparamDWORDin情報を取得する引数の 0 始まりのインデックスを指定する。
pInfoCALLFRAMEPARAMINFO*out指定した引数の型や入出力方向などの情報を受け取る CALLFRAMEPARAMINFO 構造体へのポインタである。
vtbl 11 HRESULT SetParam(DWORD iparam, VARIANT* pvar)
iparamDWORDin値を設定する引数の 0 始まりのインデックスを指定する。
pvarVARIANT*in引数に設定する値を格納した VARIANT へのポインタである。
vtbl 12 HRESULT GetParam(DWORD iparam, VARIANT* pvar)
iparamDWORDin値を取得する引数の 0 始まりのインデックスを指定する。
pvarVARIANT*out指定した引数の値を受け取る VARIANT へのポインタである。
vtbl 13 HRESULT Copy(CALLFRAME_COPY copyControl, ICallFrameWalker* pWalker, ICallFrame** ppFrame)
copyControlCALLFRAME_COPYinコピー時の引数の扱いを制御する CALLFRAME_COPY 値を指定する。
pWalkerICallFrameWalker*inコピー対象のインターフェイスポインタを処理するための ICallFrameWalker へのポインタである。不要な場合は NULL を指定できる。
ppFrameICallFrame**outコピーされた呼び出しフレームを受け取る ICallFrame ポインタへのポインタである。
vtbl 14 HRESULT Free(ICallFrame* pframeArgsDest, ICallFrameWalker* pWalkerDestFree, ICallFrameWalker* pWalkerCopy, DWORD freeFlags, ICallFrameWalker* pWalkerFree, DWORD nullFlags)
pframeArgsDestICallFrame*in解放対象の引数をコピーする先の呼び出しフレームへのポインタである。不要な場合は NULL を指定できる。
pWalkerDestFreeICallFrameWalker*inコピー先の解放対象インターフェイスを処理する ICallFrameWalker へのポインタである。
pWalkerCopyICallFrameWalker*inコピー対象のインターフェイスを処理する ICallFrameWalker へのポインタである。
freeFlagsDWORDin解放処理の動作を制御するフラグを指定する。
pWalkerFreeICallFrameWalker*in解放対象のインターフェイスを処理する ICallFrameWalker へのポインタである。
nullFlagsDWORDin解放後にどの値を NULL クリアするかを制御するフラグを指定する。
vtbl 15 HRESULT FreeParam(DWORD iparam, DWORD freeFlags, ICallFrameWalker* pWalkerFree, DWORD nullFlags)
iparamDWORDin解放する引数の 0 始まりのインデックスを指定する。
freeFlagsDWORDin解放処理の動作を制御するフラグを指定する。
pWalkerFreeICallFrameWalker*in解放対象のインターフェイスを処理する ICallFrameWalker へのポインタである。
nullFlagsDWORDin解放後の NULL クリアの動作を制御するフラグを指定する。
vtbl 16 HRESULT WalkFrame(DWORD walkWhat, ICallFrameWalker* pWalker)
walkWhatDWORDinウォーク対象とする引数の種類(入力・出力など)を指定するフラグである。
pWalkerICallFrameWalker*in各インターフェイスポインタを処理するコールバックである ICallFrameWalker へのポインタである。
vtbl 17 HRESULT GetMarshalSizeMax(CALLFRAME_MARSHALCONTEXT* pmshlContext, MSHLFLAGS mshlflags, DWORD* pcbBufferNeeded)
pmshlContextCALLFRAME_MARSHALCONTEXT*inマーシャリングのコンテキスト情報を保持する CALLFRAME_MARSHALCONTEXT へのポインタである。
mshlflagsMSHLFLAGSinマーシャリングの動作を制御する MSHLFLAGS 値を指定する。
pcbBufferNeededDWORD*outマーシャリングに必要な最大バッファサイズをバイト単位で受け取る。
vtbl 18 HRESULT Marshal(CALLFRAME_MARSHALCONTEXT* pmshlContext, MSHLFLAGS mshlflags, void* pBuffer, DWORD cbBuffer, DWORD* pcbBufferUsed, DWORD* pdataRep, DWORD* prpcFlags)
pmshlContextCALLFRAME_MARSHALCONTEXT*inマーシャリングのコンテキスト情報を保持する CALLFRAME_MARSHALCONTEXT へのポインタである。
mshlflagsMSHLFLAGSinマーシャリングの動作を制御する MSHLFLAGS 値を指定する。
pBuffervoid*inマーシャリングしたデータを書き込むバッファへのポインタである。
cbBufferDWORDinpBuffer が指すバッファのサイズをバイト単位で指定する。
pcbBufferUsedDWORD*out実際に使用されたバッファのバイト数を受け取る。
pdataRepDWORD*outマーシャリングされたデータのデータ表現(エンディアンや文字コードなど)を受け取る。
prpcFlagsDWORD*outRPC 関連のフラグを受け取る。
vtbl 19 HRESULT Unmarshal(void* pBuffer, DWORD cbBuffer, DWORD dataRep, CALLFRAME_MARSHALCONTEXT* pcontext, DWORD* pcbUnmarshalled)
pBuffervoid*inアンマーシャリングするマーシャリング済みデータを格納したバッファへのポインタである。
cbBufferDWORDinpBuffer が指すバッファのサイズをバイト単位で指定する。
dataRepDWORDinバッファ内データのデータ表現(エンディアンや文字コードなど)を指定する。
pcontextCALLFRAME_MARSHALCONTEXT*inアンマーシャリングのコンテキスト情報を保持する CALLFRAME_MARSHALCONTEXT へのポインタである。
pcbUnmarshalledDWORD*outアンマーシャリングで消費されたバイト数を受け取る。
vtbl 20 HRESULT ReleaseMarshalData(void* pBuffer, DWORD cbBuffer, DWORD ibFirstRelease, DWORD dataRep, CALLFRAME_MARSHALCONTEXT* pcontext)
pBuffervoid*in解放対象のマーシャリング済みデータを格納したバッファへのポインタである。
cbBufferDWORDinpBuffer が指すバッファのサイズをバイト単位で指定する。
ibFirstReleaseDWORDin解放を開始するバッファ内のオフセットをバイト単位で指定する。
dataRepDWORDinバッファ内データのデータ表現を指定する。
pcontextCALLFRAME_MARSHALCONTEXT*inマーシャリングのコンテキスト情報を保持する CALLFRAME_MARSHALCONTEXT へのポインタである。
vtbl 21 HRESULT Invoke(void* pvReceiver)
pvReceivervoid*in呼び出しを実際に転送する対象オブジェクト(レシーバー)へのポインタを指定する。

HSP用 COM定義

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

出力引数:
#define global IID_ICallFrame "{D573B4B0-894E-11D2-B8B6-00C04FB9618A}"
#usecom global ICallFrame IID_ICallFrame "{}"
#comfunc global ICallFrame_GetInfo             3 var
#comfunc global ICallFrame_GetIIDAndMethod     4 var,var
#comfunc global ICallFrame_GetNames            5 var,var
#comfunc global ICallFrame_GetStackLocation    6
#comfunc global ICallFrame_SetStackLocation    7 sptr
#comfunc global ICallFrame_SetReturnValue      8 int
#comfunc global ICallFrame_GetReturnValue      9
#comfunc global ICallFrame_GetParamInfo        10 int,var
#comfunc global ICallFrame_SetParam            11 int,var
#comfunc global ICallFrame_GetParam            12 int,var
#comfunc global ICallFrame_Copy                13 int,sptr,sptr
#comfunc global ICallFrame_Free                14 sptr,sptr,sptr,int,sptr,int
#comfunc global ICallFrame_FreeParam           15 int,int,sptr,int
#comfunc global ICallFrame_WalkFrame           16 int,sptr
#comfunc global ICallFrame_GetMarshalSizeMax   17 var,int,var
#comfunc global ICallFrame_Marshal             18 var,int,sptr,int,var,var,var
#comfunc global ICallFrame_Unmarshal           19 sptr,int,int,var,var
#comfunc global ICallFrame_ReleaseMarshalData  20 sptr,int,int,int,var
#comfunc global ICallFrame_Invoke              21 sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。