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