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

ILoadFilter

COM
IIDc7310722-ac80-11d1-8df3-00c04fb6ef4f継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

フィルターを読み込むためのメソッドを提供する FilterRegistration オブジェクトによって実装される、メソッドとプロパティを定義します。

解説(Remarks)

フィルター (フィルターハンドラーとも呼ばれます) は、IFilter インターフェースの実装です。

メソッド 3

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

vtbl 3 HRESULT LoadIFilter(LPWSTR pwcsPath, FILTERED_DATA_SOURCES* pFilteredSources, IUnknown* pUnkOuter, BOOL fUseDefault, GUID* pFilterClsid, INT* SearchDecSize, WORD** pwcsSearchDesc, IFilter** ppIFilt)

Shell データソースにマップされている、最も適切なフィルターを取得して読み込みます。

pwcsPathLPWSTRinフィルター処理の対象となるファイルのパスを指定する、カンマ区切りで null 終端された Unicode 文字列バッファーへのポインター。このパラメーターには null を指定できます。
pFilteredSourcesFILTERED_DATA_SOURCES*inフィルターの読み込み対象となる Shell データソースのパラメーターを指定する FILTERED_DATA_SOURCES 構造体へのポインター。このパラメーターに null を指定することはできません。
pUnkOuterIUnknown*inオブジェクトをアグリゲート (集約) の一部として作成する場合は、そのアグリゲートの制御側 IUnknown インターフェースへのポインターを指定します。
fUseDefaultBOOLinTRUE の場合は既定のフィルターを使用します。FALSE の場合は、利用可能な最も適切なフィルターで処理を続行します。
pFilterClsidGUID*inout返されるフィルターのクラス識別子を受け取る CLSID (CLSID_FilterRegistration) へのポインター。
SearchDecSizeINT*inout実装されていません。
pwcsSearchDescWORD**inout実装されていません。
ppIFiltIFilter**inoutLoadIFilter が選択した IFilter インターフェースの実装へのポインターのアドレス。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

フィルター (フィルターハンドラーとも呼ばれます) は、IFilter インターフェースの実装です。

ILoadFilter は、pwcsPath パラメーターを通じて、pFilteredSources パラメーターで指定された種類の Shell データソースを処理できるフィルターの読み込みを試みます。データソースに適したフィルターが見つからず、fUseDefaultfalse の場合、このメソッドは ppIFilt パラメーターに null を返します。データソースに適したフィルターが見つからず、fUseDefaulttrue の場合は、既定の IFilterIFilter インターフェースが ppIFilt パラメーターに返されます。

vtbl 4 HRESULT LoadIFilterFromStorage(IStorage* pStg, IUnknown* pUnkOuter, LPWSTR pwcsOverride, BOOL fUseDefault, GUID* pFilterClsid, INT* SearchDecSize, WORD** pwcsSearchDesc, IFilter** ppIFilt)

使用しないでください: このメソッドは実装されていません。(ILoadFilter.LoadIFilterFromStorage)

pStgIStorage*inフィルタ処理対象のデータを保持するストレージ(IStorage)へのポインタである。
pUnkOuterIUnknown*inアグリゲーションを行う場合の制御 IUnknown へのポインタである。アグリゲートしない場合は NULL を指定する。
pwcsOverrideLPWSTRinフィルタ選択に使用する内容種別やクラス情報を上書きする文字列を指定する。上書きしない場合は NULL を指定する。
fUseDefaultBOOLin対象に固有のフィルタが見つからない場合に既定のフィルタを使用するかどうかを指定する。
pFilterClsidGUID*inout使用するフィルタのクラス ID(CLSID)を指定し、また実際に使用されたフィルタの CLSID を受け取る GUID へのポインタである。
SearchDecSizeINT*inoutpwcsSearchDesc が指す検索記述文字列のサイズ(文字数)を受け取る。
pwcsSearchDescWORD**inoutフィルタの選択に用いられた検索記述を表す文字列へのポインタを受け取る。
ppIFiltIFilter**inout読み込まれたフィルタオブジェクト(IFilter)へのポインタを受け取る。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 5 HRESULT LoadIFilterFromStream(IStream* pStm, FILTERED_DATA_SOURCES* pFilteredSources, IUnknown* pUnkOuter, BOOL fUseDefault, GUID* pFilterClsid, INT* SearchDecSize, WORD** pwcsSearchDesc, IFilter** ppIFilt)

使用しないでください: このメソッドは実装されていません。(ILoadFilter.LoadIFilterFromStream)

pStmIStream*inフィルタ処理対象のデータを保持するストリーム(IStream)へのポインタである。
pFilteredSourcesFILTERED_DATA_SOURCES*inフィルタ処理対象のデータソースに関する情報を含む FILTERED_DATA_SOURCES 構造体へのポインタである。
pUnkOuterIUnknown*inアグリゲーションを行う場合の制御 IUnknown へのポインタである。アグリゲートしない場合は NULL を指定する。
fUseDefaultBOOLin対象に固有のフィルタが見つからない場合に既定のフィルタを使用するかどうかを指定する。
pFilterClsidGUID*inout使用するフィルタのクラス ID(CLSID)を指定し、また実際に使用されたフィルタの CLSID を受け取る GUID へのポインタである。
SearchDecSizeINT*inoutpwcsSearchDesc が指す検索記述文字列のサイズ(文字数)を受け取る。
pwcsSearchDescWORD**inoutフィルタの選択に用いられた検索記述を表す文字列へのポインタを受け取る。
ppIFiltIFilter**inout読み込まれたフィルタオブジェクト(IFilter)へのポインタを受け取る。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
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 指定が可能。