IOfflineFilesItemFilter
COM公式ドキュメント
列挙に適用されるフィルターのインスタンスを表します。
メソッド 3
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
項目のフラグベースのフィルタリングを制御するためのフラグを提供します。
| pullFlags | ULONGLONG* | out | フィルターの評価に使用される Offline Files Filter Flags のビット値を受け取ります。 ビット値 1 は、フィルターに一致するために項目内の対応するデータ条件が TRUE でなければならないことを意味します。ビット値 0 は、フィルターに一致するために項目内の対応するデータ条件が FALSE でなければならないことを意味します。 |
| pullMask | ULONGLONG* | out | どのフラグを評価するかを示す Offline Files Filter Flags のビット値を受け取ります。 ビット値 1 は「対応するデータを評価する」ことを意味し、ビット値 0 は 「対応するデータを評価しない」ことを意味します。 |
戻り値
フィルターがフラグによるフィルタリングをサポートし、フラグフィルタリングの情報が提供された場合は S_OK を返します。
フラグによるフィルタリングがサポートされていない場合は E_NOTIMPL を返します。
その他のエラー値は、列挙子の作成を失敗させます。
解説(Remarks)
ビット値とビットマスクの組み合わせにより、列挙から項目を含めたり除外したりするための比較的柔軟な仕組みが実現されます。たとえば、OFFLINEFILES_ITEM_FILTER_FLAG_DIRECTORY フラグが pullFlags と pullMask の両方のパラメーターに設定されている場合、一致する項目はディレクトリでなければなりません。OFFLINEFILES_ITEM_FILTER_FLAG_DIRECTORY フラグが pullMask パラメーターには設定されているが pullFlags パラメーターには設定されていない場合、一致する項目はディレクトリであってはなりません。
このメソッドは、任意のフィルターの種類 (包含または除外) および任意のフィルター対象 (ファイルまたはコンテナー) で実装できます。
時刻に基づく項目のフィルタリングを制御するために、時刻値の比較のセマンティクスを提供します。
| pftTime | FILETIME* | out | 項目と比較する UTC の時刻値を格納した FILETIME 構造体へのポインターを受け取ります。 |
| pbEvalTimeOfDay | BOOL* | out | FILETIME 値のうち時刻 (時分秒) の部分を項目の評価で考慮するかどうかを示すブール値を受け取ります。フラグの値が TRUE の場合、時刻部分が考慮されます。フラグの値が FALSE の場合、評価に関与するすべての時刻値から時刻部分が取り除かれ、年、月、日のみが残ります。 これは、フィルタリングの粒度が日単位である場合に非常に便利です。 |
| pTimeType | OFFLINEFILES_ITEM_TIME* | out | 評価に使用する、キャッシュ項目に関連付けられた時刻値を示す OFFLINEFILES_ITEM_TIME 列挙値を受け取ります。 指定できる値は 1 つだけです。これはマスクではありません。 |
| pCompare | OFFLINEFILES_COMPARE* | out | 選択された項目の時刻と、pftTime パラメーターが指すフィルターの時刻との間で実行する論理比較の種類を示す OFFLINEFILES_COMPARE 列挙値を受け取ります。 |
戻り値
フィルターが時刻によるフィルタリングをサポートし、時刻フィルタリングの情報が提供された場合は S_OK を返します。
時刻によるフィルタリングがサポートされていない場合は E_NOTIMPL を返します。
その他のエラー値は、列挙子の作成を失敗させます。
解説(Remarks)
これらの式では、項目の時刻が式の左辺に配置されます。例:
match = item_time >= filter_time
このメソッドは、任意のフィルターの種類 (包含、除外) および任意のフィルター対象 (ファイル、コンテナー) で実装できます。
項目名のパターンに基づいて列挙される項目を限定するために、フィルターのパターン文字列を提供します。
| pszPattern | LPWSTR | out | フィルターのパターン文字列を受け取ります。パターン文字列にはワイルドカード文字 * および ? を含めることができます。 例:
|
| cchPattern | DWORD | in | パターン文字列を受け取るバッファーの最大長を文字数で指定します。この値は現在 MAX_PATH です。 |
戻り値
フィルターがパターンによるフィルタリングをサポートし、フィルター文字列が pszPattern バッファーに正常にコピーされた場合は S_OK を返します。
パターンによるフィルタリングがサポートされていない場合は E_NOTIMPL を返します。
その他のエラー値は、列挙子の作成を失敗させます。
解説(Remarks)
このメソッドは任意のフィルターの種類 (包含、除外) および任意のフィルター対象 (ファイル、コンテナー) で実装できますが、実際に呼び出されるのは包含フィルターかつファイル対象の場合のみです。それ以外のフィルターの種類と対象の組み合わせでは、このメソッドが呼び出されることはありません。
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 方式にも切替可。#define global IID_IOfflineFilesItemFilter "{F4B5A26C-DC05-4F20-ADA4-551F1077BE5C}" #usecom global IOfflineFilesItemFilter IID_IOfflineFilesItemFilter "{}" #comfunc global IOfflineFilesItemFilter_GetFilterFlags 3 sptr,sptr #comfunc global IOfflineFilesItemFilter_GetTimeFilter 4 sptr,sptr,sptr,sptr #comfunc global IOfflineFilesItemFilter_GetPatternFilter 5 sptr,int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。