ILoadFilter
COM公式ドキュメント
フィルターを読み込むためのメソッドを提供する FilterRegistration オブジェクトによって実装される、メソッドとプロパティを定義します。
解説(Remarks)
フィルター (フィルターハンドラーとも呼ばれます) は、IFilter インターフェースの実装です。
メソッド 3
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
Shell データソースにマップされている、最も適切なフィルターを取得して読み込みます。
| pwcsPath | LPWSTR | in | フィルター処理の対象となるファイルのパスを指定する、カンマ区切りで null 終端された Unicode 文字列バッファーへのポインター。このパラメーターには null を指定できます。 |
| pFilteredSources | FILTERED_DATA_SOURCES* | in | フィルターの読み込み対象となる Shell データソースのパラメーターを指定する FILTERED_DATA_SOURCES 構造体へのポインター。このパラメーターに null を指定することはできません。 |
| pUnkOuter | IUnknown* | in | オブジェクトをアグリゲート (集約) の一部として作成する場合は、そのアグリゲートの制御側 IUnknown インターフェースへのポインターを指定します。 |
| fUseDefault | BOOL | in | TRUE の場合は既定のフィルターを使用します。FALSE の場合は、利用可能な最も適切なフィルターで処理を続行します。 |
| pFilterClsid | GUID* | inout | 返されるフィルターのクラス識別子を受け取る CLSID (CLSID_FilterRegistration) へのポインター。 |
| SearchDecSize | INT* | inout | 実装されていません。 |
| pwcsSearchDesc | WORD** | inout | 実装されていません。 |
| ppIFilt | IFilter** | inout | LoadIFilter が選択した IFilter インターフェースの実装へのポインターのアドレス。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
フィルター (フィルターハンドラーとも呼ばれます) は、IFilter インターフェースの実装です。
ILoadFilter は、pwcsPath パラメーターを通じて、pFilteredSources パラメーターで指定された種類の Shell データソースを処理できるフィルターの読み込みを試みます。データソースに適したフィルターが見つからず、fUseDefault が false の場合、このメソッドは ppIFilt パラメーターに null を返します。データソースに適したフィルターが見つからず、fUseDefault が true の場合は、既定の IFilter の IFilter インターフェースが ppIFilt パラメーターに返されます。
使用しないでください: このメソッドは実装されていません。(ILoadFilter.LoadIFilterFromStorage)
| pStg | IStorage* | in | フィルタ処理対象のデータを保持するストレージ(IStorage)へのポインタである。 |
| pUnkOuter | IUnknown* | in | アグリゲーションを行う場合の制御 IUnknown へのポインタである。アグリゲートしない場合は NULL を指定する。 |
| pwcsOverride | LPWSTR | in | フィルタ選択に使用する内容種別やクラス情報を上書きする文字列を指定する。上書きしない場合は NULL を指定する。 |
| fUseDefault | BOOL | in | 対象に固有のフィルタが見つからない場合に既定のフィルタを使用するかどうかを指定する。 |
| pFilterClsid | GUID* | inout | 使用するフィルタのクラス ID(CLSID)を指定し、また実際に使用されたフィルタの CLSID を受け取る GUID へのポインタである。 |
| SearchDecSize | INT* | inout | pwcsSearchDesc が指す検索記述文字列のサイズ(文字数)を受け取る。 |
| pwcsSearchDesc | WORD** | inout | フィルタの選択に用いられた検索記述を表す文字列へのポインタを受け取る。 |
| ppIFilt | IFilter** | inout | 読み込まれたフィルタオブジェクト(IFilter)へのポインタを受け取る。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
使用しないでください: このメソッドは実装されていません。(ILoadFilter.LoadIFilterFromStream)
| pStm | IStream* | in | フィルタ処理対象のデータを保持するストリーム(IStream)へのポインタである。 |
| pFilteredSources | FILTERED_DATA_SOURCES* | in | フィルタ処理対象のデータソースに関する情報を含む FILTERED_DATA_SOURCES 構造体へのポインタである。 |
| pUnkOuter | IUnknown* | in | アグリゲーションを行う場合の制御 IUnknown へのポインタである。アグリゲートしない場合は NULL を指定する。 |
| fUseDefault | BOOL | in | 対象に固有のフィルタが見つからない場合に既定のフィルタを使用するかどうかを指定する。 |
| pFilterClsid | GUID* | inout | 使用するフィルタのクラス ID(CLSID)を指定し、また実際に使用されたフィルタの CLSID を受け取る GUID へのポインタである。 |
| SearchDecSize | INT* | inout | pwcsSearchDesc が指す検索記述文字列のサイズ(文字数)を受け取る。 |
| pwcsSearchDesc | WORD** | inout | フィルタの選択に用いられた検索記述を表す文字列へのポインタを受け取る。 |
| ppIFilt | IFilter** | inout | 読み込まれたフィルタオブジェクト(IFilter)へのポインタを受け取る。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ILoadFilter "{C7310722-AC80-11D1-8DF3-00C04FB6EF4F}" #usecom global ILoadFilter IID_ILoadFilter "{}" #comfunc global ILoadFilter_LoadIFilter 3 wstr,var,sptr,int,var,var,var,sptr #comfunc global ILoadFilter_LoadIFilterFromStorage 4 sptr,sptr,wstr,int,var,var,var,sptr #comfunc global ILoadFilter_LoadIFilterFromStream 5 sptr,var,sptr,int,var,var,var,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_ILoadFilter "{C7310722-AC80-11D1-8DF3-00C04FB6EF4F}" #usecom global ILoadFilter IID_ILoadFilter "{}" #comfunc global ILoadFilter_LoadIFilter 3 wstr,sptr,sptr,int,sptr,sptr,sptr,sptr #comfunc global ILoadFilter_LoadIFilterFromStorage 4 sptr,sptr,wstr,int,sptr,sptr,sptr,sptr #comfunc global ILoadFilter_LoadIFilterFromStream 5 sptr,sptr,sptr,int,sptr,sptr,sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。