ホーム › System.Com.Urlmon › IDataFilter
IDataFilter
COMメソッド 3
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
vtbl 3 HRESULT DoEncode(DWORD dwFlags, INT lInBufferSize, BYTE* pbInBuffer, INT lOutBufferSize, BYTE* pbOutBuffer, INT lInBytesAvailable, INT* plInBytesRead, INT* plOutBytesWritten, DWORD dwReserved)
| dwFlags | DWORD | in | エンコード動作を制御するフラグを指定する。 |
| lInBufferSize | INT | in | 入力バッファのサイズ(バイト数)を指定する。 |
| pbInBuffer | BYTE* | in | エンコード対象の入力データを格納したバッファへのポインタである。 |
| lOutBufferSize | INT | in | 出力バッファのサイズ(バイト数)を指定する。 |
| pbOutBuffer | BYTE* | out | エンコード結果を受け取る出力バッファへのポインタである。 |
| lInBytesAvailable | INT | in | 入力バッファ内で利用可能なバイト数を指定する。 |
| plInBytesRead | INT* | out | 実際に読み取られた入力バイト数を受け取るポインタである。 |
| plOutBytesWritten | INT* | out | 実際に書き込まれた出力バイト数を受け取るポインタである。 |
| dwReserved | DWORD | in | 予約済みであり、0 を指定する。 |
vtbl 4 HRESULT DoDecode(DWORD dwFlags, INT lInBufferSize, BYTE* pbInBuffer, INT lOutBufferSize, BYTE* pbOutBuffer, INT lInBytesAvailable, INT* plInBytesRead, INT* plOutBytesWritten, DWORD dwReserved)
| dwFlags | DWORD | in | デコード動作を制御するフラグを指定する。 |
| lInBufferSize | INT | in | 入力バッファのサイズ(バイト数)を指定する。 |
| pbInBuffer | BYTE* | in | デコード対象の入力データを格納したバッファへのポインタである。 |
| lOutBufferSize | INT | in | 出力バッファのサイズ(バイト数)を指定する。 |
| pbOutBuffer | BYTE* | out | デコード結果を受け取る出力バッファへのポインタである。 |
| lInBytesAvailable | INT | in | 入力バッファ内で利用可能なバイト数を指定する。 |
| plInBytesRead | INT* | out | 実際に読み取られた入力バイト数を受け取るポインタである。 |
| plOutBytesWritten | INT* | out | 実際に書き込まれた出力バイト数を受け取るポインタである。 |
| dwReserved | DWORD | in | 予約済みであり、0 を指定する。 |
| dwEncLevel | DWORD | in | 適用するエンコードレベルを指定する。 |
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
出力引数:
#define global IID_IDataFilter "{69D14C80-C18E-11D0-A9CE-006097942311}" #usecom global IDataFilter IID_IDataFilter "{}" #comfunc global IDataFilter_DoEncode 3 int,int,var,int,var,int,var,var,int #comfunc global IDataFilter_DoDecode 4 int,int,var,int,var,int,var,var,int #comfunc global IDataFilter_SetEncodingLevel 5 int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IDataFilter "{69D14C80-C18E-11D0-A9CE-006097942311}" #usecom global IDataFilter IID_IDataFilter "{}" #comfunc global IDataFilter_DoEncode 3 int,int,sptr,int,sptr,int,sptr,sptr,int #comfunc global IDataFilter_DoDecode 4 int,int,sptr,int,sptr,int,sptr,sptr,int #comfunc global IDataFilter_SetEncodingLevel 5 int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。