Выбор файлов для синхронизации
В платформах Sync Framework предусмотрено несколько способов выбора файлов и вложенных папок для включения в область синхронизации. Статические фильтры исключают или включают файлы и вложенные папки на основе параметров, указанных приложением при инициализации службы синхронизации. Динамическая фильтрация достигается за счет применения уведомлений о событиях, получение которых приложение может регистрировать.
Исключаемые и неподдерживаемые типы файлов и папок
Указанные ниже файлы всегда исключаются из области синхронизации и полностью пропускаются.
Thumbs.db, если заданы атрибуты hidden и system.
Desktop.ini, если заданы атрибуты hidden и system.
Файл метаданных, заданный при инициализации службы.
Файл с атрибутом offline или device.
Папка с атрибутом reparse point.
Папки, содержащие папки типа «Портфель», не поддерживаются, и их не следует включать ни в какие области синхронизации.
Статические фильтры
Для исключения файлов по имени (в том числе с использованием шаблонов) и по атрибуту можно задавать статические фильтры. Статические фильтры также можно настроить, чтобы исключить содержимое целых вложенных папок. Однако символы-шаблоны для вложенных папок не поддерживаются. Также можно задать явный список имен файлов, включаемых в синхронизацию (в том числе с использованием шаблонов). Для включения в область синхронизации файлы или папки должны пройти все фильтры. Например, если все файлы с расширением TXT исключены из области, а файл MyFile.txt указан в списке файлов, включенных в область явно, то он также будет исключен из области из-за своего расширения .txt.
Настройка статического фильтра с помощью управляемого кода
Создайте объект FileSyncScopeFilter. Свойства исключения или включения задаются в конструкторе FileSyncScopeFilter. Например, можно указать "*.txt" в качестве значения параметра fileNameExcludes, и из области синхронизации будут исключены все файлы с расширением TXT.
Передайте фильтр конструктору FileSyncProvider. Если эта служба используется в сеансе синхронизации как поставщик источника, то в область синхронизации включаются только файлы, прошедшие через заданные фильтры.
Настройка статического фильтра с помощью неуправляемого кода
Создайте объект IFileSyncScopeFilter с помощью интерфейса IFileSyncProvider::CreateNewScopeFilter.
Задайте свойства исключения или включения в объекте фильтра. Например, укажите "*.txt" в качестве значения параметра IFileSyncScopeFilter::SetFilenameExcludes, и из области синхронизации будут исключены все файлы с расширением TXT.
Передайте фильтр интерфейсу IFileSyncProvider::Initialize. Если эта служба используется в сеансе синхронизации как поставщик источника, то в область синхронизации включаются только файлы, прошедшие через заданные фильтры.
Пропуск файлов
Файлы могут динамически пропускаться во время синхронизации с помощью обработки события, создаваемого службой синхронизации. Это событие возникает в момент применения изменений. Оно создается поставщиком назначения однократно для каждого изменения перед тем, как это изменение будет применено к реплике назначения. Когда обработчик события получает событие, он может указать, что событие не следует применять к реплике назначения.
Управляемый код Зарегистрируйте обработчик для события ApplyingChange. Чтобы пропустить изменение, задайте в обработчике события значение SkipChange для свойства true.
Неуправляемый код Для регистрации получения уведомлений о событиях передайте объект IFileSyncProviderCallback в интерфейс IFileSyncProvider::Initialize. Чтобы пропустить изменение, задайте в интерфейсе IFileSyncProviderCallback::OnApplyingChange значение TRUE для свойства pfSkipChange.