структура 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 |