Перечисление 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 |