控制可同步的文件

Sync Framework 提供若干方法,用于控制在同步作用域中包括哪些文件和子文件夹。静态筛选器根据初始化提供程序时由应用程序指定的设置来排除或包括文件和子文件夹。通过使用应用程序可以注册接收的事件通知,可以实现动态筛选。

排除的和不支持的文件和文件夹类型

始终从同步作用域中排除并且完全忽略以下文件:

  • Thumbs.db(如果设置了 hidden 和 system 属性)。

  • Desktop.ini(如果设置了 hidden 和 system 属性)。

  • 初始化提供程序时所指定的元数据文件。

  • 设置了 offline 或 device 属性的文件。

  • 设置了 reparse point 属性的文件夹。

不支持包含公文包文件夹的文件夹,不要将它们包括在任何同步作用域中。

静态筛选器

可以设置静态筛选器,使其按照名称(包括通配符名称)和属性来排除文件。还可以将静态筛选器设置为排除整个子文件夹的内容,但是不支持将通配符用于子文件夹。或者,可以指定要包括的文件名(包括通配符名称)的显式列表。若要包括在作用域中,文件或文件夹必须传递所有筛选器。例如,如果要从作用域中排除扩展名为 .txt 的所有文件,而在文件列表中指定将 MyFile.txt 显式包括在该作用域中,由于 MyFile.txt 的扩展名为 .txt,将从该作用域中排除 MyFile.txt。

使用托管代码指定静态筛选器

  1. 创建一个 FileSyncScopeFilter 对象。在 FileSyncScopeFilter 构造函数中设置排除或包含属性,例如通过将 fileNameExcludes 参数指定为 "*.txt",可以从同步作用域中排除扩展名为 .txt 的所有文件。

  2. 将该筛选器传递给 FileSyncProvider 构造函数。将此提供程序用作同步会话中的源提供程序时,仅将传递指定筛选器的文件包括在同步作用域中。

使用非托管代码指定静态筛选器

  1. 通过使用 IFileSyncProvider::CreateNewScopeFilter 来创建一个 IFileSyncScopeFilter 对象。

  2. 针对筛选器对象设置排除或包含属性,例如通过为 IFileSyncScopeFilter::SetFilenameExcludes 方法指定 "*.txt",从同步作用域中排除扩展名为 .txt 的所有文件。

  3. 将该筛选器传递到 IFileSyncProvider::Initialize。将此提供程序用作同步会话中的源提供程序时,仅将传递指定筛选器的文件包括在同步作用域中。

跳过文件

通过处理提供程序引发的事件,可以在同步期间动态跳过文件。此事件在应用变更期间发生。在将变更应用到目标副本之前,对于每个变更,目标提供程序只引发一次该事件。当事件处理程序收到该事件后,它可以指定不应将变更应用到目标副本。

托管代码:为 ApplyingChange 事件注册处理程序。若要跳过变更,请在事件处理程序中将 SkipChange 属性的值设置为 true

非托管代码:向 IFileSyncProvider::Initialize 传递 IFileSyncProviderCallback 对象,以注册接收事件通知。若要跳过变更,请在 IFileSyncProviderCallback::OnApplyingChange 中将 pfSkipChange 参数的值设置为 TRUE

请参阅

参考

IFileSyncScopeFilter 接口
IFileSyncProviderCallback 接口
FileSyncScopeFilter

概念

同步文件