ISyncMgrSyncCallback::ReportProgress メソッド (syncmgr.h)
1 つの同期項目の同期の進行状況を同期センターに報告します。
構文
HRESULT ReportProgress(
[in] LPCWSTR pszItemID,
[in] LPCWSTR pszProgressText,
[in] SYNCMGR_PROGRESS_STATUS nStatus,
[in] ULONG uCurrentStep,
[in] ULONG uMaxStep,
[out] SYNCMGR_CANCEL_REQUEST *pnCancelRequest
);
パラメーター
[in] pszItemID
種類: LPCWSTR
現在同期されている項目の一意の ID を含むバッファーへのポインター。 この文字列は、終端の null 文字を含む最大長MAX_SYNCMGR_IDです。
[in] pszProgressText
種類: LPCWSTR
このアイテムのカスタム進行状況メッセージング用の Unicode 文字列を含むバッファーへのポインター。
[in] nStatus
同期の現在の進行状況を示す SYNCMGR_PROGRESS_STATUS 列挙からの値。
[in] uCurrentStep
種類: ULONG
同期の現在のステップ。 SYNCMGR_PS_UPDATING_INDETERMINATE フラグが nStatus で設定されている場合、このパラメーターは無視されます。
[in] uMaxStep
種類: ULONG
アイテムの同期を完了するために必要なステップの合計数。 SYNCMGR_PS_UPDATING_INDETERMINATE フラグが nStatus で設定されている場合、このパラメーターは無視されます。
[out] pnCancelRequest
このメソッドが戻るときに、キャンセル要求の性質を指定する SYNCMGR_CANCEL_REQUEST 列挙の値 (存在する場合) をポイントします。
戻り値
型: HRESULT
このメソッドは、成功すると S_OK を返します。 そうでない場合は、HRESULT エラー コードを返します。
注釈
個々の同期項目ではなくハンドラーの進行状況を報告する場合は、 ISyncMgrSyncCallback::SetHandlerProgressText を呼び出します。
同期が取り消された場合、ハンドラーはアイテムに対して ISyncMgrSyncCallback::ReportProgress を最後に 1 回呼び出し、nStatus パラメーターに SYNCMGR_PS_CANCELEDを指定して取り消し要求を確認します。 これにより UI が更新され、ユーザーはその項目の同期を再開することもできます。
このメソッドが完了状態 (SYNCMGR_PS_SUCCEEDED、 SYNCMGR_PS_FAILED、または SYNCMGR_PS_CANCELED) を報告すると、それ以上の状態レポートを 作成できるのはSYNCMGR_PS_FAILEDだけです。 その他の値を指定すると、このメソッドは E_ACCESSDENIEDを返し、同期センターで項目を失敗としてマークします。
このメソッドは Progress を置き換えます。
進行状況文字列の最大長はMAX_SYNCMGR_PROGRESSTEXT。 この定数は SyncMgr.h で定義されています。
例
次の例は、Synchronize メソッドによる ISyncMgrSyncCallback::ReportProgress の使用方法を示しています。
STDMETHODIMP CMyDeviceHandler::Synchronize(...)
{
...
// Start synchronizing the sync item.
...
// Construct a string to display in the Sync Center folder.
// Report the progress to Sync Center.
SYNCMGR_CANCEL_REQUEST nCancelRequest;
hr = pCallback->ReportProgress(pszItemID,
pszProgressText,
SYNCMGR_PS_UPDATING,
uCurrentStep,
uMaxStep,
&nCancelRequest);
if (SUCCEEDED(hr))
{
if (nCancelRequest != SYNCMGR_CR_NONE)
{
// Synchronization was canceled.
hr = pCallback->ReportProgress(pszItemID,
pszProgressText,
SYNCMGR_PS_CANCELED,
uCurrentStep,
uMaxStep,
NULL);
}
}
...
}
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2008 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | syncmgr.h |