Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Содержит различные типы обратных вызовов, используемые в файлах-заполнителях или папках.
Синтаксис
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 |