ISyncMgrSyncCallback::ReportProgress 方法 (syncmgr.h)
将单个同步项的同步进度报告到同步中心。
语法
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。 此字符串的最大长度MAX_SYNCMGR_ID包括终止 null 字符。
[in] pszProgressText
类型: LPCWSTR
指向缓冲区的指针,该缓冲区包含此项的任何自定义进度消息的 Unicode 字符串。
[in] nStatus
SYNCMGR_PROGRESS_STATUS 枚举中的一个值,该值指示同步的当前进度状态。
[in] uCurrentStep
类型: ULONG
同步中的当前步骤。 如果在 nStatus 中设置了SYNCMGR_PS_UPDATING_INDETERMINATE标志,则忽略此参数。
[in] uMaxStep
类型: ULONG
完成项同步所需的总步骤数。 如果在 nStatus 中设置了SYNCMGR_PS_UPDATING_INDETERMINATE标志,则忽略此参数。
[out] pnCancelRequest
此方法返回时,指向 SYNCMGR_CANCEL_REQUEST 枚举中的值,该值指定取消请求的性质(如果有)。
返回值
类型: HRESULT
如果该方法成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。
注解
如果要报告处理程序的进度而不是单个同步项,请调用 ISyncMgrSyncCallback::SetHandlerProgressText。
如果已取消同步,处理程序最后一次对项调用 ISyncMgrSyncCallback::ReportProgress,通过在 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 |