Función CfConnectSyncRoot (cfapi.h)
Inicia la comunicación bidireccional entre un proveedor de sincronización y la API de filtro de sincronización.
Sintaxis
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
);
Parámetros
[in] SyncRootPath
Ruta de acceso a la raíz de sincronización.
[in] CallbackTable
Tabla de devolución de llamada que se va a registrar. Este parámetro es la forma en que el proveedor de sincronización indica a la biblioteca qué funciones llamar a para varios tipos de solicitudes de la plataforma. Es una matriz de estructuras que contienen un tipo de devolución de llamada y un puntero de función asociado. El proveedor de sincronización solo necesita registrar las devoluciones de llamada que implementa. La matriz CallbackTable siempre debe terminar con CF_CALLBACK_REGISTRATION_END.
[in, optional] CallbackContext
CallbackContext se proporciona para la comodidad del proveedor de sincronización. La plataforma recordará este CallbackContext y lo devolverá al proveedor de sincronización cada vez que se invoca una de sus funciones de devolución de llamada en la raíz de sincronización actual. Un buen uso para CallbackContext sería un puntero a la propia estructura del proveedor de sincronización que mantiene el estado de esta conexión.
[in] ConnectFlags
El proveedor de sincronización puede solicitar información adicional cuando se invocan sus devoluciones de llamada pasando ConnectFlags a esta API. Se admiten las marcas siguientes:
Solicitud | Descripción |
---|---|
REQUEST_PROCESS_INFO | La plataforma devuelve la ruta de acceso completa de la imagen del proceso de hidratación en los parámetros de devolución de llamada cuando se especifica esta marca. |
REQUIRE_FULL_FILE_PATH | La plataforma devuelve la ruta de acceso completa del marcador de posición que se solicita en los parámetros de devolución de llamada cuando se especifica esta marca. |
BLOCK_SELF_IMPLICIT_HYDRATION | La hidratación implícita, que no se realiza a través de CfHydratePlaceholder, puede ocurrir cuando el software antivirus examina las actividades del sistema de archivos del proveedor de sincronización en marcadores de posición de archivos en la nube no hidratados. No se espera este tipo de hidrataciones implícitas. Si el proveedor de sincronización nunca inicia operaciones implícitas de hidratación, puede indicar al bloque de plataforma todas estas operaciones de hidratación implícitas en lugar de que se produzcan errores en las devoluciones de llamada de FETCH_DATA más adelante. |
[out] ConnectionKey
Si la devolución se realiza correctamente, esta API devolverá una connectionKey opaca al proveedor de sincronización. Esto representa el canal de comunicación que se acaba de establecer y el proveedor de sincronización puede recordar ConnectionKey y pasarlo al llamar a varias API del proveedor de sincronización. Si un proveedor de sincronización solo espera establecer una única conexión, connectionKey podría almacenarse en un entorno global. Sin embargo, la plataforma admite un único proceso de proveedor que se conecta a varias raíces de sincronización diferentes al mismo tiempo y, para cada conexión, se devolverá una connectionKey diferente. Un buen lugar para almacenar cada ConnectionKey estaría dentro de la estructura interna del proveedor de sincronización identificada por CallbackContext.
Valor devuelto
Si esta función se realiza correctamente, devuelve S_OK
. De lo contrario, devuelve un código de error de HRESULT.
Comentarios
Esto inicia un canal de comunicación bidireccional entre el proveedor de sincronización y el filtro de sincronización. Un proveedor de sincronización normalmente llama a esta API poco después del inicio, una vez que se ha inicializado y está listo para atender las solicitudes.
La raíz de sincronización debe registrarse con la plataforma antes de estar conectada. Para un syncRootPath determinado, puede haber como máximo una conexión establecida en un momento dado.
El proveedor de sincronización debe tener WRITE_DATA o WRITE_DAC acceso a la raíz de sincronización que se va a conectar o se producirá un error en la API con HRESULT(ERROR_CLOUD_FILE_ACCESS_DENIED) .
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 10, versión 1709 [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2016 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | cfapi.h |
Library | CldApi.lib |
Archivo DLL | CldApi.dll |