Поделиться через


структура CF_SYNC_POLICIES (cfapi.h)

Определяет политики синхронизации, используемые корнем синхронизации.

Синтаксис

typedef struct CF_SYNC_POLICIES {
  ULONG                            StructSize;
  CF_HYDRATION_POLICY              Hydration;
  CF_POPULATION_POLICY             Population;
  CF_INSYNC_POLICY                 InSync;
  CF_HARDLINK_POLICY               HardLink;
  CF_PLACEHOLDER_MANAGEMENT_POLICY PlaceholderManagement;
} CF_SYNC_POLICIES;

Члены

StructSize

Размер CF_SYNC_POLICIES структуры.

Hydration

Политика гидратации позволяет поставщику синхронизации управлять тем, как файлы заполнителей должны быть гидратированы платформой. Он состоит из основной политики и набора модификаторов политики.

Основная политика имеет четыре возможных значения:

Политика Описание
ALWAYS_FULL Если ALWAYS_FULL выбран параметр , платформа завершится сбоем с HRESULT ERROR_CLOUD_FILE_INVALID_REQUESTлюбой операцией заполнителя, которая может привести к не полностью гидратированным заполнителям, включая CfCreatePlaceholders, CfDehydratePlaceholder, CfUpdatePlaceholder с параметром dehydrate и CfConvertPlaceholder с параметром dehydrate .
FULL Если FULL выбран параметр , платформа позволит обезвоживать заполнитель. Когда платформа обнаруживает доступ к обезвоженным заполнителям, она гарантирует, что полное содержимое заполнителя будет доступно локально перед выполнением пользовательского запроса ввода-вывода, даже если запрос запрашивает только 1 байт.
ПРОГРЕССИВНЫЙ Если PROGRESSIVE выбран параметр , платформа позволит обезвоживать заполнитель. Когда платформа обнаруживает доступ к обезвоженным заполнителям, она выполнит запрос пользовательского ввода-вывода, как только определит, что от поставщика синхронизации получено достаточное количество данных. Однако платформа обещает продолжать запрашивать оставшееся содержимое заполнителя у поставщика синхронизации в фоновом режиме, пока полное содержимое заполнителя не будет доступно локально или пока последний пользовательский дескриптор заполнителя не будет закрыт.

Обратите внимание, что поставщики синхронизации, которые согласились на PROGRESSIVE использование, не могут предполагать, что обратные вызовы гидратации поступают последовательно со смещения 0. Иными словами, поставщики синхронизации с PROGRESSIVE политикой должны обрабатывать случайные поиски заполнителя.
PARTIAL Политика PARTIAL очень похожа на PROGRESSIVE. Единственное различие между ними заключается в отсутствии непрерывной гидратации в фоновом режиме с политикой PARTIAL .

В настоящее время поддерживаются три модификатора политики: VALIDATION_REQUIRED, STREAMING_ALLOWEDи AUTO_DEHYDRATION_ALLOWED. Как правило, модификаторы можно смешивать и сопоставлять с любыми основными политиками и другими модификаторами политики, если сочетание не является самосоединяющимся.

Модификатор политики Описание
VALIDATION_REQUIRED Этот модификатор политики предоставляет поставщику синхронизации две гарантии. Во-первых, это гарантирует, что данные, возвращаемые поставщиком синхронизации, всегда сохраняются на диске перед их возвратом в пользовательское приложение. Во-вторых, это позволяет поставщику синхронизации получить те же данные, которые он вернул ранее на платформу, и проверить их целостность. Только после успешного подтверждения целостности поставщиком синхронизации платформа выполнит запрос пользовательского ввода-вывода. Этот модификатор помогает поддерживать сквозную целостность данных за счет дополнительных операций ввода-вывода на диск.
STREAMING_ALLOWED Этот модификатор политики предоставляет платформе разрешение не хранить данные, возвращаемые поставщиком синхронизации, на локальных дисках. Этот модификатор политики является взаимоисключающим с VALIDATION_REQUIRED. Api завершается сбоем при ERROR_INVALID_PARAMETER указании обоих флагов.
AUTO_DEHYDRATION_ALLOWED Этот модификатор политики предоставляет платформе разрешение на обезвоживать заполнители файлов в синхронизированном облаке без помощи поставщиков синхронизации. Без этого флага платформе не разрешено вызывать CfDehydratePlaceholder напрямую. Вместо этого единственным поддерживаемым способом обезвоживать заполнитель облачного файла является очистка закрепленного атрибута файла и установка незакрепленного атрибута файла. Затем фактическое обезвоживание будет выполняться асинхронно подсистемой синхронизации после получения уведомления об изменении каталога для двух атрибутов. Если этот флаг указан, платформе будет разрешено вызывать CfDehydratePlaceholder непосредственно в любом заполнителе синхронизированного облачного файла. Рекомендуется, чтобы поставщики синхронизации поддерживали автоматическое обезвоживание.
ALLOW_FULL_RESTART_HYDRATION Этот модификатор политики предоставляет платформе разрешение на синхронную полную очистку файла, когда он перехватывает попытку фильтра av для сканирования файла. Поставщики синхронизации, которые хотят использовать RestartHydration для изменения fileSize с обратного вызова FetchData , должны согласиться на политику, ALLOW_FULL_RESTART_HYDRATION чтобы избежать возможных взаимоблокировок с антивирусным и антивирусным программным обеспечением, пытающимся сканировать файл, и поставщик пытается изменить fileSize его с помощью RestartHydration.

Примечание: Этот модификатор поддерживается только в том случае, если значение , полученное PlatformVersion.IntegrationNumber из CfGetPlatformInfo , имеет значение 0x500 или выше.

Population

Политика заполнения позволяет поставщику синхронизации управлять тем, как пространство имен заполнителей, как каталоги, так и файлы, должно создаваться платформой. В настоящее время существует три основные политики без определения модификаторов:

Политика Описание
ALWAYS_FULL Если ALWAYS_FULL выбран параметр , платформа предполагает, что полное пространство имен всегда доступно локально. Он никогда не перенаправит запрос на перечисление каталога поставщику синхронизации.
FULL При использовании FULL политики заполнения, когда платформа обнаруживает доступ к не полностью заполненным каталогам, она запрашивает у поставщика синхронизации возврат всех записей в каталоге перед выполнением запроса пользователя.
PARTIAL При использовании PARTIAL политики заполнения, когда платформа обнаруживает доступ к не полностью заполненным каталогам, она запрашивает только записи, необходимые пользовательскому приложению, у поставщика синхронизации.

InSync

Политика InSync позволяет поставщику синхронизации контролировать, когда платформа должна очищать синхронизированное состояние заполнителя. Помимо постоянной очистки синхронизированных при любом изменении данных, платформа в настоящее время может очищать синхронизированные изменения любых сочетаний трех атрибутов файла (ReadOnly, System и Hidden) и двух файлов (CreateTime и LastWriteTime). Эти политики можно применять к файлам и каталогам отдельно.

HardLink

По умолчанию платформа не позволяет создавать жесткие ссылки для любого заполнителя. Однако поставщики синхронизации, способные обрабатывать жесткие связи, могут указать платформе включить поддержку с помощью ALLOWED политики. С помощью этой политики приложения могут создавать столько жестких ссылок, сколько поддерживает файловая система, при условии, что ссылки находятся в одном корневом каталоге синхронизации или не находятся в корне синхронизации. Платформа принудительно удаляет заполнитель при появлении первой корневой ссылки вне синхронизации и отменить изменения заполнитель в обычный файл при удалении последней корневой ссылки в синхронизации. Создание жесткой ссылки, несовместимой с политикой, завершится ошибкой HRESULT ERROR_CLOUD_FILES_INCOMPATIBLE_HARDLINKS. Операции заполнителей, несовместимые с политикой, также завершатся ошибкой с ERROR_CLOUD_FILES_INCOMPATIBLE_HARDLINKS.

PlaceholderManagement

По умолчанию только поставщик синхронизации может выполнять операции управления заполнителями в корневом каталоге синхронизации. Процессы поставщика без синхронизации могут выполнять операции управления заполнителями, только если корень синхронизации неактивен (т. е. если к корню синхронизации не подключены поставщики синхронизации). Эти политики, если они включены, позволяют процессам поставщика, не выполняющего синхронизацию, выполнять соответствующие операции управления заполнителями в активном корневом каталоге синхронизации. CF_PLACEHOLDER_MANAGEMENT_POLICY_DEFAULT — это политика по умолчанию, позволяющая выполнять любые операции управления заполнителями только подключенным поставщиком синхронизации. Три приведенные ниже политики можно указать в любом сочетании:

Политика Описание
CF_PLACEHOLDER_MANAGEMENT_POLICY_CREATE_UNRESTRICTED Если эта политика указана во время регистрации, любой процесс может создать заполнитель в активном корневом каталоге синхронизации, вызвав CfCreatePlaceholders.
CF_PLACEHOLDER_MANAGEMENT_POLICY_CONVERT_UNRESTRICTED Если эта политика указана во время регистрации, любой процесс может преобразовать файл или каталог в активном корневом каталоге синхронизации в заполнитель, вызвав CfConvertToPlaceholder.
CF_PLACEHOLDER_MANAGEMENT_POLICY_UPDATE_UNRESTRICTED Если эта политика указана во время регистрации, любой процесс может обновить заполнитель в активном корневом каталоге синхронизации с помощью API CfUpdatePlaceholder.

Примечание

Эти флаги поддерживаются только в том случае, если значение , полученное PlatformVersion.IntegrationNumber из CfGetPlatformInfo , имеет значение 0x310 или выше.

Требования

Требование Значение
Минимальная версия клиента Windows 10 версии 1709 [только классические приложения]
Минимальная версия сервера Windows Server 2016 [только классические приложения]
Верхняя часть cfapi.h

См. также раздел

CfCreatePlaceholders

CfConvertToPlaceholder

CfGetPlatformInfo