Поделиться через


Перечисление CF_CALLBACK_TYPE (cfapi.h)

Содержит различные типы обратных вызовов, используемые в файлах-заполнителях или папках.

Синтаксис

typedef enum CF_CALLBACK_TYPE {
  CF_CALLBACK_TYPE_FETCH_DATA,
  CF_CALLBACK_TYPE_VALIDATE_DATA,
  CF_CALLBACK_TYPE_CANCEL_FETCH_DATA,
  CF_CALLBACK_TYPE_FETCH_PLACEHOLDERS,
  CF_CALLBACK_TYPE_CANCEL_FETCH_PLACEHOLDERS,
  CF_CALLBACK_TYPE_NOTIFY_FILE_OPEN_COMPLETION,
  CF_CALLBACK_TYPE_NOTIFY_FILE_CLOSE_COMPLETION,
  CF_CALLBACK_TYPE_NOTIFY_DEHYDRATE,
  CF_CALLBACK_TYPE_NOTIFY_DEHYDRATE_COMPLETION,
  CF_CALLBACK_TYPE_NOTIFY_DELETE,
  CF_CALLBACK_TYPE_NOTIFY_DELETE_COMPLETION,
  CF_CALLBACK_TYPE_NOTIFY_RENAME,
  CF_CALLBACK_TYPE_NOTIFY_RENAME_COMPLETION,
  CF_CALLBACK_TYPE_NONE = 0xffffffff
} ;

Константы

 
CF_CALLBACK_TYPE_FETCH_DATA
Этот обратный вызов используется для запроса у поставщика синхронизации диапазона файловых данных, необходимых для удовлетворения запроса ввода-вывода или явного запроса на восстановление заполнителя. Реализация этого обратного вызова требуется, если поставщик синхронизации указывает политику гидратации, которая неALWAYS_FULL во время регистрации корневого каталога синхронизации.
CF_CALLBACK_TYPE_VALIDATE_DATA
Этот обратный вызов используется для запроса у поставщика синхронизации подтверждения того, что заданный диапазон файловых данных, который уже присутствует на диске из предыдущих CF_OPERATION_TYPE_TRANSFER_DATA операций, является допустимым и, следовательно, может использоваться платформой для удовлетворения пользовательских запросов ввода-вывода. Реализация этого обратного вызова требуется только в том случае, если поставщик синхронизации указывает модификатор политики гидратации VALIDATION_REQUIRED во время корневой регистрации синхронизации.
CF_CALLBACK_TYPE_CANCEL_FETCH_DATA
Этот обратный вызов используется для информирования поставщика синхронизации о том, что диапазон файловых данных больше не требуется, как правило, из-за отмены исходного запроса. Это позволяет поставщику синхронизации перестать тратить свои усилия на получение данных (отмена невыполненных сетевых запросов и т. д.). Реализация этого обратного вызова является необязательной.
CF_CALLBACK_TYPE_FETCH_PLACEHOLDERS
Этот обратный вызов используется для того, чтобы запросить у поставщика синхронизации сведения о содержимом каталога-заполнителя для выполнения операции запроса каталога или при попытке открыть файл под каталогом. Реализация этого обратного вызова требуется только в том случае, если поставщик синхронизации указывает политику, отличающаяся от CF_POPULATION_POLICY_ALWAYS_FULL во время корневой регистрации синхронизации.
CF_CALLBACK_TYPE_CANCEL_FETCH_PLACEHOLDERS
Этот обратный вызов используется для информирования поставщика синхронизации о том, что содержимое каталога-заполнителя больше не требуется, как правило, из-за отмены исходного запроса. Это позволяет поставщику синхронизации перестать тратить свои усилия на получение содержимого (отмена невыполненных сетевых запросов и т. д.). Реализация этого обратного вызова является необязательной.
CF_CALLBACK_TYPE_NOTIFY_FILE_OPEN_COMPLETION
Этот обратный вызов используется для информирования поставщика синхронизации о том, что заполнитель в одном из корней синхронизации успешно открыт для доступа на чтение, запись и удаление. Приложение пользователя, которое выполняет открытие, не блокируется. От поставщика синхронизации ответ не ожидается. Это уведомление не применяется к каталогам. Реализация этого обратного вызова является необязательной.
CF_CALLBACK_TYPE_NOTIFY_FILE_CLOSE_COMPLETION
Этот обратный вызов используется для информирования поставщика синхронизации о том, что заполнитель в одном из корней синхронизации, который ранее был открыт для доступа на чтение, запись и удаление, теперь закрыт. Приложение пользователя, выполняющее закрытие, не блокируется. От поставщика синхронизации ответ не ожидается. Это уведомление не применяется к каталогам. Реализация этого обратного вызова является необязательной.
CF_CALLBACK_TYPE_NOTIFY_DEHYDRATE
Этот обратный вызов используется для информирования поставщика синхронизации о том, что заполнитель в одном из корней синхронизации должен быть обезвожен. Приложение пользователя, выполняющее обезвоживание, блокируется. Ожидается ответ от поставщика синхронизации. Реализация этого обратного вызова является необязательной.
CF_CALLBACK_TYPE_NOTIFY_DEHYDRATE_COMPLETION
Этот обратный вызов используется для информирования поставщика синхронизации о том, что заполнитель в одном из корней синхронизации успешно обезвожен. Пользовательское приложение, выполняющее обезвоживание, не блокируется. От поставщика синхронизации ответ не ожидается. Реализация этого обратного вызова является необязательной.
CF_CALLBACK_TYPE_NOTIFY_DELETE
Этот обратный вызов используется для информирования поставщика синхронизации о том, что заполнитель в одном из корней синхронизации будет удален. Приложение пользователя, выполняющее удаление, блокируется. Ожидается ответ от поставщика синхронизации. Реализация этого обратного вызова является необязательной.
CF_CALLBACK_TYPE_NOTIFY_DELETE_COMPLETION
Этот обратный вызов используется для информирования поставщика синхронизации о том, что заполнитель в одном из корней синхронизации успешно удален. Пользовательское приложение, выполняющее удаление, не блокируется. От поставщика синхронизации ответ не ожидается. Реализация этого обратного вызова является необязательной.
CF_CALLBACK_TYPE_NOTIFY_RENAME
Этот обратный вызов используется для информирования поставщика синхронизации о том, что заполнитель в одном из корней синхронизации будет переименован или перемещен. Приложение пользователя, выполняющее переименование или перемещение, заблокировано. Ожидается ответ от поставщика синхронизации. Реализация этого обратного вызова является необязательной.
CF_CALLBACK_TYPE_NOTIFY_RENAME_COMPLETION
Этот обратный вызов используется для информирования поставщика синхронизации о том, что заполнитель в одном из корней синхронизации был успешно переименован или перемещен. Пользовательское приложение, выполняющее переименование или перемещение, не блокируется. От поставщика синхронизации ответ не ожидается. Реализация этого обратного вызова является необязательной.
CF_CALLBACK_TYPE_NONE
Значение: 0xffffffff
Тип обратного вызова отсутствует.

Комментарии

Это не API, предоставляемые библиотекой, а обратные вызовы, которые поставщик синхронизации должен реализовать для обслуживания запросов от платформы. При необходимости платформа попросит экземпляр библиотеки, запущенный в процессе поставщика синхронизации, вызвать соответствующую подпрограмму обратного вызова.

Процедуры обратного вызова будут вызываться в произвольном потоке (в составе пула потоков). Несколько обратных вызовов могут выполняться одновременно в разных потоках, и код поставщика синхронизации отвечает за реализацию любой необходимой синхронизации для обеспечения надежной работы. Все обратные вызовы являются асинхронными. Асинхронные пользовательские запросы, которые активируют обратные вызовы, выполняются, и элемент управления возвращается в пользовательское приложение.

Каждый запрос обратного вызова имеет фиксированное время ожидания в 60 секунд. Допустимая операция с любыми ожидающими запросами от поставщика синхронизации сбрасывает таймеры всех ожидающих запросов.

Все функции обратного вызова имеют один и тот же прототип с двумя аргументами: CF_CALLBACK_INFO и структурой CF_CALLBACK_PARAMETERS .

Процедуры обратного вызова не имеют возвращаемого значения.

Требования

Требование Значение
Минимальная версия клиента Windows 10 версии 1709 [только классические приложения]
Минимальная версия сервера Windows Server 2016 [только классические приложения]
Верхняя часть cfapi.h

См. также раздел

CF_CALLBACK_INFO

CF_CALLBACK_PARAMETERS