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

SYNCMGR_PROGRESS_STATUS 枚举中的一个值,该值指示同步的当前进度状态。

[in] uCurrentStep

类型: ULONG

同步中的当前步骤。 如果在 nStatus 中设置了SYNCMGR_PS_UPDATING_INDETERMINATE标志,则忽略此参数。

[in] uMaxStep

类型: ULONG

完成项同步所需的总步骤数。 如果在 nStatus 中设置了SYNCMGR_PS_UPDATING_INDETERMINATE标志,则忽略此参数。

[out] pnCancelRequest

类型: SYNCMGR_CANCEL_REQUEST*

此方法返回时,指向 SYNCMGR_CANCEL_REQUEST 枚举中的值,该值指定取消请求的性质(如果有)。

返回值

类型: HRESULT

如果该方法成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。

注解

如果要报告处理程序的进度而不是单个同步项,请调用 ISyncMgrSyncCallback::SetHandlerProgressText

如果已取消同步,处理程序最后一次对项调用 ISyncMgrSyncCallback::ReportProgress,通过在 nStatus 参数中指定SYNCMGR_PS_CANCELED来确认取消请求。 这会更新 UI,还允许用户重启该项目的同步。

此方法 (SYNCMGR_PS_SUCCEEDED、SYNCMGR_PS_FAILEDSYNCMGR_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