Exemple de fournisseur NTFS non managé

L'exemple NTFSProvider vous explique comment utiliser C++ pour implémenter un fournisseur de synchronisation qui synchronise les fichiers dans un dossier de fichiers. À des fins de simplicité, cet exemple ne gère pas les sous-dossiers.

Security noteSécurité Remarque

Cet exemple de code est fourni pour illustrer un concept. Dans la mesure où il est possible que l'exemple n'utilise pas les pratiques de codage les plus sécurisées, le code ne doit pas être utilisé dans les applications ou les sites Web. Microsoft décline toute responsabilité pour tout dommage indirect ou consécutif à l'utilisation de l'exemple de code à des fins autres que celles prévues.

Emplacement des fichiers

Les fichiers de cet exemple se trouvent à l'emplacement où Sync Framework est installé. L'emplacement par défaut est C:\Program Files (x86)\Microsoft SDKs\Microsoft Sync Framework\v1.0\Samples\NTFSSample.

Contenu

Cet exemple contient deux projets dans une solution Microsoft Visual Studio :

  • NTFSProvider. Est l'implémentation du fournisseur de synchronisation.

  • SampleTest. Est une application de synchronisation simple.

Fichiers

Le projet NTFSProvider contient les fichiers suivants.

Fichier source Description

MetadataStore.h, MetadataStore.cpp

Classe d'assistance que l'exemple utilise pour stocker les métadonnées de synchronisation dans le système de fichiers.

MyStore.h, MyStore.cpp

Classe du fournisseur de synchronisation. Elle implémente IKnowledgeSyncProvider, ISyncProvider, ISynchronousDataRetriever et ISynchronousNotifyingChangeApplierTarget pour participer à la synchronisation.

MyTransferMechanism.h, MyTransferMechanism.cpp

Classe qui encapsule un flux de fichiers et implémente IUnknown. Une instance de cette classe est passée d'un fournisseur à un autre et est utilisée pour copier les données du fichier réelles pendant la synchronisation.

Le projet SampleTest contient les fichiers suivants.

Fichier source Description

SyncController.h, SyncController.cpp

Classe qui crée et héberge l'objet de session de synchronisation. Cette classe implémente également ISyncCallback et des registres pour recevoir des événements de synchronisation de l'objet de session.

SyncMain.cpp

Point d'entrée à l'application. Il analyse la ligne de commande, instancie les fournisseurs et l'objet contrôleur, les connecte tous entre eux, puis démarre la synchronisation.

Interfaces

Cet exemple illustre les interfaces Sync Framework suivantes :

IKnowledgeSyncProvider

IEnumSyncChanges

ISyncProvider

ISyncChange

ISynchronousDataRetriever

IForgottenKnowledge

ISynchronousNotifyingChangeApplierTarget

ISynchronousNotifyingChangeApplier

ISyncCallback

ILoadChangeContext

ISyncKnowledge

ISaveChangeContext

ISyncChangeBatch

IApplicationSyncServices

IProviderSyncServices

ISyncSession

Spécifications

Pour générer et exécuter cet exemple, les logiciels suivants doivent être installés :

  • Microsoft Visual Studio 2005 ou Visual Studio 2008

Génération de l'exemple

Pour générer l'exemple à l'aide de Visual Studio

  1. Ouvrez le fichier NTFSProvider.sln.

  2. Dans le menu Générer, sélectionnez BuildSolution.

Exécution de l'exemple

Pour exécuter SampleTest.exe

  1. Dans le dossier racine, créez deux dossiers : Folder1 et Folder2.

  2. Ajoutez du contenu, tel que des fichiers texte, aux dossiers. Assurez-vous que le contenu de Folder1 est différent du contenu de Folder2.

  3. Pour exécuter l'exemple à une invite de commandes, ouvrez une fenêtre d'invite de commandes et localisez le dossier qui contient SampleTest.exe. À l'invite de commandes, tapez : SampleTest.exe C:\Folder1 C:\Folder2.

  4. Pour exécuter l'exemple dans Visual Studio, ouvrez les Pages de propriétés pour le projet SampleTest. Dans le champ Débogage Arguments de la commande, tapez : C:\Folder1 C:\Folder2. Dans le menu Déboguer, cliquez sur Démarrer le débogage.

  5. Une fois l'exemple terminé, Folder1 et Folder2 contiennent le même ensemble de fichiers. Les dossiers incluent également des fichiers qui contiennent des métadonnées de synchronisation, par exemple Knowledge.Sync, Metadata.Sync, Replica.Sync et TickCount.Sync.

Voir aussi

Concepts

Composants principaux de Sync Framework

Autres ressources

Exemples de synchronisation de données personnalisées