ISyncSessionState::OnProgress
同期の進行状況をアプリケーションに報告します。
HRESULT OnProgress(
SYNC_PROVIDER_ROLE provider,
SYNC_PROGRESS_STAGE syncStage,
DWORD dwCompletedWork,
DWORD dwTotalWork);
パラメータ
- provider
[in] このイベントを送信するプロバイダのロールです。
- syncStage
[in] 同期セッションの現在の段階です。
- dwCompletedWork
[in] セッション内で現在完了している作業量です。この値は、dwTotalWork の一部として解釈されます。
- dwTotalWork
[in] セッションの作業の合計です。
戻り値
S_OK
E_INVALIDARG (provider または syncStage が有効な値ではない場合)
解説
このメソッドは、カスタム進行状況をアプリケーションに報告する場合に使用できます。プロバイダがこのメソッドを呼び出すと、ISyncCallback::OnProgress イベントが発生します。
syncStage に SPS_CHANGE_APPLICATION を指定すると、Sync Framework は、ISyncSessionState::OnProgress を呼び出すたびに dwCompletedWork で指定された完了済みの合計作業量を累積します。また、Sync Framework は、dwTotalWork をセッションの残りの作業と解釈し、完了済みの作業の累積値に dwTotalWork を加えることによってセッションの合計作業量を計算します。次に、Sync Framework は、これらの計算値を ISyncCallback::OnProgress に渡します。syncStage がその他の有効値の場合は、dwCompletedWork と dwTotalWork が直接 ISyncCallback::OnProgress に渡されます。
同期元プロバイダが作業見積もりを指定する場合、プロバイダが ISyncSessionState::OnProgress を呼び出して syncStage に SPS_CHANGE_APPLICATION を指定すると、予期しない結果が生じる可能性があります。これは、変更の適用中に進行状況の通知が送信されるたびに、完了済みの作業の合計値を Sync Framework が計算するためです。プロバイダが独自の進行状況通知を送信し、syncStage に SPS_CHANGE_APPLICATION を指定する場合は、Sync Framework は、プロバイダが指定した作業見積もり値をセッションの合計完了作業量に加えます。これによって同じ作業が 2 回数えられます。1 回は Sync Framework が報告するとき、もう 1 回はプロバイダが報告するときです。