Поделиться через


Метод 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

Указатель на буфер, содержащий строку Юникода для любых пользовательских сообщений о ходе выполнения для этого элемента.

[in] nStatus

Тип: SYNCMGR_PROGRESS_STATUS

Значение из перечисления SYNCMGR_PROGRESS_STATUS , указывающее текущее состояние выполнения синхронизации.

[in] uCurrentStep

Тип: ULONG

Текущий шаг синхронизации. Если флаг SYNCMGR_PS_UPDATING_INDETERMINATE задан в nStatus, этот параметр игнорируется.

[in] uMaxStep

Тип: ULONG

Общее количество шагов, необходимых для завершения синхронизации элемента. Если флаг SYNCMGR_PS_UPDATING_INDETERMINATE задан в nStatus, этот параметр игнорируется.

[out] pnCancelRequest

Тип: SYNCMGR_CANCEL_REQUEST*

При возврате этого метода указывает на значение из перечисления SYNCMGR_CANCEL_REQUEST , указывающее характер запроса на отмену, если таковой имеется.

Возвращаемое значение

Тип: HRESULT

Если этот метод завершается успешно, он возвращает S_OK. В противном случае возвращается код ошибки HRESULT .

Комментарии

Если вы хотите сообщать о ходе выполнения обработчика, а не отдельные элементы синхронизации, вызовите метод ISyncMgrSyncCallback::SetHandlerProgressText.

Если синхронизация была отменена, обработчик вызывает ISyncMgrSyncCallback::ReportProgress для элемента в последний раз, подтверждая запрос отмены, указав SYNCMGR_PS_CANCELED в параметре nStatus . Это обновит пользовательский интерфейс, а также позволит пользователю перезапустить синхронизацию для этого элемента.

После того как этот метод сообщает о состоянии завершения (SYNCMGR_PS_SUCCEEDED, SYNCMGR_PS_FAILED или SYNCMGR_PS_CANCELED), единственным дополнительным отчетом о состоянии, который можно создать, будет SYNCMGR_PS_FAILED. Любое другое значение приводит к тому, что этот метод возвращает E_ACCESSDENIED и центр синхронизации, чтобы пометить элемент как сбой.

Этот метод заменяет Progress.

Максимальная длина строки выполнения — MAX_SYNCMGR_PROGRESSTEXT. Эта константа определена в файле SyncMgr.h.

Примеры

В следующем примере показано использование ISyncMgrSyncCallback::ReportProgress методом Synchronize .

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
Header syncmgr.h