Partager via


structure CF_SYNC_POLICIES (cfapi.h)

Définit les stratégies de synchronisation utilisées par une racine de synchronisation.

Syntaxe

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;

Membres

StructSize

Taille de la CF_SYNC_POLICIES structure.

Hydration

La stratégie d’hydratation permet à un fournisseur de synchronisation de contrôler la façon dont les fichiers d’espace réservé doivent être hydratés par la plateforme. Il se compose d’une stratégie principale et d’un ensemble de modificateurs de stratégie.

La stratégie principale a quatre valeurs possibles :

Stratégie Description
ALWAYS_FULL Lorsque ALWAYS_FULL est sélectionné, la plateforme échoue, avec HRESULT ERROR_CLOUD_FILE_INVALID_REQUEST, toute opération d’espace réservé qui pourrait entraîner un espace réservé non entièrement hydraté, ce qui inclut CfCreatePlaceholders, CfDehydratePlaceholder, CfUpdatePlaceholder avec l’option déshydrater et CfConvertPlaceholder avec l’option déshydrater .
FULL Quand FULL est sélectionné, la plateforme permet à un espace réservé d’être déshydraté. Lorsque la plateforme détecte l’accès à un espace réservé déshydraté, elle garantit que le contenu complet de l’espace réservé est disponible localement avant de terminer la demande d’E/S de l’utilisateur, même si la demande ne demande que 1 octet.
PROGRESSIVE Quand PROGRESSIVE est sélectionné, la plateforme permet à un espace réservé d’être déshydraté. Lorsque la plateforme détecte l’accès à un espace réservé déshydraté, elle termine la demande d’E/S de l’utilisateur dès qu’elle détermine que des données suffisantes sont reçues du fournisseur de synchronisation. Toutefois, la plateforme promet de continuer à demander le contenu restant dans l’espace réservé auprès du fournisseur de synchronisation en arrière-plan jusqu’à ce que le contenu complet de l’espace réservé soit disponible localement ou que le dernier handle utilisateur sur l’espace réservé soit fermé.

Notez que les fournisseurs de synchronisation qui optent pour peuvent PROGRESSIVE ne pas supposer que les rappels d’hydratation arrivent séquentiellement à partir du décalage 0. En d’autres termes, les fournisseurs de synchronisation avec PROGRESSIVE la stratégie sont censés gérer les recherches aléatoires sur l’espace réservé.
PARTIAL La PARTIAL stratégie est très similaire à PROGRESSIVE. La seule différence entre les deux est l’absence d’hydratation continue en arrière-plan avec la PARTIAL politique.

Trois modificateurs de stratégie sont actuellement pris en charge : VALIDATION_REQUIRED, STREAMING_ALLOWEDet AUTO_DEHYDRATION_ALLOWED. En général, les modificateurs peuvent être mélangés et mis en correspondance avec toutes les stratégies principales et autres modificateurs de stratégie tant que la combinaison n’est pas en conflit automatique.

Modificateur de stratégie Description
VALIDATION_REQUIRED Ce modificateur de stratégie offre deux garanties à un fournisseur de synchronisation. Tout d’abord, il garantit que les données retournées par le fournisseur de synchronisation sont toujours conservées sur le disque avant d’être retournées à l’application utilisateur. Deuxièmement, il permet au fournisseur de synchronisation de récupérer les mêmes données qu’il a retournées précédemment à la plateforme et de valider son intégrité. Ce n’est qu’une fois l’intégrité confirmée par le fournisseur de synchronisation que la plateforme termine la demande d’E/S utilisateur. Ce modificateur permet de prendre en charge l’intégrité des données de bout en bout au prix d’E/S de disque supplémentaires.
STREAMING_ALLOWED Ce modificateur de stratégie accorde à la plateforme l’autorisation de ne stocker aucune donnée retournée par un fournisseur de synchronisation sur des disques locaux. Ce modificateur de stratégie s’exclut mutuellement avec VALIDATION_REQUIRED. L’API échoue lorsque ERROR_INVALID_PARAMETER les deux indicateurs sont spécifiés.
AUTO_DEHYDRATION_ALLOWED Ce modificateur de stratégie accorde à la plateforme l’autorisation de déshydrater les espaces réservés de fichiers cloud synchronisés sans l’aide de fournisseurs de synchronisation. Sans cet indicateur, la plateforme n’est pas autorisée à appeler CfDehydratePlaceholder directement. Au lieu de cela, la seule façon prise en charge de déshydrater un espace réservé de fichier cloud consiste à effacer l’attribut épinglé du fichier et à définir l’attribut non épinglé du fichier. Ensuite, la déshydratation réelle est effectuée de manière asynchrone par le moteur de synchronisation après avoir reçu la notification de changement d’annuaire sur les deux attributs. Lorsque cet indicateur est spécifié, la plateforme est autorisée à appeler CfDehydratePlaceholder directement sur n’importe quel espace réservé de fichier cloud dans la synchronisation. Il est recommandé pour les fournisseurs de synchronisation de prendre en charge la déshydratation automatique.
ALLOW_FULL_RESTART_HYDRATION Ce modificateur de stratégie accorde à la plateforme l’autorisation d’hydrater entièrement un fichier de manière synchrone lorsqu’elle intercepte une tentative d’analyse du fichier par un filtre AV. Les fournisseurs de synchronisation qui souhaitent utiliser RestartHydration pour modifier le fileSize à partir d’un rappel FetchData doivent accepter la ALLOW_FULL_RESTART_HYDRATION stratégie pour éviter les blocages possibles avec les logiciels antivirus et anti-programme malveillant essayant d’analyser le fichier et le fournisseur essayant de modifier fileSize à l’aide de RestartHydration.

Note: Ce modificateur est pris en charge uniquement si le PlatformVersion.IntegrationNumber obtenu à partir de CfGetPlatformInfo est 0x500 ou supérieur.

Population

La stratégie de population permet à un fournisseur de synchronisation de contrôler la façon dont l’espace de noms d’espace réservé, à la fois les répertoires et les fichiers, doit être créé par la plateforme. Il existe actuellement trois stratégies principales sans modificateurs définis :

Stratégie Description
ALWAYS_FULL Quand ALWAYS_FULL est sélectionné, la plateforme suppose que l’espace de nom complet est toujours disponible localement. Il ne transfère jamais une demande d’énumération d’annuaire au fournisseur de synchronisation.
FULL Avec la FULL stratégie de population, lorsque la plateforme détecte l’accès sur un répertoire qui n’est pas entièrement rempli, elle demande au fournisseur de synchronisation de retourner toutes les entrées sous l’annuaire avant de terminer la demande de l’utilisateur.
PARTIAL Avec la PARTIAL stratégie de population, lorsque la plateforme détecte l’accès sur un répertoire non entièrement rempli, elle demande uniquement les entrées requises par l’application utilisateur auprès du fournisseur de synchronisation.

InSync

La InSync stratégie permet à un fournisseur de synchronisation de contrôler quand la plateforme doit effacer l’état de synchronisation sur un espace réservé. En plus d’effacer toujours l’insynchronisation pour toute modification de données, la plateforme peut actuellement effacer les modifications insynchronisées de toutes les combinaisons de trois attributs de fichier (ReadOnly, System et Hidden) et deux fois de fichier (CreateTime et LastWriteTime). Ces stratégies peuvent être appliquées aux fichiers et aux répertoires séparément.

HardLink

Par défaut, la plateforme n’autorise pas la création de liens durs sur un espace réservé. Toutefois, les fournisseurs de synchronisation capables de gérer les liens physiques peuvent demander à la plateforme d’activer la prise en charge via la ALLOWED stratégie. Avec cette stratégie, les applications peuvent créer autant de liens physiques que le système de fichiers prend en charge tant que les liens se trouvent sous la même racine de synchronisation ou sous aucune racine de synchronisation. La plateforme force l’hydratation d’un espace réservé lorsque le premier lien hors synchronisation-racine est introduit et rétablit un espace réservé au fichier normal lorsque son dernier lien racine de synchronisation est supprimé. La création de liens durs qui n’est pas compatible avec la stratégie échoue avec HRESULT ERROR_CLOUD_FILES_INCOMPATIBLE_HARDLINKS. Les opérations d’espace réservé qui ne sont pas compatibles avec la stratégie échouent également avec ERROR_CLOUD_FILES_INCOMPATIBLE_HARDLINKS.

PlaceholderManagement

Par défaut, seul un fournisseur de synchronisation peut effectuer des opérations de gestion des espaces réservés dans une racine de synchronisation. Les processus de fournisseur non de synchronisation peuvent effectuer des opérations de gestion des espaces réservés uniquement si la racine de synchronisation est inactive (c’est-à-dire, lorsqu’aucun fournisseur de synchronisation n’est connecté à la racine de synchronisation).) Lorsqu’elles sont activées, ces stratégies permettent aux processus du fournisseur non de synchronisation d’effectuer des opérations de gestion des espaces réservés respectives dans une racine de synchronisation active. CF_PLACEHOLDER_MANAGEMENT_POLICY_DEFAULT est la stratégie par défaut, qui autorise uniquement un fournisseur de synchronisation connecté à effectuer des opérations de gestion des espaces réservés. Les trois stratégies ci-dessous peuvent être spécifiées dans n’importe quelle combinaison :

Stratégie Description
CF_PLACEHOLDER_MANAGEMENT_POLICY_CREATE_UNRESTRICTED Lorsque cette stratégie est spécifiée lors de l’inscription, n’importe quel processus peut créer un espace réservé au sein d’une racine de synchronisation active en appelant CfCreatePlaceholders.
CF_PLACEHOLDER_MANAGEMENT_POLICY_CONVERT_UNRESTRICTED Lorsque cette stratégie est spécifiée lors de l’inscription, n’importe quel processus peut convertir un fichier ou un répertoire au sein d’une racine de synchronisation active en espace réservé en appelant CfConvertToPlaceholder.
CF_PLACEHOLDER_MANAGEMENT_POLICY_UPDATE_UNRESTRICTED Lorsque cette stratégie est spécifiée lors de l’inscription, n’importe quel processus peut mettre à jour un espace réservé au sein d’une racine de synchronisation active via l’API CfUpdatePlaceholder.

Notes

Ces indicateurs sont pris en charge uniquement si le PlatformVersion.IntegrationNumber obtenu à partir de CfGetPlatformInfo est 0x310 ou supérieur.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 10, version 1709 [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2016 (applications de bureau uniquement)
En-tête cfapi.h

Voir aussi

CfCreatePlaceholders

CfConvertToPlaceholder

CfGetPlatformInfo