Fonction CfConnectSyncRoot (cfapi.h)

Lance une communication bidirectionnelle entre un fournisseur de synchronisation et l’API de filtre de synchronisation.

Syntaxe

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
);

Paramètres

[in] SyncRootPath

Chemin d’accès à la racine de synchronisation.

[in] CallbackTable

Table de rappel à inscrire. Ce paramètre est la façon dont le fournisseur de synchronisation indique à la bibliothèque quelles fonctions appeler pour différents types de requêtes à partir de la plateforme. Il s’agit d’un tableau de structures contenant un type de rappel et un pointeur de fonction associé. Le fournisseur de synchronisation doit uniquement inscrire les rappels qu’il implémente. Le tableau CallbackTable doit toujours se terminer par CF_CALLBACK_REGISTRATION_END.

[in, optional] CallbackContext

CallbackContext est fourni pour la commodité du fournisseur de synchronisation. La plateforme se souvient de ce CallbackContext et le transmet au fournisseur de synchronisation chaque fois qu’une de ses fonctions de rappel est appelée à la racine de synchronisation actuelle. Une bonne utilisation pour le CallbackContext serait un pointeur vers la propre structure du fournisseur de synchronisation qui maintient l’état pour cette connexion.

[in] ConnectFlags

Le fournisseur de synchronisation peut demander que des informations supplémentaires soient fournies lorsque ses rappels sont appelés en passant ConnectFlags à cette API. Les indicateurs suivants sont pris en charge :

Requête Description
REQUEST_PROCESS_INFO La plateforme retourne le chemin d’accès complet de l’image du processus d’hydratation dans les paramètres de rappel lorsque cet indicateur est spécifié.
REQUIRE_FULL_FILE_PATH La plateforme retourne le chemin complet de l’espace réservé demandé dans les paramètres de rappel lorsque cet indicateur est spécifié.
BLOCK_SELF_IMPLICIT_HYDRATION L’hydratation implicite, qui n’est pas effectuée via CfHydratePlaceholder, peut se produire lorsque le logiciel antivirus analyse les activités du système de fichiers du fournisseur de fichiers sur des espaces réservés de fichiers cloud non hydratés. Ce type d’hydratations implicites n’est pas attendu. Si le fournisseur de synchronisation n’initie jamais d’opérations d’hydratation implicites, il peut demander à la plateforme de bloquer toutes ces opérations d’hydratation implicites au lieu d’échouer les FETCH_DATA rappels ultérieurement.

[out] ConnectionKey

En cas de retour réussi, cette API retourne une clé de connexion opaque au fournisseur de synchronisation. Cela représente le canal de communication qui vient d’être établi, et le fournisseur de synchronisation peut se souvenir de connectionKey et le transmettre lors de l’appel de différentes API de fournisseur de synchronisation. Si un fournisseur de synchronisation ne s’attend à établir qu’une seule connexion, la clé de connexion peut être stockée dans un global. Toutefois, la plateforme prend en charge un seul processus de fournisseur qui se connecte à plusieurs racines de synchronisation différentes en même temps, et pour chaque connexion, une clé de connexion différente est retournée. Un bon emplacement pour stocker chaque ConnectionKey se trouve à l’intérieur de la structure interne du fournisseur de synchronisation identifiée par le CallbackContext.

Valeur retournée

Si cette fonction réussit, elle retourne S_OK. Sinon, elle retourne un code d’erreur HRESULT.

Remarques

Cela lance un canal de communication bidirectionnel entre le fournisseur de synchronisation et le filtre de synchronisation. Un fournisseur de synchronisation appelle généralement cette API peu après le démarrage, une fois qu’elle a été initialisée et qu’elle est prête à traiter les demandes.

La racine de synchronisation doit être inscrite auprès de la plateforme avant d’être connectée. Pour un SyncRootPath donné, il peut y avoir au maximum une connexion établie à un moment donné.

Le fournisseur de synchronisation doit disposer d’un accès WRITE_DATA ou WRITE_DAC à la racine de synchronisation à connecter, sinon l’API échoue avec HRESULT(ERROR_CLOUD_FILE_ACCESS_DENIED).

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 10, version 1709 [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2016 (applications de bureau uniquement)
Plateforme cible Windows
En-tête cfapi.h
Bibliothèque CldApi.lib
DLL CldApi.dll

Voir aussi

CfHydratePlaceholder