Condividi tramite


Funzione CfCreatePlaceholders (cfapi.h)

Crea uno o più nuovi file segnaposto o directory in un albero della directory radice di sincronizzazione.

Sintassi

HRESULT CfCreatePlaceholders(
  [in]      LPCWSTR                    BaseDirectoryPath,
  [in, out] CF_PLACEHOLDER_CREATE_INFO *PlaceholderArray,
  [in]      DWORD                      PlaceholderCount,
  [in]      CF_CREATE_FLAGS            CreateFlags,
  [out]     PDWORD                     EntriesProcessed
);

Parametri

[in] BaseDirectoryPath

Percorso della directory locale in cui vengono creati i segnaposto. Tenere presente quanto segue quando si specifica il percorso:

  • Questo percorso deve essere contenuto in un albero radice di sincronizzazione registrato. Può essere la directory radice di sincronizzazione stessa o qualsiasi directory discendente. In caso contrario, la chiamata avrà esito negativo con STATUS_CLOUD_FILE_NOT_UNDER_SYNC_ROOT.
  • La radice di sincronizzazione deve essere registrata con un criterio di idratazione valido che non è CF_HYDRATION_POLICY_ALWAYS_FULL, altrimenti la chiamata avrà esito negativo con STATUS_CLOUD_FILE_NOT_SUPPORTED.
  • Il chiamante deve avere WRITE_DATA o WRITE_DAC accesso alla directory di base in cui il segnaposto sta per essere creato. In caso contrario, l'operazione non sarà riuscita con STATUS_CLOUD_FILE_ACCESS_DENIED.

[in, out] PlaceholderArray

In fase di creazione riuscita, PlaceholderArray contiene il valore USN finale e un STATUS_OK messaggio. In caso contrario, questa matrice contiene un valore HRESULT che descrive se il segnaposto è stato creato o meno. SegnapostoArray punta a una matrice di segnaposto da creare, rispetto a BaseDirectoryPath. Ogni voce nella matrice include i campi seguenti:

  • RelativeFileName è il nome del segnaposto figlio, sia file che directory, da creare.
  • FsMetadata contiene metadati del file system sul segnaposto da creare, inclusi tutti i timestamp, gli attributi dei file e le dimensioni dei file (facoltativo per le directory).
  • FileIdentity e FileIdentityLength descrivono un buffer in modalità utente che contiene le informazioni sul file opaco fornito dal provider di sincronizzazione. Il BLOB FileIdentity non deve superare CF_PLACEHOLDER_MAX_FILE_IDENTITY_LENGTH (definito a 4 KB) in dimensioni. FileIdentity viene passato al provider di sincronizzazione in tutti i callback. Si tratta di un campo obbligatorio per i file.

Un provider di sincronizzazione può scegliere i flag seguenti o una combinazione di tali flag in base al segnaposto:

  • CF_PLACEHOLDER_CREATE_FLAG_DISABLE_ON_DEMAND_POPULATION : questo flag è applicabile solo per una directory segnaposto figlio. Quando il flag è presente, la directory segnaposto figlio appena creata viene considerata avere tutti i relativi elementi figlio presenti localmente, quindi l'accesso in futuro non attiverà alcun callback FETCH_PLACEHOLDERS su di esso. Quando il flag è assente, la directory segnaposto appena creata viene considerata parziale e l'accesso futuro attiverà FETCH_PLACEHOLDERS.
  • CF_PLACEHOLDER_CREATE_FLAG_MARK_IN_SYNC : questo flag è applicabile sia per i file segnaposto che per le directory. Quando questo flag è presente, il segnaposto appena creato verrà contrassegnato come in-sync come parte dell'operazione di TRANSFER_PLACEHOLDERS .
  • CF_PLACEHOLDER_CREATE_FLAG_ALWAYS_FULL : questo flag viene applicato solo a un file segnaposto. Può essere impostato su una directory segnaposto, ma non ha alcun effetto. Quando questo flag è presente, il segnaposto appena creato verrà contrassegnato come sempre pieno. Una volta idratato, qualsiasi tentativo di disidratazione di tale segnaposto file avrà esito negativo con codice di errore ERROR_CLOUD_FILE_DEHYDRATION_DISALLOWED.

[in] PlaceholderCount

Conteggio dei segnaposto nel segnapostoArray.

[in] CreateFlags

Flag per la configurazione della creazione di un segnaposto. CreateFlags può essere impostato sui valori seguenti:

  • CF_CREATE_FLAG_NONE è la modalità predefinita in cui l'API elabora tutte le voci della matrice anche quando vengono rilevati errori.
  • CF_CREATE_FLAG_STOP_ON_ERROR causa la restituzione immediata dell'API se la creazione di un segnaposto ha esito negativo. In questo caso, l'API restituisce il codice di errore.

[out] EntriesProcessed

Numero di voci elaborate, incluse le voci non riuscite. Se CF_CREATE_FLAG_STOP_ON_ERROR non è stato specificato in CreateFlags, l'API restituisce il primo codice di errore rilevato, ma continua a elaborare il maggior numero possibile di voci; il chiamante deve quindi controllare la matrice per verificare quali creazione segnaposto non è riuscita.

Valore restituito

Se questa funzione ha esito positivo, restituisce S_OK. In caso contrario, restituisce un codice di errore HRESULT .

Commenti

La creazione di un segnaposto con questa funzione è preferibile rispetto alla creazione di un nuovo file con CreateFile e quindi la conversione in un segnaposto con CfConvertToPlaceholder; sia per l'efficienza che perché elimina la finestra temporale in cui il file non è un segnaposto. La funzione può anche creare più file o directory in un batch, che può anche essere più efficiente.

Questa funzione è utile quando si esegue una sincronizzazione iniziale di file o directory dal cloud verso il basso al client o quando si sincronizza un singolo file o una directory appena creata dal cloud.

Requisiti

Requisito Valore
Client minimo supportato Windows 10 versione 1709 [solo app desktop]
Server minimo supportato Windows Server 2016 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione cfapi.h
Libreria CldApi.lib
DLL CldApi.dll

Vedi anche

CreateFile

CfConvertToPlaceholder