次の方法で共有


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

同期の現在の進行状況を示す 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 を最後に 1 回呼び出し、nStatus パラメーターに SYNCMGR_PS_CANCELEDを指定して取り消し要求を確認します。 これにより UI が更新され、ユーザーはその項目の同期を再開することもできます。

このメソッドが完了状態 (SYNCMGR_PS_SUCCEEDEDSYNCMGR_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