Contrôle des fichiers qui sont synchronisés
Sync Framework fournit plusieurs façons de contrôler les fichiers et sous-dossiers qui sont inclus dans l'étendue de synchronisation. Les filtres statiques excluent ou incluent des fichiers et sous-dossiers selon les paramètres spécifiés par l'application lorsque le fournisseur est initialisé. Le filtrage dynamique est obtenu en utilisant une notification d'événements que l'application peut recevoir en s'inscrivant.
Types de fichiers et de dossiers exclus et non pris en charge
Les fichiers suivants sont toujours exclus de l'étendue de synchronisation et sont complètement ignorés :
Thumbs.db lorsque les attributs hidden et system sont définis.
Desktop.ini lorsque les attributs hidden et system sont définis.
Fichier de métadonnées spécifié quand le fournisseur a été initialisé.
Fichier pour lequel l'attribut offline ou device est défini.
Dossier pour lequel l'attribut reparse point est défini.
Les dossiers qui contiennent des dossiers Porte-documents ne sont pas pris en charge et ne doivent pas être inclus dans les étendues de synchronisation.
Filtres statiques
Les filtres statiques peuvent être configurés pour exclure des fichiers par nom (y compris les noms génériques) et par attribut. Les filtres statiques peuvent également être configurés pour exclure le contenu de sous-dossiers entiers, mais les caractères génériques ne sont pas pris en charge pour les sous-dossiers. Par ailleurs, une liste explicite de noms de fichiers à inclure (y compris les noms génériques) peut être spécifiée. Pour être inclus dans l'étendue, un fichier ou un dossier doit répondre à tous les filtres. Par exemple, si tous les fichiers qui ont une extension .txt sont exclus de l'étendue et que MyFile.txt est spécifié dans la liste des fichiers à inclure explicitement dans l'étendue, MyFile.txt sera exclu de l'étendue à cause de son extension .txt.
Pour spécifier un filtre statique en utilisant le code managé
Créez un objet FileSyncScopeFilter. Les propriétés d'inclusion ou d'exclusion sont définies dans le constructeur FileSyncScopeFilter, par exemple en spécifiant "*.txt" pour le paramètre fileNameExcludes afin d'exclure tous les fichiers qui ont une extension .txt de l'étendue de synchronisation.
Passez le filtre au constructeur FileSyncProvider. Lorsque ce fournisseur est utilisé comme fournisseur de source dans une session de synchronisation, seuls les fichiers qui répondent aux filtres spécifiés seront inclus dans l'étendue de synchronisation.
Pour spécifier un filtre statique en utilisant le code non managé
Créez un objet IFileSyncScopeFilter en utilisant IFileSyncProvider::CreateNewScopeFilter.
Définissez des propriétés d'inclusion ou d'exclusion sur l'objet filtre, par exemple en spécifiant "*.txt" pour la méthode IFileSyncScopeFilter::SetFilenameExcludes afin d'exclure tous les fichiers qui ont une extension .txt de l'étendue de synchronisation.
Passez le filtre à IFileSyncProvider::Initialize. Lorsque ce fournisseur est utilisé comme fournisseur de source dans une session de synchronisation, seuls les fichiers qui répondent aux filtres spécifiés seront inclus dans l'étendue de synchronisation.
Omission de fichiers
Les fichiers peuvent être ignorés dynamiquement pendant la synchronisation en gérant un événement déclenché par le fournisseur. Cet événement se produit pendant l'application des modifications. Il est déclenché par le fournisseur de destination une fois pour chaque modification, avant que la modification ne soit appliquée au réplica de destination. Lorsque le gestionnaire d'événements reçoit l'événement, il peut spécifier que la modification ne doit pas être appliquée au réplica de destination.
Code managé Inscrivez un gestionnaire pour l'événement ApplyingChange. Pour ignorer une modification, affectez la valeur true à la propriété SkipChange dans le gestionnaire d'événements.
Code non managé Passez un objet IFileSyncProviderCallback à IFileSyncProvider::Initialize pour vous inscrire pour recevoir des notifications d'événements. Pour ignorer une modification, affectez la valeur TRUE au paramètre pfSkipChange dans IFileSyncProviderCallback::OnApplyingChange.