IProgressNotify::OnProgress メソッド (objidl.h)

登録済みのオブジェクトとアプリケーションに、ダウンロード操作の進行状況を通知します。

構文

HRESULT OnProgress(
  [in] DWORD dwProgressCurrent,
  [in] DWORD dwProgressMaximum,
  [in] BOOL  fAccurate,
  [in] BOOL  fOwner
);

パラメーター

[in] dwProgressCurrent

使用可能なデータの量。

[in] dwProgressMaximum

ダウンロードするデータの合計量。

[in] fAccurate

dwProgressCurrent および dwProgressMaximum の値の精度を示します。 信頼できる (TRUE) または信頼できない (FALSE) のいずれかです。 FALSE 値は、ダウンロードするデータの実際の位置または量を決定するための制御構造が使用できないことを示します。

[in] fOwner

この OnProgress 呼び出しで操作のブロック動作を制御できるかどうかを示します。 TRUE の場合、呼び出し元は OnProgress からの戻り値を使用して、操作をブロック (STG_S_BLOCK)、再試行 (STG_S_RETRYNOW)、または監視 (STG_S_MONITORING) できます。 FALSE の場合、OnProgress からの戻り値はブロック動作に影響しません。

戻り値

このメソッドは、E_FAIL、E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTEDの標準戻り値と、次の値を返すことができます。

リターン コード 説明
STG_S_RETRYNOW
呼び出し元は、操作を直ちに再試行することです。 (この値は、コールバック ルーチン内からブロックを行うアプリケーションに最も役立ちます)。
STG_S_BLOCK
呼び出し元はダウンロードをブロックし、必要に応じて呼び出しを再試行して、追加のデータが使用可能かどうかを判断します。 これは、接続ポイントにシンクが登録されていない場合の既定の動作です。
STG_S_MONITORING
コールバック受信者は、ダウンロード プロセスの制御を、同じストリームに進行状況通知シンクが登録されている他のオブジェクトまたはアプリケーションのいずれかに放棄します。 これは、通知シンクが統計の収集のみに関心がある場合に便利です。
E_PENDING
データは現在使用できません。 呼び出し元は、必要な間隔の後にもう一度やり直します。 非同期ストレージが非ブロッキング モードで動作する場合、通知シンクはこの値を返します。

注釈

シンクは、特定のストレージのサブストレージまたはサブストリームによって継承できます。 シンクが登録されていない場合、要求されたデータが使用可能になるか、ダウンローダーによってダウンロードが取り消されるまで、スレッドはブロックされます。

複数のオブジェクトまたはアプリケーションが 1 つのストリームに進行状況通知シンクを登録している場合、ダウンロードの動作を制御できるのはそのうちの 1 つだけです。 ダウンロードの所有権は、ストレージまたはストリームに登録する最初のシンクに移動するか、親ストレージから継承された可能性がある任意のアドバイス スキンクに移動します (ストレージが ASYNC_MODE_COMPATIBILITY で作成された場合)。

シンクのいずれかが、現在の呼び出し元の接続ポイントにSTG_S_MONITORINGを返すことによって、次の接続ポイントに制御を放棄できます。 接続ポイントが (STG_S_BLOCKまたはSTG_S_RETRYNOWを受信して) コントロールを取得すると、 OnProgress を 呼び出す後続のすべての接続ポイントで fOwnerFALSE に設定されます。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー objidl.h

こちらもご覧ください

IProgressNotify