Freigeben über


CfConnectSyncRoot-Funktion (cfapi.h)

Initiiert die bidirektionale Kommunikation zwischen einem Synchronisierungsanbieter und der Synchronisierungsfilter-API.

Syntax

HRESULT CfConnectSyncRoot(
  [in]           LPCWSTR                        SyncRootPath,
  [in]           const CF_CALLBACK_REGISTRATION *CallbackTable,
  [in, optional] LPCVOID                        CallbackContext,
  [in]           CF_CONNECT_FLAGS               ConnectFlags,
  [out]          CF_CONNECTION_KEY              *ConnectionKey
);

Parameter

[in] SyncRootPath

Der Pfad zum Synchronisierungsstamm.

[in] CallbackTable

Die zu registrierende Rückruftabelle. Mit diesem Parameter teilt der Synchronisierungsanbieter der Bibliothek mit, welche Funktionen für verschiedene Arten von Anforderungen von der Plattform aufgerufen werden sollen. Es handelt sich um ein Array von Strukturen, die einen Rückruftyp und zugeordneten Funktionszeiger enthalten. Der Synchronisierungsanbieter muss nur die von er implementierten Rückrufe registrieren. Das CallbackTable-Array sollte immer mit CF_CALLBACK_REGISTRATION_END enden.

[in, optional] CallbackContext

CallbackContext wird zur Vereinfachung des Synchronisierungsanbieters bereitgestellt. Die Plattform erinnert sich an diesen CallbackContext und gibt ihn an den Synchronisierungsanbieter zurück, wenn eine seiner Rückruffunktionen im aktuellen Synchronisierungsstamm aufgerufen wird. Eine gute Verwendung für CallbackContext wäre ein Zeiger auf die eigene Struktur des Synchronisierungsanbieters, die den Zustand für diese Verbindung verwaltet.

[in] ConnectFlags

Der Synchronisierungsanbieter kann zusätzliche Informationen anfordern, wenn seine Rückrufe aufgerufen werden, indem ConnectFlags an diese API übergeben wird. Die folgenden Flags werden unterstützt:

Anforderung BESCHREIBUNG
REQUEST_PROCESS_INFO Die Plattform gibt den vollständigen Imagepfad des Hydrierungsprozesses in den Rückrufparametern zurück, wenn dieses Flag angegeben wird.
REQUIRE_FULL_FILE_PATH Die Plattform gibt den vollständigen Pfad des Platzhalters zurück, der in den Rückrufparametern angefordert wird, wenn dieses Flag angegeben wird.
BLOCK_SELF_IMPLICIT_HYDRATION Die implizite Hydrierung, die nicht über CfHydratePlaceholder ausgeführt wird, kann auftreten, wenn anti-Virus-Software die Dateisystemaktivitäten des Synchronisierungsanbieters auf nicht hydrierte Clouddateiplatzhalter überprüft. Diese Art impliziter Flüssigkeitszufuhren wird nicht erwartet. Wenn der Synchronisierungsanbieter nie selbst implizite Hydrationsvorgänge initiiert, kann er die Plattform anweisen, alle impliziten Hydrierungsvorgänge zu blockieren, anstatt später die FETCH_DATA Rückrufe zu versagen.

[out] ConnectionKey

Bei erfolgreicher Rückgabe gibt diese API einen undurchsichtigen ConnectionKey an den Synchronisierungsanbieter zurück. Dies stellt den soeben eingerichteten Kommunikationskanal dar, und der Synchronisierungsanbieter erinnert sich möglicherweise an den ConnectionKey und übergibt ihn beim Aufrufen verschiedener Synchronisierungsanbieter-APIs. Wenn ein Synchronisierungsanbieter nur erwartet, dass er eine einzelne Verbindung herstellt, kann der ConnectionKey in einer globalen gespeichert werden. Die Plattform unterstützt jedoch einen einzelnen Anbieterprozess, der eine Verbindung mit mehreren verschiedenen Synchronisierungsstammen gleichzeitig herstellt, und für jede Verbindung wird ein anderer ConnectionKey zurückgegeben. Ein guter Ort, um jeden ConnectionKey zu speichern, befindet sich in der internen Struktur des Synchronisierungsanbieters, die durch CallbackContext identifiziert wird.

Rückgabewert

Wenn diese Funktion erfolgreich ist, wird zurückgegeben S_OK. Andernfalls wird ein Fehlercode HRESULT zurückgegeben.

Hinweise

Dadurch wird ein bidirektionaler Kommunikationskanal zwischen dem Synchronisierungsanbieter und dem Synchronisierungsfilter initiiert. Ein Synchronisierungsanbieter ruft diese API in der Regel kurz nach dem Start auf, sobald sie initialisiert wurde und bereit für Dienstanforderungen ist.

Der Synchronisierungsstamm muss vor der Verbindung bei der Plattform registriert werden. Für einen bestimmten SyncRootPath kann zu einem bestimmten Zeitpunkt höchstens eine Verbindung hergestellt werden.

Der Synchronisierungsanbieter sollte WRITE_DATA oder WRITE_DAC Zugriff auf den zu verbindenden Synchronisierungsstamm haben, sonst tritt ein Fehler mit HRESULT(ERROR_CLOUD_FILE_ACCESS_DENIED) auf.

Anforderungen

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

Weitere Informationen

CfHydratePlaceholder