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_REQUEST einen 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_ALLOWED
und 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_REQUIRED aus. 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_HARDLINKS
fehl. Platzhaltervorgänge, die nicht mit der Richtlinie kompatibel sind, schlagen auch mit ERROR_CLOUD_FILES_INCOMPATIBLE_HARDLINKS
fehl.
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 |