estrutura CF_SYNC_POLICIES (cfapi.h)

Define as políticas de sincronização usadas por uma raiz de sincronização.

Sintaxe

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;

Membros

StructSize

Tamanho da estrutura CF_SYNC_POLICIES.

Hydration

A política de hidratação permite que um provedor de sincronização controle como os arquivos de espaço reservado devem ser hidratados pela plataforma. Ele consiste em uma política primária e um conjunto de modificadores de política.

A política primária tem quatro valores possíveis:

Política Descrição
ALWAYS_FULL Quando ALWAYS_FULL for selecionado, a plataforma falhará, com HRESULT ERROR_CLOUD_FILE_INVALID_REQUEST, qualquer operação de espaço reservado que possa resultar em um espaço reservado não totalmente hidratado, que inclui CfCreatePlaceholders, CfDehydratePlaceholder, CfUpdatePlaceholder com a opção de desidratação e CfConvertPlaceholder com a opção de desidratação .
FULL Quando FULL for selecionado, a plataforma permitirá que um espaço reservado seja desidratado. Quando a plataforma detectar o acesso a um espaço reservado desidratado, ela garantirá que o conteúdo completo do espaço reservado esteja disponível localmente antes de concluir a solicitação de E/S do usuário, mesmo que a solicitação esteja solicitando apenas 1 byte.
PROGRESSIVA Quando PROGRESSIVE for selecionado, a plataforma permitirá que um espaço reservado seja desidratado. Quando a plataforma detectar o acesso a um espaço reservado desidratado, ela concluirá a solicitação de E/S do usuário assim que determinar que dados suficientes são recebidos do provedor de sincronização. No entanto, a plataforma promete continuar solicitando o conteúdo restante no espaço reservado do provedor de sincronização em segundo plano até que o conteúdo completo do espaço reservado esteja disponível localmente ou o último identificador de usuário no espaço reservado seja fechado.

Observe que os provedores de sincronização que optam por PROGRESSIVE não assumir que os retornos de chamada de hidratação chegam sequencialmente do deslocamento 0. Em outras palavras, espera-se que os provedores de sincronização com a política lidem com PROGRESSIVE buscas aleatórias no espaço reservado.
PARTIAL A PARTIAL política é muito semelhante a PROGRESSIVE. A única diferença entre os dois é a falta de hidratação contínua em segundo plano com a PARTIAL política.

Atualmente, há suporte para três modificadores de política: VALIDATION_REQUIRED, STREAMING_ALLOWEDe AUTO_DEHYDRATION_ALLOWED. Em geral, os modificadores podem ser mistos e combinados com quaisquer políticas primárias e outros modificadores de política, desde que a combinação não seja autoconfifiquente.

Modificador de política Descrição
VALIDATION_REQUIRED Esse modificador de política oferece duas garantias a um provedor de sincronização. Primeiro, ele garante que os dados retornados pelo provedor de sincronização sempre sejam persistidos no disco antes de serem retornados ao aplicativo do usuário. Em segundo lugar, ele permite que o provedor de sincronização recupere os mesmos dados retornados anteriormente para a plataforma e valide sua integridade. Somente após uma confirmação bem-sucedida da integridade pelo provedor de sincronização, a plataforma concluirá a solicitação de E/S do usuário. Esse modificador ajuda a dar suporte à integridade de dados de ponta a ponta ao custo de E/S de disco extra.
STREAMING_ALLOWED Esse modificador de política concede à plataforma a permissão para não armazenar dados retornados por um provedor de sincronização em discos locais. Esse modificador de política é mutuamente exclusivo com VALIDATION_REQUIRED. A API falha com ERROR_INVALID_PARAMETER quando ambos os sinalizadores são especificados.
AUTO_DEHYDRATION_ALLOWED Esse modificador de política concede à plataforma a permissão para desidratar espaços reservados de arquivo na nuvem em sincronia sem a ajuda de provedores de sincronização. Sem esse sinalizador, a plataforma não tem permissão para chamar CfDehydratePlaceholder diretamente. Em vez disso, a única maneira com suporte de desidratar um espaço reservado de arquivo de nuvem é limpar o atributo fixado do arquivo e definir o atributo desafixado do arquivo. Em seguida, a desidratação real será executada de forma assíncrona pelo mecanismo de sincronização depois de receber a notificação de alteração de diretório nos dois atributos. Quando esse sinalizador for especificado, a plataforma terá permissão para invocar CfDehydratePlaceholder diretamente em qualquer espaço reservado de arquivo na nuvem em sincronia. É recomendável que os provedores de sincronização ofereçam suporte à desidratação automática.
ALLOW_FULL_RESTART_HYDRATION Esse modificador de política concede à plataforma permissão para hidratar totalmente um arquivo de forma síncrona quando intercepta uma tentativa de um Filtro AV de verificar o arquivo. Os provedores de sincronização que desejam usar RestartHydration para alterar o fileSize de um retorno de chamada FetchData devem aceitar a ALLOW_FULL_RESTART_HYDRATION política para evitar possíveis deadlocks com software antivírus e antimalware tentando verificar o arquivo e o provedor tentando alterar fileSize usando RestartHydration.

Nota: Esse modificador só terá suporte se o PlatformVersion.IntegrationNumber obtido de CfGetPlatformInfo for 0x500 ou superior.

Population

A política de população permite que um provedor de sincronização controle como o namespace de espaço reservado, diretórios e arquivos, deve ser criado pela plataforma. Atualmente, há três políticas primárias sem modificadores definidos:

Política Descrição
ALWAYS_FULL Quando ALWAYS_FULL é selecionado, a plataforma pressupõe que o espaço de nome completo esteja sempre disponível localmente. Ele nunca encaminhará nenhuma solicitação de enumeração de diretório para o provedor de sincronização.
FULL Com a FULL política de população, quando a plataforma detectar o acesso em um diretório não totalmente preenchido, ela solicitará que o provedor de sincronização retorne todas as entradas no diretório antes de concluir a solicitação do usuário.
PARTIAL Com a PARTIAL política de população, quando a plataforma detectar o acesso em um diretório não totalmente preenchido, ela solicitará apenas as entradas exigidas pelo aplicativo de usuário do provedor de sincronização.

InSync

A InSync política permite que um provedor de sincronização controle quando a plataforma deve limpar o estado de sincronização em um espaço reservado. Além de sempre limpar a sincronização em qualquer modificação de dados, a plataforma pode atualmente limpar a sincronização em alterações de qualquer combinação de três atributos de arquivo (ReadOnly, System e Hidden) e duas vezes de arquivo (CreateTime e LastWriteTime). Essas políticas podem ser aplicadas a arquivos e diretórios separadamente.

HardLink

Por padrão, a plataforma não permite que links rígidos sejam criados em nenhum espaço reservado. No entanto, provedores de sincronização capazes de lidar com links físicos podem instruir a plataforma a habilitar o suporte por meio da ALLOWED política. Com essa política, os aplicativos podem criar tantos links rígidos quanto o sistema de arquivos dá suporte, desde que os links estejam na mesma raiz de sincronização ou sem raiz de sincronização. A plataforma forçará um espaço reservado a ser hidratado quando o primeiro link fora de sincronização-raiz for introduzido e reverter um espaço reservado para o arquivo normal quando seu último link na sincronização-raiz for removido. A criação de hardlink que não é compatível com a política falhará com HRESULT ERROR_CLOUD_FILES_INCOMPATIBLE_HARDLINKS. As operações de espaço reservado que não são compatíveis com a política também falharão com ERROR_CLOUD_FILES_INCOMPATIBLE_HARDLINKS.

PlaceholderManagement

Por padrão, somente um provedor de sincronização pode executar operações de gerenciamento de espaço reservado em uma raiz de sincronização. Os processos do provedor de não sincronização só poderão executar operações de gerenciamento de espaço reservado se a raiz de sincronização estiver inativa (ou seja, quando nenhum provedor de sincronização estiver conectado à raiz de sincronização).) Essas políticas, quando habilitadas, permitem que processos de provedor não sincronizados executem as respectivas operações de gerenciamento de espaço reservado em uma raiz de sincronização ativa. CF_PLACEHOLDER_MANAGEMENT_POLICY_DEFAULT é a política padrão, permitindo que apenas um provedor de sincronização conectado execute operações de gerenciamento de espaço reservado. As três políticas abaixo podem ser especificadas em qualquer combinação:

Política Descrição
CF_PLACEHOLDER_MANAGEMENT_POLICY_CREATE_UNRESTRICTED Quando essa política é especificada durante o registro, qualquer processo pode criar um espaço reservado em uma raiz de sincronização ativa chamando CfCreatePlaceholders.
CF_PLACEHOLDER_MANAGEMENT_POLICY_CONVERT_UNRESTRICTED Quando essa política é especificada durante o registro, qualquer processo pode converter um arquivo ou um diretório dentro de uma raiz de sincronização ativa em um espaço reservado chamando CfConvertToPlaceholder.
CF_PLACEHOLDER_MANAGEMENT_POLICY_UPDATE_UNRESTRICTED Quando essa política é especificada durante o registro, qualquer processo pode atualizar um espaço reservado dentro de uma raiz de sincronização ativa por meio da API CfUpdatePlaceholder.

Observação

Esses sinalizadores só têm suporte se o PlatformVersion.IntegrationNumber obtido de CfGetPlatformInfo for 0x310 ou superior.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 10, versão 1709 [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2016 [somente aplicativos da área de trabalho]
Cabeçalho cfapi.h

Confira também

CfCreatePlaceholders

CfConvertToPlaceholder

CfGetPlatformInfo