同期対象のファイルの制御

Sync Framework には、同期スコープに含められるファイルおよびサブフォルダーを制御するための方法がいくつか用意されています。静的フィルターを使用すると、プロバイダーを初期化するときにアプリケーションによって指定される設定に基づいてファイルおよびサブフォルダーを同期スコープから除外したり含めたりできます。動的フィルター選択は、登録することでアプリケーションで受信できる、イベント通知を使用して実現できます。

除外されサポートされないファイルとフォルダーの種類

次のファイルは、常に同期スコープから除外され、完全に無視されます。

  • Thumbs.db (hidden 属性と system 属性が設定されている場合)

  • Desktop.ini (hidden 属性と system 属性が設定されている場合)

  • プロバイダーが初期化されたときに指定されたメタデータ ファイル

  • offline 属性または device 属性が設定されているファイル

  • reparse point 属性が設定されているフォルダー

ブリーフケース フォルダーが格納されたフォルダーはサポートされないため、同期スコープに含めないでください。

静的フィルター

静的フィルターを設定することで、名前 (ワイルドカード名を含む) および属性に基づいてファイルを除外できます。また、静的フィルターを設定することでサブフォルダーの内容全体を除外できますが、サブフォルダーではワイルドカードがサポートされません。さらに、同期スコープに含めるファイル名 (ワイルドカード名を含む) の明示的なリストを指定することもできます。ファイルまたはフォルダーをスコープに含める場合、ファイルまたはフォルダーはすべてのフィルターを通過する必要があります。たとえば、拡張子が .txt のすべてのファイルをスコープから除外する一方で、スコープに明示的に含めるファイルのリストに MyFile.txt を指定している場合、MyFile.txt は拡張子 .txt を持つのでスコープから除外されます。

マネージ コードを使用して静的フィルターを指定するには

  1. FileSyncScopeFilter オブジェクトを作成します。除外プロパティまたは包含プロパティは、FileSyncScopeFilter コンストラクターに設定します。たとえば、拡張子が .txt のすべてのファイルを同期スコープから除外するには、fileNameExcludes パラメーターに "*.txt" を指定します。

  2. フィルターを FileSyncProvider コンストラクターに渡します。このプロバイダーを同期セッションで同期元プロバイダーとして使用すると、指定されたフィルターを通過したファイルのみが同期スコープに含められます。

アンマネージ コードを使用して静的フィルターを指定するには

  1. IFileSyncProvider::CreateNewScopeFilter を使用して、IFileSyncScopeFilter オブジェクトを作成します。

  2. 除外プロパティまたは包含プロパティをフィルター オブジェクトに設定します。たとえば、拡張子が .txt のすべてのファイルを同期スコープから除外するには、IFileSyncScopeFilter::SetFilenameExcludes メソッドに "*.txt" を指定します。

  3. フィルターを IFileSyncProvider::Initialize に渡します。このプロバイダーを同期セッションで同期元プロバイダーとして使用すると、指定されたフィルターを通過したファイルのみが同期スコープに含められます。

ファイルのスキップ

プロバイダーによって発生したイベントを処理することで、同期中にファイルを動的にスキップできます。このイベントは、変更の適用時に発生します。このイベントは、変更が同期先レプリカに適用される前に、1 つの変更ごとに 1 回、同期先プロバイダーによって発生します。このイベントを受け取ったイベント ハンドラーは、変更を同期先レプリカに適用しないことを指定できます。

マネージ コード : ApplyingChange イベントのハンドラーを登録します。変更をスキップするには、イベント ハンドラーの SkipChange プロパティの値を true に変更します。

アンマネージ コード : IFileSyncProviderCallback オブジェクトを IFileSyncProvider::Initialize に渡して、イベント通知を受信するための登録を行います。変更をスキップするには、IFileSyncProviderCallback::OnApplyingChange の pfSkipChange パラメーターの値を TRUE に設定します。

参照

リファレンス

IFileSyncScopeFilter インターフェイス
IFileSyncProviderCallback インターフェイス
FileSyncScopeFilter

概念

ファイルの同期