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