Função CfConnectSyncRoot (cfapi.h)
Inicia a comunicação bidirecional entre um provedor de sincronização e a API de filtro de sincronização.
Sintaxe
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
O caminho para a raiz de sincronização.
[in] CallbackTable
A tabela de retorno de chamada a ser registrada. Esse parâmetro é como o provedor de sincronização informa à biblioteca quais funções chamar para vários tipos de solicitações da plataforma. É uma matriz de estruturas que contém um tipo de retorno de chamada e um ponteiro de função associado. O provedor de sincronização só precisa registrar os retornos de chamada implementados. A matriz CallbackTable sempre deve terminar com CF_CALLBACK_REGISTRATION_END.
[in, optional] CallbackContext
CallbackContext é fornecido para a conveniência do provedor de sincronização. A plataforma se lembrará desse CallbackContext e a passará de volta para o provedor de sincronização sempre que uma de suas funções de retorno de chamada for invocada na raiz de sincronização atual. Um bom uso para CallbackContext seria um ponteiro para a própria estrutura do provedor de sincronização que mantém o estado dessa conexão.
[in] ConnectFlags
O provedor de sincronização pode solicitar informações adicionais quando seus retornos de chamada são invocados passando ConnectFlags para essa API. Há suporte para os seguintes sinalizadores:
Solicitação | Descrição |
---|---|
REQUEST_PROCESS_INFO | A plataforma retorna o caminho de imagem completo do processo de hidratação nos parâmetros de retorno de chamada quando esse sinalizador é especificado. |
REQUIRE_FULL_FILE_PATH | A plataforma retorna o caminho completo do espaço reservado que está sendo solicitado nos parâmetros de retorno de chamada quando esse sinalizador é especificado. |
BLOCK_SELF_IMPLICIT_HYDRATION | A hidratação implícita, que não é executada por meio de CfHydratePlaceholder, pode acontecer quando o software Anti-Virus verifica as atividades do sistema de arquivos do provedor de sincronização em espaços reservados de arquivos de nuvem não hidratados. Esse tipo de hidratação implícita não é esperado. Se o provedor de sincronização nunca iniciar operações de hidratação implícitas em si, ele poderá instruir a plataforma a bloquear todas essas operações implícitas de hidratação em vez de falhar nos retornos de chamada FETCH_DATA posteriormente. |
[out] ConnectionKey
No retorno bem-sucedido, essa API retornará uma ConnectionKey opaca de volta ao provedor de sincronização. Isso representa o canal de comunicação que acabou de ser estabelecido, e o provedor de sincronização pode se lembrar da ConnectionKey e passá-la ao chamar várias APIs do provedor de sincronização. Se um provedor de sincronização espera estabelecer apenas uma única conexão, a ConnectionKey poderá ser armazenada em um global. No entanto, a plataforma dá suporte a um único processo de provedor conectando-se a várias raízes de sincronização diferentes ao mesmo tempo e, para cada conexão, haverá uma ConnectionKey diferente retornada. Um bom lugar para armazenar cada ConnectionKey estaria dentro da estrutura interna do provedor de sincronização identificada pelo CallbackContext.
Retornar valor
Se essa função for bem-sucedida, ela retornará S_OK
. Caso contrário, ele retornará um código de erro HRESULT.
Comentários
Isso inicia um canal de comunicação bidirecional entre o provedor de sincronização e o filtro de sincronização. Um provedor de sincronização normalmente chama essa API logo após a inicialização, depois que ela é inicializada e está pronta para solicitações de serviço.
A raiz de sincronização deve ser registrada na plataforma antes de ser conectada. Para um determinado SyncRootPath, pode haver no máximo uma conexão estabelecida a qualquer momento.
O provedor de sincronização deve ter WRITE_DATA ou WRITE_DAC acesso à raiz de sincronização a ser conectada ou a API falhará com HRESULT(ERROR_CLOUD_FILE_ACCESS_DENIED).
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 10, versão 1709 [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2016 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | cfapi.h |
Biblioteca | CldApi.lib |
DLL | CldApi.dll |