ISupportFilteredSync::AddFilter
派生クラスによって実装された場合、同期元プロバイダーによって変更の列挙に使用されるフィルターを設定します。
HRESULT AddFilter(
IUnknown * pFilter,
FILTERING_TYPE filteringType);
パラメーター
項目 |
定義 |
pFilter |
[in] 同期元プロバイダーによって変更の列挙で使用されるフィルターです。 |
filteringType |
[in] フィルター設定された同期時に変更バッチに含める情報の種類を示します。 |
戻り値
S_OK
SYNC_E_FILTER_NOT_SUPPORTED: pFilter で指定されたフィルターの種類がサポートされていない場合
プロバイダーが決定したエラー コード
解説
フィルターのネゴシエーションは次の手順で行われます。
同期元プロバイダーが変更の列挙を開始する前に、Sync Framework が同期先プロバイダーの IRequestFilteredSync::SpecifyFilter を呼び出して、フィルターのネゴシエーションを開始します。
IRequestFilteredSync::SpecifyFilter の処理中に、同期先プロバイダーはフィルターを IFilterRequestCallback::RequestFilter に渡します。
IFilterRequestCallback::RequestFilter の処理中に、Sync Framework は、同期元プロバイダーの ISupportFilteredSync::AddFilter を呼び出します。要求されたフィルターが同期元プロバイダーでサポートされていない場合、同期先プロバイダーはサポートされているフィルターが見つかるまで、フィルターの要求を続けます。
フィルターのネゴシエーションが正常に終了すると、同期元プロバイダーはこのフィルターを使用して、変更の列挙時に含める項目を判断します。
実装に関するメモ
このメソッドの実装では、pFilter および filteringType によって指定されたフィルターを検査し、フィルターがサポートされていないことを示す SYNC_E_FILTER_NOT_SUPPORTED を返すことができます。同期先プロバイダーは、サポートされているフィルターが見つかるまで、異なるフィルターを要求できます。
通常、同期先プロバイダーは、ISupportFilteredSync::AddFilter から SYNC_E_FILTER_NOT_SUPPORTED 以外のエラーが返されると、同期セッションを終了します。