Unmanaged NTFS 提供者範例
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 |
範例用來儲存檔案系統中同步處理中繼資料的 Helper 類別。 |
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 檔案。
在 [建立] 功能表上選取 [BuildSolution]。
執行此範例
執行 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。