ホーム › System.Com › IChannelHook
IChannelHook
COMメソッド 6
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
vtbl 3 void ClientGetSize(GUID* uExtent, GUID* riid, DWORD* pDataSize)
| uExtent | GUID* | in | このチャネルフックを識別する拡張(エクステント)の GUID へのポインタである。 |
| riid | GUID* | in | 呼び出されるインターフェイスの GUID(インターフェイス識別子)へのポインタである。 |
| pDataSize | DWORD* | out | 送信データに必要なバイト数を受け取る DWORD へのポインタである。 |
vtbl 4 void ClientFillBuffer(GUID* uExtent, GUID* riid, DWORD* pDataSize, void* pDataBuffer)
| uExtent | GUID* | in | このチャネルフックを識別する拡張(エクステント)の GUID へのポインタである。 |
| riid | GUID* | in | 呼び出されるインターフェイスの GUID(インターフェイス識別子)へのポインタである。 |
| pDataSize | DWORD* | inout | 入力として書き込み可能なバイト数を渡し、実際に書き込んだバイト数を受け取る DWORD へのポインタである。 |
| pDataBuffer | void* | in | 送信データを書き込む先のバッファへのポインタである。 |
vtbl 5 void ClientNotify(GUID* uExtent, GUID* riid, DWORD cbDataSize, void* pDataBuffer, DWORD lDataRep, HRESULT hrFault)
| uExtent | GUID* | in | このチャネルフックを識別する拡張(エクステント)の GUID へのポインタである。 |
| riid | GUID* | in | 呼び出されたインターフェイスの GUID(インターフェイス識別子)へのポインタである。 |
| cbDataSize | DWORD | in | サーバーから返されたデータのバイト数を指定する。 |
| pDataBuffer | void* | in | サーバーから返されたデータを格納したバッファへのポインタである。 |
| lDataRep | DWORD | in | データの表現形式(バイトオーダー等)を示す DWORD を指定する。 |
| hrFault | HRESULT | in | サーバー呼び出しの結果として返された HRESULT を指定する。 |
vtbl 6 void ServerNotify(GUID* uExtent, GUID* riid, DWORD cbDataSize, void* pDataBuffer, DWORD lDataRep)
| uExtent | GUID* | in | このチャネルフックを識別する拡張(エクステント)の GUID へのポインタである。 |
| riid | GUID* | in | 呼び出されたインターフェイスの GUID(インターフェイス識別子)へのポインタである。 |
| cbDataSize | DWORD | in | クライアントから送られたデータのバイト数を指定する。 |
| pDataBuffer | void* | in | クライアントから送られたデータを格納したバッファへのポインタである。 |
| lDataRep | DWORD | in | データの表現形式(バイトオーダー等)を示す DWORD を指定する。 |
| uExtent | GUID* | in | このチャネルフックを識別する拡張(エクステント)の GUID へのポインタである。 |
| riid | GUID* | in | 呼び出されたインターフェイスの GUID(インターフェイス識別子)へのポインタである。 |
| hrFault | HRESULT | in | サーバー処理の結果として返される HRESULT を指定する。 |
| pDataSize | DWORD* | out | 応答に付加するデータに必要なバイト数を受け取る DWORD へのポインタである。 |
vtbl 8 void ServerFillBuffer(GUID* uExtent, GUID* riid, DWORD* pDataSize, void* pDataBuffer, HRESULT hrFault)
| uExtent | GUID* | in | このチャネルフックを識別する拡張(エクステント)の GUID へのポインタである。 |
| riid | GUID* | in | 呼び出されたインターフェイスの GUID(インターフェイス識別子)へのポインタである。 |
| pDataSize | DWORD* | inout | 入力として書き込み可能なバイト数を渡し、実際に書き込んだバイト数を受け取る DWORD へのポインタである。 |
| pDataBuffer | void* | in | 応答データを書き込む先のバッファへのポインタである。 |
| hrFault | HRESULT | in | サーバー処理の結果として返される 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 指定が可能。#define global IID_IChannelHook "{1008C4A0-7613-11CF-9AF1-0020AF6E72F4}" #usecom global IChannelHook IID_IChannelHook "{}" #comfunc global IChannelHook_ClientGetSize 3 sptr,sptr,sptr #comfunc global IChannelHook_ClientFillBuffer 4 sptr,sptr,sptr,sptr #comfunc global IChannelHook_ClientNotify 5 sptr,sptr,int,sptr,int,int #comfunc global IChannelHook_ServerNotify 6 sptr,sptr,int,sptr,int #comfunc global IChannelHook_ServerGetSize 7 sptr,sptr,int,sptr #comfunc global IChannelHook_ServerFillBuffer 8 sptr,sptr,sptr,sptr,int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。