Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Создает один или несколько новых файлов заполнителей или каталогов в дереве корневого каталога синхронизации.
Синтаксис
HRESULT CfCreatePlaceholders(
[in] LPCWSTR BaseDirectoryPath,
[in, out] CF_PLACEHOLDER_CREATE_INFO *PlaceholderArray,
[in] DWORD PlaceholderCount,
[in] CF_CREATE_FLAGS CreateFlags,
[out] PDWORD EntriesProcessed
);
Параметры
[in] BaseDirectoryPath
Путь к локальному каталогу, в котором создаются заполнители. При указании пути учитывайте следующее:
- Этот путь должен содержаться в зарегистрированном корневом дереве синхронизации. Это может быть сам корневой каталог синхронизации или любой другой каталог-потомок. В противном случае вызов завершится сбоем с STATUS_CLOUD_FILE_NOT_UNDER_SYNC_ROOT.
- Корневой каталог синхронизации должен быть зарегистрирован с помощью допустимой политики гидратации, которая не CF_HYDRATION_POLICY_ALWAYS_FULL. В противном случае вызов завершится сбоем с STATUS_CLOUD_FILE_NOT_SUPPORTED.
- Вызывающий объект должен иметь WRITE_DATA или WRITE_DAC доступ к базовому каталогу, в котором будет создан заполнитель. В противном случае операция завершится сбоем с STATUS_CLOUD_FILE_ACCESS_DENIED.
[in, out] PlaceholderArray
При успешном создании PlaceholderArray содержит окончательное значение USN и STATUS_OK сообщение. При возврате этот массив содержит значение HRESULT , описывающее, был ли создан заполнитель.
PlaceholderArray указывает на массив заполнителей, которые необходимо создать, относительно BaseDirectoryPath. Каждая запись в массиве содержит следующие поля:
- RelativeFileName — это имя создаваемого дочернего заполнителя, как файла, так и каталога.
- FsMetadata содержит метаданные файловой системы о создаваемом заполнителье, включая все метки времени, атрибуты файла и размер файла (необязательно для каталогов).
- FileIdentity и FileIdentityLength описывают буфер пользовательского режима, содержащий непрозрачные сведения о файлах, предоставленные поставщиком синхронизации. Размер большого двоичного объекта FileIdentity не должен превышать CF_PLACEHOLDER_MAX_FILE_IDENTITY_LENGTH (определенный до 4 КБ). FileIdentity передается обратно поставщику синхронизации во всех обратных вызовах. Это обязательное поле для файлов.
Поставщик синхронизации может выбрать следующие флаги или их комбинацию для каждого заполнителя:
- CF_PLACEHOLDER_CREATE_FLAG_DISABLE_ON_DEMAND_POPULATION — этот флаг применим только к дочернему каталогу-заполнителю. При наличии флага считается, что в созданном дочернем каталоге-заполнитель есть все его дочерние элементы локально, поэтому доступ к нему в будущем не активирует FETCH_PLACEHOLDERS обратного вызова. Если флаг отсутствует, вновь созданный каталог-заполнитель считается частичным, и в будущем доступ активируется FETCH_PLACEHOLDERS.
- CF_PLACEHOLDER_CREATE_FLAG_MARK_IN_SYNC — этот флаг применим как к файлам-заполнителям, так и к каталогам. При наличии этого флага созданный заполнитель будет помечен как синхронизированный как часть операции TRANSFER_PLACEHOLDERS .
- CF_PLACEHOLDER_CREATE_FLAG_ALWAYS_FULL — этот флаг применяется только к файлу заполнителя. Его можно задать для каталога-заполнителя, но это не оказывает никакого влияния. При наличии этого флага созданный заполнитель будет помечен как всегда полный. После очистки любая попытка обезвожить такой заполнитель файла завершится сбоем с кодом ошибки ERROR_CLOUD_FILE_DEHYDRATION_DISALLOWED.
[in] PlaceholderCount
Количество заполнителей в PlaceholderArray.
[in] CreateFlags
Флаги для настройки создания заполнителя. Для createFlags можно задать следующие значения:
- CF_CREATE_FLAG_NONE — это режим по умолчанию, в котором API обрабатывает все записи в массиве даже при обнаружении ошибок.
- CF_CREATE_FLAG_STOP_ON_ERROR приводит к немедленному возврату API в случае сбоя создания заполнителя. В этом случае API возвращает код сбоя.
[out] EntriesProcessed
Количество обработанных записей, включая записи, завершившиеся сбоем. Если CF_CREATE_FLAG_STOP_ON_ERROR не был указан в CreateFlags, API возвращает первый возникший код сбоя, но продолжает обработку как можно больше записей; Затем вызывающий объект должен проверить массив, чтобы узнать, какие заполнители не удалось создать.
Возвращаемое значение
Если эта функция завершается успешно, она возвращает .S_OK В противном случае возвращается код ошибки HRESULT .
Комментарии
Создание заполнителя с помощью этой функции является предпочтительным по сравнению с созданием нового файла с помощью CreateFile и последующего преобразования его в заполнитель с помощью CfConvertToPlaceholder; как для эффективности, так и потому, что это исключает временное окно, в котором файл не является заполнителем. Функция также может создавать несколько файлов или каталогов в пакете, что также может быть более эффективным.
Эта функция полезна при выполнении начальной синхронизации файлов или каталогов из облака с клиентом или при синхронизации только что созданного файла или каталога из облака.
Требования
| Требование | Значение |
|---|---|
| Минимальная версия клиента | Windows 10 версии 1709 [только классические приложения] |
| Минимальная версия сервера | Windows Server 2016 [только классические приложения] |
| Целевая платформа | Windows |
| Header | cfapi.h |
| Библиотека | CldApi.lib |
| DLL | CldApi.dll |