オフライン ファイル キャッシュ内のファイルとディレクトリを、該当するネットワーク共有フォルダー内の対応するコピーと同期します。
構文
HRESULT Synchronize(
[in] HWND hwndParent,
[in] LPCWSTR *rgpszPaths,
[in] ULONG cPaths,
[in] BOOL bAsync,
[in] DWORD dwSyncControl,
[in] IOfflineFilesSyncConflictHandler *pISyncConflictHandler,
[in] IOfflineFilesSyncProgress *pIProgress,
[in] GUID *pSyncId
);
パラメーター
[in] hwndParent
表示されるユーザー インターフェイス要素の親ウィンドウを識別します。 dwSyncControl パラメーターでOFFLINEFILES_SYNC_CONTROL_FLAG_INTERACTIVE フラグが設定されていない場合、このパラメーターは無視されます。
[in] rgpszPaths
同期するファイルまたはディレクトリの完全修飾 UNC パスへのポインターの配列。
[in] cPaths
rgpszPaths 配列内のパスの数。
[in] bAsync
操作を非同期に実行するかどうかを示します。 このパラメーターが TRUE の場合、操作はシステム スレッド プール内の別のスレッドに配置され、関数はすぐに返されます。 このパラメーターが FALSE の場合、関数は操作の完了時に を返します。
[in] dwSyncControl
同期操作全体の動作を制御するためのフラグ。 同期方向 (入力、出力)、LNK ターゲットのピン留め、新しいファイルのピン留めなどの動作は、これらのフラグを使用して制御されます。 次の一覧では、各フラグの意味について説明します。
OFFLINEFILES_SYNC_CONTROL_FLAG_FILLSPARSE (0x00000001)
キャッシュ内のスパース ファイルを入力します。 このフラグを設定すると、キャッシュ内のローカル コピーが列挙されます。 見つかったスパース キャッシュされたファイルは、スパースでなくなったように塗りつぶされます。 スパース キャッシュされたファイルは、オフラインで使用できません。 詳細については、 IOfflineFilesFileItem::IsSparse メソッドを 参照してください。
OFFLINEFILES_SYNC_CONTROL_FLAG_SYNCIN (0x00000002)
サーバーからローカル キャッシュへのリモート変更の同期。 このフラグを設定すると、 OFFLINEFILES_SYNC_CONTROL_FLAG_FILLSPARSE フラグも自動的に設定されます。
OFFLINEFILES_SYNC_CONTROL_FLAG_SYNCOUT (0x00000004)
ローカル キャッシュからサーバーにローカル変更を同期します。
OFFLINEFILES_SYNC_CONTROL_FLAG_PINNEWFILES (0x00000008)
固定されたディレクトリ内のサーバーで見つかった新しいファイルをピン留めします。 OFFLINEFILES_SYNC_CONTROL_FLAG_SYNCIN フラグが設定されていない場合、このフラグは無視されます。
OFFLINEFILES_SYNC_CONTROL_PINLINKTARGETS (0x00000010)
OFFLINEFILES_SYNC_CONTROL_FLAG_PINNEWFILES フラグが設定されている場合にのみ適用されます。 通常、シェル リンク (LNK 型) が固定されている場合、そのターゲットは自動的に固定されません。 このフラグを設定すると、LNK ファイルをピン留めすると、ターゲットがファイルである場合、ターゲットが自動的にピン留めされます。 ターゲットがディレクトリの場合、ターゲットは自動的に固定されません。
OFFLINEFILES_SYNC_CONTROL_FLAG_PINFORUSER (0x00000020)
OFFLINEFILES_SYNC_CONTROL_FLAG_PINNEWFILES フラグが設定されている場合にのみ適用されます。 呼び出し元ユーザーの項目をピン留めします。 これは通常、この関数の呼び出し元に設定されるフラグです。 オフライン ファイルでは、ユーザーごとのピン留めの真の概念がサポートされていないことに注意してください。 ユーザーに対して項目がピン留めされると、そのマシンのすべてのユーザーに対して固定されます。 ただし、ピン留めされたファイルにアクセスする機能は、オンライン中に計算されたそのファイルに対するユーザーのアクセス権によって異なります。
OFFLINEFILES_SYNC_CONTROL_FLAG_PINFORUSER_POLICY (0x00000040)
OFFLINEFILES_SYNC_CONTROL_FLAG_PINNEWFILES フラグが設定されている場合にのみ適用されます。 ユーザーごとのポリシーの項目をピン留めします。 これは、オフライン ファイル ユーザー インターフェイスを使用してユーザーがこのフラグを変更できないという点で、 OFFLINEFILES_SYNC_CONTROL_FLAG_PINFORUSER フラグとは異なります。 内部的には、オフライン ファイルは、アイテムがグループ ポリシー拡張機能によってピン留めされている場合に、このフラグを設定します。
OFFLINEFILES_SYNC_CONTROL_FLAG_PINFORALL (0x00000080)
OFFLINEFILES_SYNC_CONTROL_FLAG_PINNEWFILES フラグが設定されている場合にのみ適用されます。 ローカル コンピューターのすべてのユーザーの項目をピン留めします。 ピン留めされた状態はすべてのユーザーに適用されますが、ピン留めされたファイルにアクセスする機能は、オンライン時に計算されたそのファイルに対するユーザーのアクセス権によって異なります。
OFFLINEFILES_SYNC_CONTROL_FLAG_PINFORREDIR (0x00000100)
OFFLINEFILES_SYNC_CONTROL_FLAG_PINNEWFILES フラグが設定されている場合にのみ適用されます。 呼び出し元ユーザーのフォルダー リダイレクトの目的でアイテムをピン留めします。 Windows フォルダー リダイレクトは、リダイレクトされたフォルダーをピン留めするときにこのフラグを設定します。
OFFLINEFILES_SYNC_CONTROL_FLAG_LOWPRIORITY (0x00000200)
このフラグは将来利用するために予約されています。
OFFLINEFILES_SYNC_CONTROL_FLAG_ASYNCPROGRESS (0x00000400)
進行状況は、実際の操作と非同期的に進行状況インターフェイスに報告されます。 動作の詳細については、「非同期進行状況通知」セクションを参照してください。 このフラグが設定されていない場合、進行状況は各操作と同期的に報告されます。
OFFLINEFILES_SYNC_CONTROL_FLAG_INTERACTIVE (0x00000800)
操作で必要に応じてユーザー インターフェイス要素を表示できる場合は、このフラグを設定します。 たとえば、システムの資格情報要求ダイアログです。 このフラグが設定されている場合、hwndParent の値は、表示されるすべてのユーザー インターフェイス要素の親として使用されます。
OFFLINEFILES_SYNC_CONTROL_FLAG_CONSOLE (0x00001000)
OFFLINEFILES_SYNC_CONTROL_FLAG_INTERACTIVE フラグが設定されていない場合、このフラグは無視されます。 OFFLINEFILES_SYNC_CONTROL_FLAG_INTERACTIVE フラグが設定されている場合、このフラグは、生成されたすべての UI が、操作を呼び出すプロセスに関連付けられているコンソール ウィンドウに送信されることを示します。
OFFLINEFILES_SYNC_CONTROL_FLAG_SKIPSUSPENDEDDIRS (0x00002000)
同期操作で中断されたディレクトリ ツリーを同期しない場合は、このフラグを設定します。 このフラグは、ユーザーが対話形式で意図的に同期操作を呼び出していない場合に設定することをお勧めします。
OFFLINEFILES_SYNC_CONTROL_FLAG_BACKGROUND (0x00010000)
同期操作で現在開いているファイルをアプリケーションが開きたい場合に共有違反を回避するには、このフラグを設定します。 そのシナリオが発生し、このフラグが設定されると、同期操作は "バックオフ" され、その時点でその特定のファイルに対して完了しません。 このフラグは、主に内部操作のためにオフライン ファイル サービスによって使用されます。
OFFLINEFILES_SYNC_CONTROL_FLAG_NONEWFILESOUT (0x00020000)
OFFLINEFILES_SYNC_CONTROL_FLAG_SYNCOUT フラグが設定されていない場合、このフラグは無視されます。 OFFLINEFILES_SYNC_CONTROL_FLAG_SYNCOUT フラグが設定されている場合、このフラグは、クライアントにのみ存在する新しいファイルがサーバー上に作成されないことを示します。
IOfflineFilesSyncConflictHandler の実装を提供するのではなく、すべての同期の競合を "ローカルの保持"、"リモートの保持"、または "最新の状態に保つ" 方法で解決する場合は、次のフラグ値の 1 つ (および 1 つだけ) を設定します。 pISyncConflictHandler パラメーターが NULL でない場合、これらのフラグ値は無視されることに注意してください。
OFFLINEFILES_SYNC_CONTROL_CR_KEEPLOCAL (0x10000000)
ローカル コピーをサーバーに同期します。
OFFLINEFILES_SYNC_CONTROL_CR_KEEPREMOTE (0x20000000)
リモート コピーをローカル キャッシュに同期します。
OFFLINEFILES_SYNC_CONTROL_CR_KEEPLATEST (0x30000000)
コピーは最新の最終変更時刻のままにします。 この解決策は、"最後のライター優先" と呼ばれることもあります。
[in] pISyncConflictHandler
競合ハンドラーの実装への IOfflineFilesSyncConflictHandler インターフェイス ポインター。 指定した場合、同期操作は競合ハンドラーを呼び出して、操作中に発生した同期の競合を解決します。 ハンドラーは競合の種類を記述するコードを受け取り、競合が解決されたかどうかを示すコードまたは同期操作によって実行されるその他のアクションを返します。 このパラメーターは省略可能であり、 NULL にすることができます。 このパラメーターが NULL の場合、既定のアクションはオフライン ファイル サービスで実行されます。 通常、これにより、ユーザーの同期競合ストアに競合が記録され、後で同期センターに表示されます。
[in] pIProgress
操作中に進行状況イベントを受信するイベント シンクへのインターフェイス。 このパラメーターは省略可能であり、 NULL にすることができます。
[in] pSyncId
この同期操作に適用される一意の ID。 この ID は、この操作に関連するすべての発行済みイベント (IOfflineFilesEvents) に含まれます。 このパラメーターは省略可能であり、 NULL にすることができます。
戻り値
成功した場合 はS_OK を返し、それ以外の場合はエラー値を返します。
操作が HRESULT_FROM_WIN32(ERROR_CANCELLED) 取り消された場合は を返します。
IOfflineFilesSyncProgress イベントを監視して、個々のファイルに関連するエラーを検出します。
注釈
bAsync パラメーターが TRUE の場合、呼び出し元は pIProgress パラメーターを介してイベント インターフェイスを提供する必要があります。 Synchronize メソッドは、操作の開始時にイベント インターフェイスの参照カウントをインクリメントし、操作が完了したときに参照カウントを減らします。 そのため、イベント シンクの実装では、操作全体にわたってモジュールがメモリ内に残るように、ホスト モジュールの参照カウントをインクリメントすることをお勧めします。
進行中に同期操作が取り消された場合、その時点まで同期されたファイルは同期されたままになります。
rgpszPaths パラメーターにパスが 1 つだけ指定されていて、そのパスが 1 つのファイルに対する場合、戻り値はその単一の同期操作の結果を示します。 それ以外の場合、呼び出し元は次の一覧に進行状況コールバック メソッドを実装し、 IOfflineFilesSyncProgress::SyncItemResult メソッドを監視して、処理された各ファイルとディレクトリの結果を取得する必要があります。
| 進行状況イベント インターフェイス | メソッド | 説明 |
|---|---|---|
| IOfflineFilesProgress | 開始 | 操作の開始時に呼び出されます。 |
| IOfflineFilesSyncProgress | SyncItemBegin | 各ファイルの処理の開始時に呼び出されます。 |
| IOfflineFilesSyncProgress | SyncItemResult | 各ファイルが同期された後に呼び出されます。 |
| IOfflineFilesProgress | QueryAbort | 同期操作中に定期的に呼び出され、キャンセル要求を検出します。 |
| IOfflineFilesProgress | End | 操作の最後に呼び出されます。 |
呼び出し元のコードでもパブリッシュされた同期イベントをリッスンする場合は、 pSyncId パラメーターを使用して同期 ID を指定できます。 同じ ID 値は、この操作から生成された SyncBegin、 SyncFileResult、および SyncEnd 発行イベント (IOfflineFilesEvents) を介して送信されます。
要件
| 要件 | 値 |
|---|---|
| サポートされている最小のクライアント | Windows Vista |
| サポートされている最小のサーバー | Windows Server 2008 |
| 対象プラットフォーム | Windows |
| ヘッダー | cscobj.h |
| [DLL] | CscSvc.dll;CscObj.dll |
こちらもご覧ください
IOfflineFilesEvents2::BackgroundSyncBegin