Funzione CfConnectSyncRoot (cfapi.h)

Avvia la comunicazione bidirezionale tra un provider di sincronizzazione e l'API del filtro di sincronizzazione.

Sintassi

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

Parametri

[in] SyncRootPath

Percorso della radice di sincronizzazione.

[in] CallbackTable

Tabella di callback da registrare. Questo parametro è il modo in cui il provider di sincronizzazione indica alla libreria quali funzioni chiamare per diversi tipi di richieste dalla piattaforma. Si tratta di una matrice di strutture contenenti un tipo di callback e un puntatore a funzione associato. Il provider di sincronizzazione deve registrare solo i callback implementati. La matrice CallbackTable deve sempre terminare con CF_CALLBACK_REGISTRATION_END.

[in, optional] CallbackContext

CallbackContext viene fornito per praticità del provider di sincronizzazione. La piattaforma ricorderà questo CallbackContext e lo passerà nuovamente al provider di sincronizzazione ogni volta che una delle relative funzioni di callback viene richiamata nella radice di sincronizzazione corrente. Un buon uso per CallbackContext sarebbe un puntatore nella struttura del provider di sincronizzazione che mantiene lo stato per questa connessione.

[in] ConnectFlags

Il provider di sincronizzazione può richiedere informazioni aggiuntive quando i callback vengono richiamati passando ConnectFlags a questa API. Sono supportati i flag seguenti:

Richiesta Descrizione
REQUEST_PROCESS_INFO La piattaforma restituisce il percorso completo dell'immagine del processo di idratazione nei parametri di callback quando viene specificato questo flag.
REQUIRE_FULL_FILE_PATH La piattaforma restituisce il percorso completo del segnaposto richiesto nei parametri di callback quando viene specificato questo flag.
BLOCK_SELF_IMPLICIT_HYDRATION L'idratazione implicita, che non viene eseguita tramite CfHydratePlaceholder, può verificarsi quando il software antivirus analizza le attività del file system del provider di sincronizzazione su segnaposto di file cloud non idratati. Questo tipo di idratazione implicita non è previsto. Se il provider di sincronizzazione non avvia mai operazioni di idratazione implicite, può indicare alla piattaforma di bloccare tutte queste operazioni di idratazione implicite anziché non eseguire il callback FETCH_DATA in un secondo momento.

[out] ConnectionKey

In caso di esito positivo, questa API restituirà un valore ConnectionKey opaco al provider di sincronizzazione. Rappresenta il canale di comunicazione appena stabilito e il provider di sincronizzazione può ricordare ConnectionKey e passarlo quando si chiamano varie API del provider di sincronizzazione. Se un provider di sincronizzazione prevede solo di stabilire una singola connessione, connectionKey potrebbe essere archiviato in un'entità globale. Tuttavia, la piattaforma supporta un singolo processo di provider che si connette a più radici di sincronizzazione diverse contemporaneamente e per ogni connessione verrà restituito un valore ConnectionKey diverso. Un buon punto in cui archiviare ogni ConnectionKey si trova all'interno della struttura interna del provider di sincronizzazione identificata da CallbackContext.

Valore restituito

Se questa funzione ha esito positivo, restituisce S_OK. In caso contrario, restituisce un codice di errore HRESULT .

Commenti

Viene avviato un canale di comunicazione bidirezionale tra il provider di sincronizzazione e il filtro di sincronizzazione. Un provider di sincronizzazione chiama in genere questa API subito dopo l'avvio, una volta inizializzata ed è pronta per le richieste di servizio.

La radice di sincronizzazione deve essere registrata con la piattaforma prima di essere connessa. Per un determinato SyncRootPath, è possibile stabilire al massimo una connessione in qualsiasi momento.

Il provider di sincronizzazione deve avere WRITE_DATA o WRITE_DAC l'accesso alla radice di sincronizzazione da connettere oppure l'API non riesce con HRESULT(ERROR_CLOUD_FILE_ACCESS_DENIED).

Requisiti

Requisito Valore
Client minimo supportato Windows 10 versione 1709 [solo app desktop]
Server minimo supportato Windows Server 2016 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione cfapi.h
Libreria CldApi.lib
DLL CldApi.dll

Vedi anche

CfHydratePlaceholder