NTFSProvider 示例说明如何使用 C++ 来实现用于同步文件夹中的文件的同步提供程序。为了简单起见,此示例不处理子文件夹。
![]() |
---|
此示例代码仅用于阐述概念。由于示例可能没有使用最安全的编码方法,因此不应在应用程序或网站中使用此代码。如果将此示例代码用于非预期目的,对于由此导致的偶然或连带的损失,Microsoft 概不负责。 |
文件位置
此示例的文件位于安装 Sync Framework 的位置。默认位置是 C:\Program Files (x86)\Microsoft SDKs\Microsoft Sync Framework\v1.0\Samples\NTFSSample。
内容
此示例包含 Microsoft Visual Studio 解决方案中的两个项目:
**NTFSProvider:**是同步提供程序实现。
**SampleTest:**是简单的同步应用程序。
文件
NTFSProvider 项目包含以下文件:
源文件 | 说明 |
---|---|
MetadataStore.h,MetadataStore.cpp |
一个帮助器类,示例使用它在文件系统中存储同步元数据。 |
MyStore.h,MyStore.cpp |
同步提供程序类。它实现 IKnowledgeSyncProvider、ISyncProvider、ISynchronousDataRetriever 和 ISynchronousNotifyingChangeApplierTarget 以参与同步。 |
MyTransferMechanism.h,MyTransferMechanism.cpp |
封装文件流并实现 IUnknown 的类。在同步期间,将此类的实例从一个提供程序传递到另一个提供程序并用于复制实际文件数据。 |
SampleTest 项目包含以下文件:
源文件 | 说明 |
---|---|
SyncController.h,SyncController.cpp |
创建并承载同步会话对象的类。此类还实现 ISyncCallback 并进行注册以从会话对象接收同步事件。 |
SyncMain.cpp |
应用程序的入口点。它分析命令行,将提供程序和控制器对象实例化,使所有提供程序和控制器对象相互连接并启动同步。 |
接口
此示例演示以下 Sync Framework 接口:
IKnowledgeSyncProvider |
IEnumSyncChanges |
ISyncProvider |
ISyncChange |
ISynchronousDataRetriever |
IForgottenKnowledge |
ISynchronousNotifyingChangeApplierTarget |
ISynchronousNotifyingChangeApplier |
ISyncCallback |
ILoadChangeContext |
ISyncKnowledge |
ISaveChangeContext |
ISyncChangeBatch |
IApplicationSyncServices |
IProviderSyncServices |
ISyncSession |
要求
若要生成并运行此示例,必须安装以下软件:
- Microsoft Visual Studio 2005 或 Visual Studio 2008
生成示例
使用 Visual Studio 生成示例
打开 NTFSProvider.sln 文件。
在**“生成”菜单上,选择“生成解决方案”**。
运行示例
运行 SampleTest.exe
在根文件夹中,创建两个文件夹:Folder1 和 Folder2。
将某些内容(如文本文件)添加到这些文件夹。请确保 Folder1 和 Folder2 的内容不相同。
若要在命令提示符下运行示例,请打开“命令提示符”窗口并找到包含 SampleTest.exe 的文件夹。在命令提示符下,键入:SampleTest.exe C:\Folder1 C:\Folder2。
若要在 Visual Studio 中运行示例,请打开 SampleTest 项目的**“属性页”。在“调试命令参数”字段中,键入:C:\Folder1 C:\Folder2。在“调试”菜单上,单击“启动调试”**。
示例完成后,Folder1 和 Folder2 将包含相同的一组文件。这些文件夹还包含含有同步元数据的文件,如 Knowledge.Sync、Metadata.Sync、Replica.Sync 和 TickCount.Sync。