IFileSyncProviderCallback::OnApplyingChange
Se produit lorsqu'une application de modification de fichier est sur le point d'être tentée.
Syntaxe
HRESULT OnApplyingChange(
LPCWSTR pcszNewDirectoryPath,
LPCWSTR pcszCurrentDirectoryPath,
const WIN32_FIND_DATAW *pNewFileInfo,
const WIN32_FIND_DATAW *pCurrentFileInfo,
DWORD dwChangeType,
BOOL *pfSkipChange);
Paramètres
pcszNewDirectoryPath
[in, string] Nouveau chemin d'accès du fichier à modifier. Le chemin d'accès est relatif au répertoire racine. Si dwChangeType a la valeur FILESYNC_CHANGE_TYPE_DELETE, cette valeur est NULL. Si dwChangeType a la valeur FILESYNC_CHANGE_TYPE_RENAME, il s'agit du nouveau chemin d'accès, après l'application du nouveau nom.pcszCurrentDirectoryPath
[in, string] Chemin d'accès actuel du fichier à modifier. Le chemin d'accès est relatif au répertoire racine. Si dwChangeType a la valeur FILESYNC_CHANGE_TYPE_CREATE, cette valeur est NULL. Si dwChangeType a la valeur FILESYNC_CHANGE_TYPE_RENAME, il s'agit du chemin d'accès actuel, avant l'application du nouveau nom.pNewFileInfo
[in, unique] Nouvelles données du fichier à modifier. Si dwChangeType a la valeur FILESYNC_CHANGE_TYPE_DELETE, cette valeur est NULL. Si dwChangeType a la valeur FILESYNC_CHANGE_TYPE_RENAME, ces données de fichier représentent le fichier tel qu'il sera après l'application du nouveau nom.pCurrentFileInfo
[in, unique] Données actuelles du fichier à modifier. Si dwChangeType a la valeur FILESYNC_CHANGE_TYPE_DELETE, cette valeur est NULL. Si dwChangeType a la valeur FILESYNC_CHANGE_TYPE_RENAME, ces données de fichier représentent le fichier tel qu'il est actuellement, avant l'application du nouveau nom.dwChangeType
[in] Type de modification à appliquer. Cette valeur provient de l'énumération FILESYNC_CHANGE_TYPE.pfSkipChange
[out] Indique si cette modification doit être ou non ignorée.
Valeur de retour
S_OK
Codes d'erreur propres à l'application.
Notes
Cet événement fournit à l'application un mécanisme permettant d'ignorer dynamiquement des modifications pendant une session de synchronisation. Pour ignorer une modification, affectez à pfSkipChange la valeur TRUE. Une modification ignorée ne sera pas appliquée au réplica de destination. Un événement IFileSyncProviderCallback::OnChangeSkipped sera déclenché avec dwReason ayant comme valeur FILESYNC_SKIP_REASON_APPLICATION_REQUEST pour chaque modification ignorée.
Certaines modifications sont tentées plusieurs fois au cours d'une session. À chaque tentative, cet événement est déclenché. Par exemple, une tentative est effectuée pour supprimer un dossier. Parce qu'il y a un fichier existant dans le dossier, la tentative échoue. Cette opération de suppression de dossiers continue d'être tentée pendant toute la session jusqu'au succès de l'opération de suppression ou tant qu'il n'a pas été déterminé que l'opération de suppression ne peut pas avoir lieu pendant cette session et est ignorée.
Cet événement est déclenché uniquement lorsqu'une modification affecte les données du fichier sur le réplica de destination et non lorsqu'une modification affecte seulement les métadonnées d'un fichier. Par exemple, si un conflit de mise à jour de mise à jour est détecté et que le fichier sur le système de destination est choisi en tant que vainqueur, aucune modification n'est appliquée à la destination et cet événement n'est pas déclenché. De même, la propagation d'un objet tombstone de la source à la destination provoque la mise à jour des seules métadonnées et aucune modification n'est apportée au système de fichiers de destination. Dans ce cas, cet événement n'est pas déclenché.
Si OnApplyingChange retourne une erreur, Sync Framework arrête le traitement du lot de modifications en cours et retourne le code d'erreur à partir de la méthode ProcessChangeBatch d'IFileSyncProvider.