Share via


CF_SYNC_POLICIES Struktur (cfapi.h)

Definiert die Synchronisierungsrichtlinien, die von einem Synchronisierungsstamm verwendet werden.

Syntax

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;

Member

StructSize

Die Größe der CF_SYNC_POLICIES Struktur.

Hydration

Mit der Hydratationsrichtlinie kann ein Synchronisierungsanbieter steuern, wie Platzhalterdateien von der Plattform hydratisiert werden sollen. Es besteht aus einer primären Richtlinie und einer Reihe von Richtlinienmodifizierern.

Die primäre Richtlinie verfügt über vier mögliche Werte:

Richtlinie BESCHREIBUNG
ALWAYS_FULL Wenn ALWAYS_FULL ausgewählt ist, schlägt die Plattform mit HRESULT ERROR_CLOUD_FILE_INVALID_REQUESTeinen Beliebigen Platzhaltervorgang fehl, der zu einem nicht vollständig hydrierten Platzhalter führen könnte, der CfCreatePlaceholders, CfDehydratePlaceholder, CfUpdatePlaceholder mit der Dehydrate-Option und CfConvertPlaceholder mit der Dehydrate-Option umfasst.
FULL Wenn FULL die Plattform ausgewählt ist, kann ein Platzhalter dehydriert werden. Wenn die Plattform den Zugriff auf einen dehydrierten Platzhalter erkennt, stellt sie sicher, dass der vollständige Inhalt des Platzhalters lokal verfügbar ist, bevor die Benutzer-E/A-Anforderung abgeschlossen wird, auch wenn die Anforderung nur 1 Byte verlangt.
PROGRESSIVE Wenn PROGRESSIVE die Plattform ausgewählt ist, kann ein Platzhalter dehydriert werden. Wenn die Plattform den Zugriff auf einen dehydrierten Platzhalter erkennt, führt sie die Benutzer-E/A-Anforderung aus, sobald sie feststellt, dass genügend Daten vom Synchronisierungsanbieter empfangen werden. Die Plattform verspricht jedoch, den verbleibenden Inhalt im Platzhalter weiterhin vom Synchronisierungsanbieter im Hintergrund anzufordern, bis entweder der vollständige Inhalt des Platzhalters lokal verfügbar ist oder der letzte Benutzerhandle für den Platzhalter geschlossen ist.

Beachten Sie, dass Synchronisierungsanbieter, die sich für PROGRESSIVE anmelden, möglicherweise nicht davon ausgehen, dass Hydrationsrückrufe sequenziell von Offset 0 eintreffen. Anders ausgedrückt: Von Synchronisierungsanbietern mit PROGRESSIVE Richtlinie wird erwartet, dass sie zufällige Suchvorgänge auf dem Platzhalter verarbeiten.
PARTIAL Die PARTIAL Richtlinie ist sehr ähnlich wie PROGRESSIVE. Der einzige Unterschied zwischen den beiden besteht in der fehlenden kontinuierlichen Flüssigkeitszufuhr im Hintergrund mit der PARTIAL Richtlinie.

Derzeit werden drei Richtlinienmodifizierer unterstützt: VALIDATION_REQUIRED, STREAMING_ALLOWEDund AUTO_DEHYDRATION_ALLOWED. Im Allgemeinen können Modifizierer gemischt und mit allen primären Richtlinien und anderen Richtlinienmodifizierern abgeglichen werden, solange die Kombination nicht selbst in Konflikt steht.

Richtlinienmodifizierer BESCHREIBUNG
VALIDATION_REQUIRED Dieser Richtlinienmodifizierer bietet zwei Garantien für einen Synchronisierungsanbieter. Erstens wird sichergestellt, dass die vom Synchronisierungsanbieter zurückgegebenen Daten immer auf dem Datenträger gespeichert werden, bevor sie an die Benutzeranwendung zurückgegeben werden. Zweitens ermöglicht es dem Synchronisierungsanbieter, dieselben Daten abzurufen, die er zuvor an die Plattform zurückgegeben hat, und ihre Integrität zu überprüfen. Erst nach erfolgreicher Bestätigung der Integrität durch den Synchronisierungsanbieter führt die Plattform die Benutzer-E/A-Anforderung aus. Dieser Modifizierer unterstützt die End-to-End-Datenintegrität auf Kosten zusätzlicher Datenträger-IOs.
STREAMING_ALLOWED Dieser Richtlinienmodifizierer gewährt der Plattform die Berechtigung, keine von einem Synchronisierungsanbieter zurückgegebenen Daten auf lokalen Datenträgern zu speichern. Dieser Richtlinienmodifizierer schließt sich gegenseitig mit VALIDATION_REQUIREDaus. Die API schlägt mit ERROR_INVALID_PARAMETER fehl, wenn beide Flags angegeben werden.
AUTO_DEHYDRATION_ALLOWED Dieser Richtlinienmodifizierer gewährt der Plattform die Berechtigung, Platzhalter für in der Synchronisierung von Clouddateien ohne Hilfe von Synchronisierungsanbietern zu dehydrieren. Ohne dieses Flag darf die Plattform CfDehydratePlaceholder nicht direkt aufrufen. Stattdessen besteht die einzige unterstützte Möglichkeit zum Dehydrieren eines Clouddateiplatzhalters darin, das angeheftete Attribut der Datei zu löschen und das nicht angeheftete Attribut der Datei festzulegen. Dann wird die tatsächliche Dehydrierung von der Synchronisierungs-Engine asynchron ausgeführt, nachdem sie die Verzeichnisänderungsbenachrichtigung für die beiden Attribute erhalten hat. Wenn dieses Flag angegeben wird, darf die Plattform CfDehydratePlaceholder direkt auf einem beliebigen Platzhalter in der Synchronisierung der Cloud aufrufen. Es wird empfohlen, dass Synchronisierungsanbieter die automatische Dehydrierung unterstützen.
ALLOW_FULL_RESTART_HYDRATION Dieser Richtlinienmodifizierer gewährt der Plattform die Berechtigung, eine Datei synchron vollständig zu hydratisieren, wenn sie einen Versuch eines AV-Filters abfängt, die Datei zu überprüfen. Synchronisierungsanbieter, die RestartHydration verwenden möchten, um den fileSize von einem FetchData-Rückruf zu ändern, müssen sich für die ALLOW_FULL_RESTART_HYDRATION Richtlinie anmelden, um mögliche Deadlocks mit Antiviren- und Anti-Malware-Software zu vermeiden, die versucht, die Datei zu überprüfen, und den Anbieter, der versucht, mit RestartHydration zu ändernfileSize.

Hinweis: Dieser Modifizierer wird nur unterstützt, wenn der PlatformVersion.IntegrationNumber von CfGetPlatformInfo abgerufene oder höher ist 0x500 .

Population

Die Auffüllungsrichtlinie ermöglicht es einem Synchronisierungsanbieter, zu steuern, wie Platzhalternamespaces, sowohl Verzeichnisse als auch Dateien, von der Plattform erstellt werden sollen. Derzeit gibt es drei primäre Richtlinien, für die keine Modifizierer definiert sind:

Richtlinie BESCHREIBUNG
ALWAYS_FULL Wenn ALWAYS_FULL ausgewählt ist, geht die Plattform davon aus, dass der vollständige Namensraum immer lokal verfügbar ist. Es leitet niemals eine Verzeichnisaufzählungsanforderung an den Synchronisierungsanbieter weiter.
FULL Wenn die Plattform bei der FULL Auffüllungsrichtlinie den Zugriff auf ein nicht vollständig ausgefülltes Verzeichnis erkennt, fordert sie den Synchronisierungsanbieter auf, alle Einträge unter dem Verzeichnis zurückzugeben, bevor die Benutzeranforderung abgeschlossen wird.
PARTIAL Wenn die Plattform den Zugriff auf ein nicht vollständig ausgefülltes Verzeichnis erkennt, fordert sie bei der PARTIAL Auffüllungsrichtlinie nur die von der Benutzeranwendung erforderlichen Einträge vom Synchronisierungsanbieter an.

InSync

Die InSync Richtlinie ermöglicht es einem Synchronisierungsanbieter zu steuern, wann die Plattform den Synchronisierungsstatus auf einem Platzhalter löschen soll. Zusätzlich zur immer erfolgten Synchronisierung bei jeder Datenänderung kann die Plattform derzeit änderungen einer beliebigen Kombination aus drei Dateiattributen (ReadOnly, System und Ausgeblendet) und zwei Dateizeiten (CreateTime und LastWriteTime) synchron löschen. Diese Richtlinien können separat auf Dateien und Verzeichnisse angewendet werden.

HardLink

Standardmäßig lässt die Plattform das Erstellen von Hardlinks auf keinem Platzhalter zu. Synchronisierungsanbieter, die hardlinks verarbeiten können, können die Plattform jedoch anweisen, den Support über die ALLOWED Richtlinie zu aktivieren. Mit dieser Richtlinie können Anwendungen so viele Hardlinks erstellen, wie das Dateisystem unterstützt, solange sich die Links entweder unter demselben Synchronisierungsstamm oder ohne Synchronisierungsstamm befinden. Die Plattform erzwingt, dass ein Platzhalter hydratisiert wird, wenn der erste Out-of-Sync-Root-Link eingeführt wird, und rückgängig machen einen Platzhalter auf eine normale Datei, wenn der letzte In-Sync-Root-Link entfernt wird. Die Hardlinkerstellung, die nicht mit der Richtlinie kompatibel ist, schlägt mit HRESULT ERROR_CLOUD_FILES_INCOMPATIBLE_HARDLINKSfehl. Platzhaltervorgänge, die nicht mit der Richtlinie kompatibel sind, schlagen auch mit ERROR_CLOUD_FILES_INCOMPATIBLE_HARDLINKSfehl.

PlaceholderManagement

Standardmäßig kann nur ein Synchronisierungsanbieter Platzhalterverwaltungsvorgänge in einem Synchronisierungsstamm ausführen. Nicht-Synchronisierungsanbieterprozesse können Platzhalterverwaltungsvorgänge nur ausführen, wenn der Synchronisierungsstamm inaktiv ist (d. h. wenn keine Synchronisierungsanbieter mit dem Synchronisierungsstamm verbunden sind).) Wenn diese Richtlinien aktiviert sind, können Nichtsynchronisierungsanbieterprozesse entsprechende Platzhalterverwaltungsvorgänge in einem aktiven Synchronisierungsstamm ausführen. CF_PLACEHOLDER_MANAGEMENT_POLICY_DEFAULT ist die Standardrichtlinie, sodass nur ein verbundener Synchronisierungsanbieter Platzhalterverwaltungsvorgänge ausführen kann. Die folgenden drei Richtlinien können in beliebiger Kombination angegeben werden:

Richtlinie BESCHREIBUNG
CF_PLACEHOLDER_MANAGEMENT_POLICY_CREATE_UNRESTRICTED Wenn diese Richtlinie während der Registrierung angegeben wird, kann jeder Prozess einen Platzhalter in einem aktiven Synchronisierungsstamm erstellen, indem CfCreatePlaceholders aufgerufen wird.
CF_PLACEHOLDER_MANAGEMENT_POLICY_CONVERT_UNRESTRICTED Wenn diese Richtlinie während der Registrierung angegeben wird, kann jeder Prozess eine Datei oder ein Verzeichnis innerhalb eines aktiven Synchronisierungsstamms in einen Platzhalter konvertieren, indem CfConvertToPlaceholder aufgerufen wird.
CF_PLACEHOLDER_MANAGEMENT_POLICY_UPDATE_UNRESTRICTED Wenn diese Richtlinie während der Registrierung angegeben wird, kann jeder Prozess einen Platzhalter in einem aktiven Synchronisierungsstamm über die API CfUpdatePlaceholder aktualisieren.

Hinweis

Diese Flags werden nur unterstützt, wenn das PlatformVersion.IntegrationNumber von CfGetPlatformInfo abgerufene oder höher ist 0x310 .

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 10, Version 1709 [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2016 [nur Desktop-Apps]
Kopfzeile cfapi.h

Weitere Informationen

CfCreatePlaceholders

CfConvertToPlaceholder

CfGetPlatformInfo