Compartir a través de


IFileSyncProviderCallback::OnApplyingChange

Se produce cuando se está a punto de intentar una aplicación de cambios en un archivo.

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] Nueva ruta de acceso al archivo que se va a cambiar. La ruta de acceso es relativa al directorio raíz. Si dwChangeType es FILESYNC_CHANGE_TYPE_DELETE, este valor es NULL. Si dwChangeType es FILESYNC_CHANGE_TYPE_RENAME, esta es la nueva ruta de acceso una vez aplicado el nuevo nombre.
  • pcszCurrentDirectoryPath
    [in, string] Ruta de acceso actual al archivo que se va a cambiar. La ruta de acceso es relativa al directorio raíz. Si dwChangeType es FILESYNC_CHANGE_TYPE_CREATE, este valor es NULL. Si dwChangeType es FILESYNC_CHANGE_TYPE_RENAME, esta es la ruta de acceso actual antes de la aplicación del nuevo nombre.
  • pNewFileInfo
    [in, unique] Datos del archivo nuevo para el archivo que se va a cambiar. Si dwChangeType es FILESYNC_CHANGE_TYPE_DELETE, este valor es NULL. Si dwChangeType es FILESYNC_CHANGE_TYPE_RENAME, estos datos de archivo representan el archivo tal como será después de que se le aplique el nuevo nombre.
  • pCurrentFileInfo
    [in, unique] Datos del archivo actual para el archivo que se va a cambiar. Si dwChangeType es FILESYNC_CHANGE_TYPE_DELETE, este valor es NULL. Si dwChangeType es FILESYNC_CHANGE_TYPE_RENAME, estos datos de archivo representan el archivo en su estado actual, antes de que se le aplique el nuevo nombre.
  • dwChangeType
    [in] Tipo de cambio que se debe aplicar. Este valor es de la enumeración FILESYNC_CHANGE_TYPE.
  • pfSkipChange
    [out] Indica si se debe omitir este cambio.

Valor devuelto

  • S_OK

  • Códigos de error específicos de la aplicación

Notas

Este evento proporciona un mecanismo para que la aplicación omita dinámicamente los cambios durante una sesión de sincronización. Para omitir un cambio, establezca el valor de pfSkipChange en TRUE. Un cambio omitido no se aplicará a la réplica de destino. Se desencadenará un evento IFileSyncProviderCallback::OnChangeSkipped con dwReason establecido en FILESYNC_SKIP_REASON_APPLICATION_REQUEST para cada cambio omitido.

Para algunos cambios, se produce más de un intento en el transcurso de una sesión. Se desencadena este evento en cada intento. Por ejemplo, se realiza un intento de eliminar una carpeta. Dado que existe un archivo en la carpeta, se produce un error en el intento. Esta operación de eliminación de la carpeta se seguirá intentando a lo largo de la sesión hasta que la operación de eliminación tenga éxito o se determine que la operación de eliminación no se puede producir durante esta sesión y sea omitida.

Solo se desencadenará este evento cuando un cambio afecte a los datos de un archivo de la réplica de destino y no cuando afecte únicamente a los metadatos de un archivo. Por ejemplo, si se detecta un conflicto de actualización-actualización y se elige como ganador el archivo del sistema de destino, no se aplicará ningún cambio en el destino y no se desencadenará este evento. De igual forma, propagar un marcador de exclusión del origen al destino solo produce una actualización de los metadatos y no provoca ningún cambio en el sistema de archivos de destino. En este caso, este evento no se desencadenará.

Si OnApplyingChange devuelve un error, Sync Framework detiene el procesamiento del lote de cambios actual y devuelve el código de error desde el método ProcessChangeBatch de IFileSyncProvider.

Vea también

Referencia

Interfaz IFileSyncProviderCallback
Enumeración FILESYNC_CHANGE_TYPE