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

緩衝區的指標,其中包含目前正在同步處理之專案的唯一標識碼。 此字串的長度上限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_SUCCEEDEDSYNCMGR_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