IRequestFilteredSync::SpecifyFilter
派生クラスによって実装された場合、変更の列挙時に同期元プロバイダーが使用するフィルターのネゴシエーションを行います。
構文
HRESULT SpecifyFilter(
IFilterRequestCallback * pCallback);
パラメーター
- pCallback
[in] 同期先プロバイダーが、変更の列挙時に同期元プロバイダーが使用するフィルターを要求するために使用するコールバック インターフェイス。
戻り値
S_OK
プロバイダーが決定したエラー コード
説明
フィルターのネゴシエーションは次の手順で行われます。
同期元プロバイダーが変更の列挙を開始する前に、Sync Framework が同期先プロバイダーの IRequestFilteredSync::SpecifyFilter を呼び出して、フィルターのネゴシエーションを開始します。
IRequestFilteredSync::SpecifyFilter の処理中に、同期先プロバイダーはフィルターを IFilterRequestCallback::RequestFilter に渡します。
IFilterRequestCallback::RequestFilter の処理中に、Sync Framework は、同期元プロバイダーの ISupportFilteredSync::AddFilter を呼び出します。要求されたフィルターが同期元プロバイダーでサポートされていない場合、同期先プロバイダーはサポートされているフィルターが見つかるまで、フィルターの要求を続けます。
フィルターのネゴシエーションが正常に終了すると、同期元プロバイダーはこのフィルターを使用して、変更の列挙時に含める項目を判断します。
実装に関するメモ
このメソッドの実装は、同期先プロバイダーと同期元プロバイダーの両方でサポートされているフィルターが見つかるまで、IFilterRequestCallback::RequestFilter を繰り返し呼び出すことができます。同期元プロバイダーは、フィルターをサポートしていない場合、ISupportFilteredSync::AddFilter 呼び出しに対する応答で SYNC_E_FILTER_NOT_SUPPORTED を返します。
ISupportFilteredSync::AddFilter から SYNC_E_FILTER_NOT_SUPPORTED 以外のエラーが返された場合、IRequestFilteredSync::SpecifyFilter はエラーを Sync Framework に返す必要があります。これにより、同期セッションが終了します。