Compartilhar via


IFileSyncProviderCallback::OnApplyingChange

Ocorre quando se está prestes a tentar uma aplicação de alteração de arquivo.

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

Parâmetros

  • pcszNewDirectoryPath
    [in, string] O novo caminho para o arquivo a ser alterado. O caminho é relativo ao diretório raiz. Se dwChangeType for FILESYNC_CHANGE_TYPE_DELETE, este valor é NULL. Se dwChangeType for FILESYNC_CHANGE_TYPE_RENAME, este será o novo caminho depois que o nome novo for aplicado.
  • pcszCurrentDirectoryPath
    [in, string] O caminho atual para o arquivo a ser alterado. O caminho é relativo ao diretório raiz. Se dwChangeType for FILESYNC_CHANGE_TYPE_CREATE, este valor é NULL. Se dwChangeType for FILESYNC_CHANGE_TYPE_RENAME, este será o caminho atual antes da aplicação do novo nome.
  • pNewFileInfo
    [in, unique] Os novos dados do arquivo a ser alterado. Se dwChangeType for FILESYNC_CHANGE_TYPE_DELETE, este valor é NULL. Se dwChangeType for FILESYNC_CHANGE_TYPE_RENAME, estes dados de arquivo representarão como o arquivo será depois da aplicação do novo nome.
  • pCurrentFileInfo
    [in, unique] Os dados atuais do arquivo a ser alterado. Se dwChangeType for FILESYNC_CHANGE_TYPE_DELETE, este valor é NULL. Se dwChangeType for FILESYNC_CHANGE_TYPE_RENAME, estes dados de arquivo representarão como o arquivo é atualmente antes da aplicação do novo nome.
  • dwChangeType
    [in] O tipo de alteração que será aplicado. Este valor é da enumeração FILESYNC_CHANGE_TYPE.
  • pfSkipChange
    [out] Indica se esta alteração deveria ser ignorada.

Valor de retorno

  • S_OK

  • Códigos de erro específicos de aplicativos

Comentários

Este evento fornece um mecanismo para o aplicativo ignorar, dinamicamente, as alterações durante uma sessão de sincronização. Para ignorar uma alteração, defina o valor de pfSkipChange como TRUE. Uma alteração ignorada não será aplicada à réplica de destino. Um evento IFileSyncProviderCallback::OnChangeSkipped será disparado por dwReason definido como FILESYNC_SKIP_REASON_APPLICATION_REQUEST para cada alteração que for ignorada.

Algumas alterações são tentadas mais de uma vez durante uma sessão. Em cada tentativa, este evento é disparado. Por exemplo, é feita uma tentativa de exclusão de uma pasta. Como existe um arquivo na pasta, a tentativa falha. Essa operação de exclusão de pasta continua a ser tentada durante toda a sessão até que a operação de exclusão seja executada ou até que seja determinado que essa operação não pode ocorrer durante esta sessão e ela seja ignorada.

Este evento só será gerado quando uma alteração afetar os dados do arquivo na réplica de destino, e não quando uma alteração afetar apenas os metadados de um arquivo. Por exemplo, se um conflito da atualização-atualização for detectado e o arquivo no sistema de destino for escolhido como o vencedor, nenhuma alteração será aplicada ao destino e este evento não será disparado. De forma semelhante, a propagação de uma marca de exclusão da origem para o destino causa apenas uma atualização de metadados e nenhuma alteração no sistema de arquivos de destino. Nesse caso, este evento não será disparado.

Se OnApplyingChange retornar um erro, o Sync Framework irá interromper o processamento do lote de alterações atual e retornar o código de erro do método ProcessChangeBatch de IFileSyncProvider.

Consulte também

Referência

Interface IFileSyncProviderCallback
Enumeração FILESYNC_CHANGE_TYPE