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


Метод 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
Данные в настоящее время недоступны. Вызывающий объект пытается повторить попытку через определенный интервал. Приемник уведомлений возвращает это значение, если асинхронное хранилище должно работать в неблокируемом режиме.

Комментарии

Приемники могут наследоваться любым вложенным хранилищем или подпотоком данного хранилища. Если приемник не зарегистрирован, поток будет блокироваться до тех пор, пока запрашиваемые данные не станут доступными, или скачивание не будет отменено загрузчиком.

Если несколько объектов или приложений зарегистрировали приемники уведомлений о ходе выполнения в одном потоке, только один из них может управлять поведением скачивания. Право на скачивание передается в первый приемник для регистрации в хранилище или потоке, или любые скинки, которые могут быть унаследованы от родительского хранилища (если хранилище было создано с помощью ASYNC_MODE_COMPATIBILITY).

Любой из приемников может отказаться от управления следующей точкой подключения, возвращая STG_S_MONITORING в точку подключения, в которую выполняется текущий вызывающий объект. После того как точка подключения получит управление (путем получения STG_S_BLOCK или STG_S_RETRYNOW), все последующие точки подключения, вызывающие OnProgress , присвоят fOwner значение FALSE.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header objidl.h

См. также раздел

IProgressNotify