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_ALLOWED
et 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 |