Condividi tramite


CF_SYNC_POLICIES struttura (cfapi.h)

Definisce i criteri di sincronizzazione usati da una radice di sincronizzazione.

Sintassi

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;

Members

StructSize

Dimensione della CF_SYNC_POLICIES struttura.

Hydration

Il criterio di idratazione consente a un provider di sincronizzazione di controllare il modo in cui i file segnaposto devono essere idratati dalla piattaforma. È costituito da criteri primari e da un set di modificatori di criteri.

I criteri primari hanno quattro valori possibili:

Criteri Descrizione
ALWAYS_FULL Quando ALWAYS_FULL viene selezionata, la piattaforma avrà esito negativo, con HRESULT ERROR_CLOUD_FILE_INVALID_REQUEST, qualsiasi operazione segnaposto che potrebbe comportare un segnaposto non completamente idratato, che include CfCreatePlaceholder, CfDehydratePlaceholder, CfUpdatePlaceholder con l'opzione di disidratazione e CfConvertPlaceholder con l'opzione disidratazione.
FULL Quando FULL viene selezionata, la piattaforma consente a un segnaposto di essere disidratato. Quando la piattaforma rileva l'accesso a un segnaposto disidratato, garantisce che il contenuto completo del segnaposto sia disponibile in locale prima di completare la richiesta di I/O dell'utente, anche se la richiesta richiede solo 1 byte.
PROGRESSIVA Quando PROGRESSIVE viene selezionata, la piattaforma consente a un segnaposto di essere disidratato. Quando la piattaforma rileva l'accesso a un segnaposto disidratato, verrà completata la richiesta di I/O utente non appena determina che i dati sufficienti vengono ricevuti dal provider di sincronizzazione. Tuttavia, la piattaforma promette di continuare a richiedere il contenuto rimanente nel segnaposto dal provider di sincronizzazione in background fino a quando il contenuto completo del segnaposto è disponibile localmente o l'ultimo handle utente sul segnaposto viene chiuso.

Si noti che i provider di sincronizzazione che optano per PROGRESSIVE non possono presupporre che i callback di idratazione arrivino in sequenza dall'offset 0. In altre parole, i provider di sincronizzazione con PROGRESSIVE i criteri devono gestire ricerche casuali sul segnaposto.
PARTIAL Il PARTIAL criterio è molto simile a PROGRESSIVE. L'unica differenza tra i due è la mancanza di idratazione continua in background con la PARTIAL politica.

Sono attualmente supportati tre modificatori di criteri: VALIDATION_REQUIRED, STREAMING_ALLOWEDe AUTO_DEHYDRATION_ALLOWED. In generale, i modificatori possono essere misti e confrontati con qualsiasi criterio primario e altri modificatori di criteri, purché la combinazione non sia in conflitto.

Modificatore dei criteri Descrizione
VALIDATION_REQUIRED Questo modificatore di criteri offre due garanzie a un provider di sincronizzazione. In primo luogo, garantisce che i dati restituiti dal provider di sincronizzazione vengano sempre mantenuti nel disco prima di essere restituiti all'applicazione utente. In secondo luogo, consente al provider di sincronizzazione di recuperare gli stessi dati restituiti in precedenza alla piattaforma e convalidarne l'integrità. Solo dopo aver completato la conferma dell'integrità dal provider di sincronizzazione, la piattaforma completa la richiesta di I/O dell'utente. Questo modificatore consente di supportare l'integrità dei dati end-to-end a costo di operazioni di I/O su disco aggiuntive.
STREAMING_ALLOWED Questo modificatore di criteri concede alla piattaforma l'autorizzazione per non archiviare dati restituiti da un provider di sincronizzazione nei dischi locali. Questo modificatore di criteri è a vicenda esclusivo con VALIDATION_REQUIRED. L'API non riesce quando ERROR_INVALID_PARAMETER vengono specificati entrambi i flag.
AUTO_DEHYDRATION_ALLOWED Questo modificatore di criteri concede alla piattaforma l'autorizzazione per la disidratazione dei segnaposto dei file cloud sincronizzati senza l'aiuto dei provider di sincronizzazione. Senza questo flag, la piattaforma non può chiamare direttamente CfDehydratePlaceholder . L'unico modo supportato per disidare un segnaposto file cloud consiste invece nel cancellare l'attributo aggiunto del file e impostare l'attributo non bloccato del file. La disidratazione effettiva verrà quindi eseguita in modo asincrono dal motore di sincronizzazione dopo aver ricevuto la notifica di modifica della directory sui due attributi. Quando viene specificato questo flag, la piattaforma sarà consentita per richiamare CfDehydratePlaceholder direttamente in qualsiasi segnaposto file cloud di sincronizzazione. È consigliabile che i provider di sincronizzazione supportino la disidratazione automatica.
ALLOW_FULL_RESTART_HYDRATION Questo modificatore di criteri concede l'autorizzazione della piattaforma per idratare completamente un file in modo sincrono quando intercetta un tentativo da un filtro AV per analizzare il file. I provider di sincronizzazione che desiderano usare RestartHydration per modificare l'oggetto fileSize da un callback FetchData devono acconsentire esplicitamente al criterio per evitare possibili deadlock con software anti-virus e antimalware che tentano di analizzare il ALLOW_FULL_RESTART_HYDRATION file e il provider che tenta di modificare fileSize usando RestartHydration.

Nota: Questo modificatore è supportato solo se l'oggetto PlatformVersion.IntegrationNumber ottenuto da CfGetPlatformInfo è 0x500 o superiore.

Population

I criteri di popolamento consentono a un provider di sincronizzazione di controllare il modo in cui lo spazio dei nomi segnaposto, sia le directory che i file, devono essere creati dalla piattaforma. Attualmente sono presenti tre criteri primari senza modificatori definiti:

Criteri Descrizione
ALWAYS_FULL Quando ALWAYS_FULL viene selezionata, la piattaforma presuppone che lo spazio nome completo sia sempre disponibile in locale. Non inoltra mai alcuna richiesta di enumerazione directory al provider di sincronizzazione.
FULL Con i FULL criteri di popolazione, quando la piattaforma rileva l'accesso in una directory non completamente popolata, richiederà al provider di sincronizzazione di restituire tutte le voci nella directory prima di completare la richiesta utente.
PARTIAL Con i PARTIAL criteri di popolazione, quando la piattaforma rileva l'accesso in una directory non completamente popolata, richiederà solo le voci richieste dall'applicazione utente dal provider di sincronizzazione.

InSync

Il InSync criterio consente a un provider di sincronizzazione di controllare quando la piattaforma deve cancellare lo stato di sincronizzazione in un segnaposto. Oltre a cancellare sempre la sincronizzazione in qualsiasi modifica dei dati, la piattaforma può attualmente cancellare le modifiche delle combinazioni di tre attributi di file (ReadOnly, System e Hidden) e due volte (CreateTime e LastWriteTime). Questi criteri possono essere applicati separatamente ai file e alle directory.

HardLink

Per impostazione predefinita, la piattaforma non consente la creazione di collegamenti rigidi su qualsiasi segnaposto. Tuttavia, i provider di sincronizzazione in grado di gestire i collegamenti rigidi possono indicare alla piattaforma di abilitare il supporto tramite i ALLOWED criteri. Con questo criterio, le applicazioni possono creare tutti i collegamenti rigidi supportati dal file system, purché i collegamenti si trovino nella stessa radice di sincronizzazione o nella stessa radice di sincronizzazione. La piattaforma forza l'idratazione di un segnaposto quando viene introdotto il primo collegamento out-of-sync-root e ripristina un segnaposto al normale file quando viene rimosso l'ultimo collegamento radice di sincronizzazione. La creazione di hardlink non compatibile con il criterio avrà esito negativo con HRESULT ERROR_CLOUD_FILES_INCOMPATIBLE_HARDLINKS. Le operazioni segnaposto non compatibili con i criteri avranno esito negativo anche con ERROR_CLOUD_FILES_INCOMPATIBLE_HARDLINKS.

PlaceholderManagement

Per impostazione predefinita, solo un provider di sincronizzazione può eseguire operazioni di gestione segnaposto in una radice di sincronizzazione. I processi del provider di sincronizzazione possono eseguire operazioni di gestione segnaposto solo se la radice di sincronizzazione è inattiva (ad esempio, quando non sono connessi provider di sincronizzazione alla radice di sincronizzazione). Questi criteri, se abilitati, consentono ai processi del provider di sincronizzazione di eseguire le rispettive operazioni di gestione segnaposto in una radice di sincronizzazione attiva. CF_PLACEHOLDER_MANAGEMENT_POLICY_DEFAULT è il criterio predefinito, consentendo solo a un provider di sincronizzazione connesso di eseguire qualsiasi operazione di gestione segnaposto. I tre criteri seguenti possono essere specificati in qualsiasi combinazione:

Criteri Descrizione
CF_PLACEHOLDER_MANAGEMENT_POLICY_CREATE_UNRESTRICTED Quando questo criterio viene specificato durante la registrazione, qualsiasi processo può creare un segnaposto all'interno di una radice di sincronizzazione attiva chiamando CfCreatePlaceholder.
CF_PLACEHOLDER_MANAGEMENT_POLICY_CONVERT_UNRESTRICTED Quando questo criterio viene specificato durante la registrazione, qualsiasi processo può convertire un file o una directory all'interno di una radice di sincronizzazione attiva in un segnaposto chiamando CfConvertToPlaceholder.
CF_PLACEHOLDER_MANAGEMENT_POLICY_UPDATE_UNRESTRICTED Quando questo criterio viene specificato durante la registrazione, qualsiasi processo può aggiornare un segnaposto all'interno di una radice di sincronizzazione attiva tramite l'API CfUpdatePlaceholder.

Nota

Questi flag sono supportati solo se l'oggetto PlatformVersion.IntegrationNumber ottenuto da CfGetPlatformInfo è 0x310 o superiore.

Requisiti

Requisito Valore
Client minimo supportato Windows 10 versione 1709 [solo app desktop]
Server minimo supportato Windows Server 2016 [solo app desktop]
Intestazione cfapi.h

Vedi anche

CfCreatePlaceholder

CfConvertToPlaceholder

CfGetPlatformInfo