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 |