Функция CfConnectSyncRoot (cfapi.h)
Инициирует двунаправленный обмен данными между поставщиком синхронизации и API фильтра синхронизации.
Синтаксис
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
);
Параметры
[in] SyncRootPath
Путь к корневому каталогу синхронизации.
[in] CallbackTable
Таблица обратного вызова, которую необходимо зарегистрировать. Этот параметр определяет, как поставщик синхронизации сообщает библиотеке, какие функции следует вызывать для различных типов запросов от платформы. Это массив структур, содержащих тип обратного вызова и связанный указатель на функцию. Поставщику синхронизации необходимо зарегистрировать только те обратные вызовы, которые он реализует. Массив CallbackTable всегда должен заканчиваться CF_CALLBACK_REGISTRATION_END.
[in, optional] CallbackContext
CallbackContext предоставляется для удобства поставщика синхронизации. Платформа запомнит этот callbackContext и передаст его поставщику синхронизации при вызове одной из ее функций обратного вызова в текущем корневом каталоге синхронизации. Хорошим вариантом использования callbackContext будет указатель на собственную структуру поставщика синхронизации, которая поддерживает состояние этого подключения.
[in] ConnectFlags
Поставщик синхронизации может запросить дополнительные сведения при вызове обратных вызовов путем передачи ConnectFlags в этот API. Поддерживаются следующие флаги:
Запрос | Описание |
---|---|
REQUEST_PROCESS_INFO | Платформа возвращает полный путь к изображению процесса гидрирования в параметрах обратного вызова при указании этого флага. |
REQUIRE_FULL_FILE_PATH | При указании этого флага платформа возвращает полный путь к заполнителю, запрашиваемого в параметрах обратного вызова. |
BLOCK_SELF_IMPLICIT_HYDRATION | Неявное гидратация, которая не выполняется через CfHydratePlaceholder, может произойти, когда антивирусная программа проверяет действия файловой системы поставщика синхронизации с неувлажнированными заполнителями облачных файлов. Такого рода неявных гидратации не ожидается. Если поставщик синхронизации никогда не инициирует неявные операции гидратации, он может указать, что платформа блокирует все такие неявные операции гидратации, а не FETCH_DATA обратные вызовы позже. |
[out] ConnectionKey
При успешном возвращении этот API вернет поставщику синхронизации непрозрачный ключ ConnectionKey . Это канал связи, который был только что создан, и поставщик синхронизации может запомнить ConnectionKey и передать его при вызове различных API поставщика синхронизации. Если поставщик синхронизации ожидает установить только одно подключение, connectionKey может храниться в глобальной среде. Тем не менее платформа поддерживает один процесс поставщика, который одновременно подключается к нескольким разным корневиням синхронизации, и для каждого подключения будет возвращен другой connectionKey . Хорошим местом для хранения каждого ключа ConnectionKey будет внутренняя структура поставщика синхронизации, определяемая callbackContext.
Возвращаемое значение
Если эта функция завершается успешно, она возвращает .S_OK
В противном случае возвращается код ошибки HRESULT .
Комментарии
Это инициирует двунаправленный канал связи между поставщиком синхронизации и фильтром синхронизации. Поставщик синхронизации обычно вызывает этот API вскоре после запуска, после его инициализации и готовности к обслуживанию запросов.
Корневой каталог синхронизации должен быть зарегистрирован на платформе перед подключением. Для заданного SyncRootPath в любой момент времени может быть установлено не более одного подключения.
Поставщик синхронизации должен иметь WRITE_DATA или WRITE_DAC доступ к корневому каталогу синхронизации для подключения, в противном случае API завершится сбоем с HRESULT(ERROR_CLOUD_FILE_ACCESS_DENIED).
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 10 версии 1709 [только классические приложения] |
Минимальная версия сервера | Windows Server 2016 [только классические приложения] |
Целевая платформа | Windows |
Header | cfapi.h |
Библиотека | CldApi.lib |
DLL | CldApi.dll |