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

IChannelHook

COM
IID1008c4a0-7613-11cf-9af1-0020af6e72f4継承元IUnknown自前メソッド開始 vtbl3

メソッド 6

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

vtbl 3 void ClientGetSize(GUID* uExtent, GUID* riid, DWORD* pDataSize)
uExtentGUID*inこのチャネルフックを識別する拡張(エクステント)の GUID へのポインタである。
riidGUID*in呼び出されるインターフェイスの GUID(インターフェイス識別子)へのポインタである。
pDataSizeDWORD*out送信データに必要なバイト数を受け取る DWORD へのポインタである。
vtbl 4 void ClientFillBuffer(GUID* uExtent, GUID* riid, DWORD* pDataSize, void* pDataBuffer)
uExtentGUID*inこのチャネルフックを識別する拡張(エクステント)の GUID へのポインタである。
riidGUID*in呼び出されるインターフェイスの GUID(インターフェイス識別子)へのポインタである。
pDataSizeDWORD*inout入力として書き込み可能なバイト数を渡し、実際に書き込んだバイト数を受け取る DWORD へのポインタである。
pDataBuffervoid*in送信データを書き込む先のバッファへのポインタである。
vtbl 5 void ClientNotify(GUID* uExtent, GUID* riid, DWORD cbDataSize, void* pDataBuffer, DWORD lDataRep, HRESULT hrFault)
uExtentGUID*inこのチャネルフックを識別する拡張(エクステント)の GUID へのポインタである。
riidGUID*in呼び出されたインターフェイスの GUID(インターフェイス識別子)へのポインタである。
cbDataSizeDWORDinサーバーから返されたデータのバイト数を指定する。
pDataBuffervoid*inサーバーから返されたデータを格納したバッファへのポインタである。
lDataRepDWORDinデータの表現形式(バイトオーダー等)を示す DWORD を指定する。
hrFaultHRESULTinサーバー呼び出しの結果として返された HRESULT を指定する。
vtbl 6 void ServerNotify(GUID* uExtent, GUID* riid, DWORD cbDataSize, void* pDataBuffer, DWORD lDataRep)
uExtentGUID*inこのチャネルフックを識別する拡張(エクステント)の GUID へのポインタである。
riidGUID*in呼び出されたインターフェイスの GUID(インターフェイス識別子)へのポインタである。
cbDataSizeDWORDinクライアントから送られたデータのバイト数を指定する。
pDataBuffervoid*inクライアントから送られたデータを格納したバッファへのポインタである。
lDataRepDWORDinデータの表現形式(バイトオーダー等)を示す DWORD を指定する。
vtbl 7 void ServerGetSize(GUID* uExtent, GUID* riid, HRESULT hrFault, DWORD* pDataSize)
uExtentGUID*inこのチャネルフックを識別する拡張(エクステント)の GUID へのポインタである。
riidGUID*in呼び出されたインターフェイスの GUID(インターフェイス識別子)へのポインタである。
hrFaultHRESULTinサーバー処理の結果として返される HRESULT を指定する。
pDataSizeDWORD*out応答に付加するデータに必要なバイト数を受け取る DWORD へのポインタである。
vtbl 8 void ServerFillBuffer(GUID* uExtent, GUID* riid, DWORD* pDataSize, void* pDataBuffer, HRESULT hrFault)
uExtentGUID*inこのチャネルフックを識別する拡張(エクステント)の GUID へのポインタである。
riidGUID*in呼び出されたインターフェイスの GUID(インターフェイス識別子)へのポインタである。
pDataSizeDWORD*inout入力として書き込み可能なバイト数を渡し、実際に書き込んだバイト数を受け取る DWORD へのポインタである。
pDataBuffervoid*in応答データを書き込む先のバッファへのポインタである。
hrFaultHRESULTinサーバー処理の結果として返される HRESULT を指定する。

HSP用 COM定義

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

出力引数:
#define global IID_IChannelHook "{1008C4A0-7613-11CF-9AF1-0020AF6E72F4}"
#usecom global IChannelHook IID_IChannelHook "{}"
#comfunc global IChannelHook_ClientGetSize     3 var,var,var
#comfunc global IChannelHook_ClientFillBuffer  4 var,var,var,sptr
#comfunc global IChannelHook_ClientNotify      5 var,var,int,sptr,int,int
#comfunc global IChannelHook_ServerNotify      6 var,var,int,sptr,int
#comfunc global IChannelHook_ServerGetSize     7 var,var,int,var
#comfunc global IChannelHook_ServerFillBuffer  8 var,var,var,sptr,int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。