Win32 API 日本語リファレンス
ホームStorage.OfflineFiles › IOfflineFilesItemFilter

IOfflineFilesItemFilter

COM
IIDf4b5a26c-dc05-4f20-ada4-551f1077be5c継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

列挙に適用されるフィルターのインスタンスを表します。

メソッド 3

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

vtbl 3 HRESULT GetFilterFlags(ULONGLONG* pullFlags, ULONGLONG* pullMask)

項目のフラグベースのフィルタリングを制御するためのフラグを提供します。

pullFlagsULONGLONG*out

フィルターの評価に使用される Offline Files Filter Flags のビット値を受け取ります。

ビット値 1 は、フィルターに一致するために項目内の対応するデータ条件が TRUE でなければならないことを意味します。ビット値 0 は、フィルターに一致するために項目内の対応するデータ条件が FALSE でなければならないことを意味します。

pullMaskULONGLONG*out

どのフラグを評価するかを示す Offline Files Filter Flags のビット値を受け取ります。

ビット値 1 は「対応するデータを評価する」ことを意味し、ビット値 0 は 「対応するデータを評価しない」ことを意味します。

戻り値

フィルターがフラグによるフィルタリングをサポートし、フラグフィルタリングの情報が提供された場合は S_OK を返します。

フラグによるフィルタリングがサポートされていない場合は E_NOTIMPL を返します。

その他のエラー値は、列挙子の作成を失敗させます。

解説(Remarks)

ビット値とビットマスクの組み合わせにより、列挙から項目を含めたり除外したりするための比較的柔軟な仕組みが実現されます。たとえば、OFFLINEFILES_ITEM_FILTER_FLAG_DIRECTORY フラグが pullFlagspullMask の両方のパラメーターに設定されている場合、一致する項目はディレクトリでなければなりません。OFFLINEFILES_ITEM_FILTER_FLAG_DIRECTORY フラグが pullMask パラメーターには設定されているが pullFlags パラメーターには設定されていない場合、一致する項目はディレクトリであってはなりません。

このメソッドは、任意のフィルターの種類 (包含または除外) および任意のフィルター対象 (ファイルまたはコンテナー) で実装できます。

vtbl 4 HRESULT GetTimeFilter(FILETIME* pftTime, BOOL* pbEvalTimeOfDay, OFFLINEFILES_ITEM_TIME* pTimeType, OFFLINEFILES_COMPARE* pCompare)

時刻に基づく項目のフィルタリングを制御するために、時刻値の比較のセマンティクスを提供します。

pftTimeFILETIME*out項目と比較する UTC の時刻値を格納した FILETIME 構造体へのポインターを受け取ります。
pbEvalTimeOfDayBOOL*out

FILETIME 値のうち時刻 (時分秒) の部分を項目の評価で考慮するかどうかを示すブール値を受け取ります。フラグの値が TRUE の場合、時刻部分が考慮されます。フラグの値が FALSE の場合、評価に関与するすべての時刻値から時刻部分が取り除かれ、年、月、日のみが残ります。

これは、フィルタリングの粒度が日単位である場合に非常に便利です。

pTimeTypeOFFLINEFILES_ITEM_TIME*out

評価に使用する、キャッシュ項目に関連付けられた時刻値を示す OFFLINEFILES_ITEM_TIME 列挙値を受け取ります。

指定できる値は 1 つだけです。これはマスクではありません。

pCompareOFFLINEFILES_COMPARE*out選択された項目の時刻と、pftTime パラメーターが指すフィルターの時刻との間で実行する論理比較の種類を示す OFFLINEFILES_COMPARE 列挙値を受け取ります。

戻り値

フィルターが時刻によるフィルタリングをサポートし、時刻フィルタリングの情報が提供された場合は S_OK を返します。

時刻によるフィルタリングがサポートされていない場合は E_NOTIMPL を返します。

その他のエラー値は、列挙子の作成を失敗させます。

解説(Remarks)

これらの式では、項目の時刻が式の左辺に配置されます。例:

match = item_time >= filter_time

このメソッドは、任意のフィルターの種類 (包含、除外) および任意のフィルター対象 (ファイル、コンテナー) で実装できます。

vtbl 5 HRESULT GetPatternFilter(LPWSTR pszPattern, DWORD cchPattern)

項目名のパターンに基づいて列挙される項目を限定するために、フィルターのパターン文字列を提供します。

pszPatternLPWSTRout

フィルターのパターン文字列を受け取ります。パターン文字列にはワイルドカード文字 * および ? を含めることができます。

例:

  • *.DOC
  • ABC.*
  • AB?.??2
cchPatternDWORDinパターン文字列を受け取るバッファーの最大長を文字数で指定します。この値は現在 MAX_PATH です。

戻り値

フィルターがパターンによるフィルタリングをサポートし、フィルター文字列が pszPattern バッファーに正常にコピーされた場合は S_OK を返します。

パターンによるフィルタリングがサポートされていない場合は E_NOTIMPL を返します。

その他のエラー値は、列挙子の作成を失敗させます。

解説(Remarks)

このメソッドは任意のフィルターの種類 (包含、除外) および任意のフィルター対象 (ファイル、コンテナー) で実装できますが、実際に呼び出されるのは包含フィルターかつファイル対象の場合のみです。それ以外のフィルターの種類と対象の組み合わせでは、このメソッドが呼び出されることはありません。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IOfflineFilesItemFilter "{F4B5A26C-DC05-4F20-ADA4-551F1077BE5C}"
#usecom global IOfflineFilesItemFilter IID_IOfflineFilesItemFilter "{}"
#comfunc global IOfflineFilesItemFilter_GetFilterFlags    3 var,var
#comfunc global IOfflineFilesItemFilter_GetTimeFilter     4 var,var,var,var
#comfunc global IOfflineFilesItemFilter_GetPatternFilter  5 var,int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。