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。这将结束同步会话。