Condividi tramite


IFileSyncProviderCallback::OnApplyingChange

Viene generato quando si tenta di applicare modifiche a un file.

HRESULT OnApplyingChange(
  LPCWSTR pcszNewDirectoryPath,
  LPCWSTR pcszCurrentDirectoryPath,
  const WIN32_FIND_DATAW *pNewFileInfo,
  const WIN32_FIND_DATAW *pCurrentFileInfo,
  DWORD dwChangeType,
  BOOL *pfSkipChange);

Parametri

  • pcszNewDirectoryPath
    [in, string] Nuovo percorso del file da modificare. Il percorso è relativo alla directory radice. Se dwChangeType è FILESYNC_CHANGE_TYPE_DELETE, questo valore è NULL. Se dwChangeType è FILESYNC_CHANGE_TYPE_RENAME, si tratta del nuovo percorso dopo l'applicazione del nuovo nome.
  • pcszCurrentDirectoryPath
    [in, string] Percorso corrente del file da modificare. Il percorso è relativo alla directory radice. Se dwChangeType è FILESYNC_CHANGE_TYPE_CREATE, questo valore è NULL. Se dwChangeType è FILESYNC_CHANGE_TYPE_RENAME, si tratta del percorso corrente prima dell'applicazione del nuovo nome.
  • pNewFileInfo
    [in, unique] Nuovi dati per il file da modificare. Se dwChangeType è FILESYNC_CHANGE_TYPE_DELETE, questo valore è NULL. Se dwChangeType è FILESYNC_CHANGE_TYPE_RENAME, questi dati rappresentano il file dopo l'applicazione del nuovo nome.
  • pCurrentFileInfo
    [in, unique] Dati correnti per il file da modificare. Se dwChangeType è FILESYNC_CHANGE_TYPE_DELETE, questo valore è NULL. Se dwChangeType è FILESYNC_CHANGE_TYPE_RENAME, questi dati rappresentano il file come è attualmente prima dell'applicazione del nuovo nome.
  • dwChangeType
    [in] Tipo di modifica da applicare. Questo valore deriva dall'enumerazione FILESYNC_CHANGE_TYPE.
  • pfSkipChange
    [out] Indica se la modifica deve essere ignorata.

Valore restituito

  • S_OK

  • Codici di errore specifici dell'applicazione

Osservazioni

Questo evento fornisce un meccanismo che consente all'applicazione di ignorare in modo dinamico le modifiche durante una sessione di sincronizzazione. Per ignorare una modifica, impostare il valore pfSkipChange su TRUE. Una modifica ignorata non verrà applicata nella replica di destinazione. Per ogni modifica ignorata verrà generato un evento IFileSyncProviderCallback::OnChangeSkipped con dwReason impostato su FILESYNC_SKIP_REASON_APPLICATION_REQUEST.

Nel corso di una sessione è possibile che si tenti di apportare alcune modifiche più di una volta. L'evento viene generato a ogni tentativo. Se ad esempio si tenta di eliminare una cartella e nella cartella è presente un file, il tentativo avrà esito negativo. Il tentativo di eliminazione della cartella verrà ripetuto nel corso della sessione finché l'operazione di eliminazione non verrà completata oppure non verrà stabilito che l'operazione di eliminazione non può essere eseguita durante la sessione corrente e quindi verrà ignorata.

Questo evento verrà generato solo se una modifica incide sui dati dei file nella replica di destinazione e non se incide solo sui metadati di un file. Se ad esempio viene rilevato un conflitto aggiornamento-aggiornamento e il file delle righe in conflitto confermate è quello presente nel sistema di destinazione, non verrà applicata alcuna modifica alla destinazione e l'evento non verrà generato. Analogamente, la propagazione di un contrassegno per la rimozione definitiva dall'origine alla destinazione causa solo un aggiornamento dei metadati e nessuna modifica al file system di destinazione. In questo caso, l'evento non verrà generato.

Se OnApplyingChange restituisce un errore, Sync Services for File Systems interrompe l'elaborazione del batch di modifiche corrente e restituisce il codice di errore dal metodo ProcessChangeBatch di IFileSyncProvider.

Vedere anche

Riferimento

Interfaccia IFileSyncProviderCallback
Enumerazione FILESYNC_CHANGE_TYPE