Выбор файлов для синхронизации

В платформах Sync Framework предусмотрено несколько способов выбора файлов и вложенных папок для включения в область синхронизации. Статические фильтры исключают или включают файлы и вложенные папки на основе параметров, указанных приложением при инициализации службы синхронизации. Динамическая фильтрация достигается за счет применения уведомлений о событиях, получение которых приложение может регистрировать.

Исключаемые и неподдерживаемые типы файлов и папок

Указанные ниже файлы всегда исключаются из области синхронизации и полностью пропускаются.

  • Thumbs.db, если заданы атрибуты hidden и system.

  • Desktop.ini, если заданы атрибуты hidden и system.

  • Файл метаданных, заданный при инициализации службы.

  • Файл с атрибутом offline или device.

  • Папка с атрибутом reparse point.

Папки, содержащие папки типа «Портфель», не поддерживаются, и их не следует включать ни в какие области синхронизации.

Статические фильтры

Для исключения файлов по имени (в том числе с использованием шаблонов) и по атрибуту можно задавать статические фильтры. Статические фильтры также можно настроить, чтобы исключить содержимое целых вложенных папок. Однако символы-шаблоны для вложенных папок не поддерживаются. Также можно задать явный список имен файлов, включаемых в синхронизацию (в том числе с использованием шаблонов). Для включения в область синхронизации файлы или папки должны пройти все фильтры. Например, если все файлы с расширением TXT исключены из области, а файл MyFile.txt указан в списке файлов, включенных в область явно, то он также будет исключен из области из-за своего расширения .txt.

Настройка статического фильтра с помощью управляемого кода

  1. Создайте объект FileSyncScopeFilter. Свойства исключения или включения задаются в конструкторе FileSyncScopeFilter. Например, можно указать "*.txt" в качестве значения параметра fileNameExcludes, и из области синхронизации будут исключены все файлы с расширением TXT.

  2. Передайте фильтр конструктору FileSyncProvider. Если эта служба используется в сеансе синхронизации как поставщик источника, то в область синхронизации включаются только файлы, прошедшие через заданные фильтры.

Настройка статического фильтра с помощью неуправляемого кода

  1. Создайте объект IFileSyncScopeFilter с помощью интерфейса IFileSyncProvider::CreateNewScopeFilter.

  2. Задайте свойства исключения или включения в объекте фильтра. Например, укажите "*.txt" в качестве значения параметра IFileSyncScopeFilter::SetFilenameExcludes, и из области синхронизации будут исключены все файлы с расширением TXT.

  3. Передайте фильтр интерфейсу IFileSyncProvider::Initialize. Если эта служба используется в сеансе синхронизации как поставщик источника, то в область синхронизации включаются только файлы, прошедшие через заданные фильтры.

Пропуск файлов

Файлы могут динамически пропускаться во время синхронизации с помощью обработки события, создаваемого службой синхронизации. Это событие возникает в момент применения изменений. Оно создается поставщиком назначения однократно для каждого изменения перед тем, как это изменение будет применено к реплике назначения. Когда обработчик события получает событие, он может указать, что событие не следует применять к реплике назначения.

Управляемый код Зарегистрируйте обработчик для события ApplyingChange. Чтобы пропустить изменение, задайте в обработчике события значение SkipChange для свойства true.

Неуправляемый код Для регистрации получения уведомлений о событиях передайте объект IFileSyncProviderCallback в интерфейс IFileSyncProvider::Initialize. Чтобы пропустить изменение, задайте в интерфейсе IFileSyncProviderCallback::OnApplyingChange значение TRUE для свойства pfSkipChange.

См. также

Справочник

FileSyncScopeFilter

Другие ресурсы

Синхронизация файлов

Интерфейс IFileSyncScopeFilter

Интерфейс IFileSyncProviderCallback