Método IProgressNotify::OnProgress (objidl.h)

Notifica objetos e aplicativos registrados do progresso de uma operação de download.

Sintaxe

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

Parâmetros

[in] dwProgressCurrent

A quantidade de dados disponíveis.

[in] dwProgressMaximum

A quantidade total de dados a serem baixados.

[in] fAccurate

Indica a precisão dos valores em dwProgressCurrent e dwProgressMaximum. Eles são confiáveis (TRUE) ou não confiáveis (FALSE). O valor FALSE indica que as estruturas de controle para determinar a posição real ou a quantidade de dados ainda a serem baixados não estão disponíveis.

[in] fOwner

Indica se essa chamada OnProgress pode controlar o comportamento de bloqueio da operação. Se TRUE, o chamador poderá usar valores retornados de OnProgress para bloquear (STG_S_BLOCK), repetir (STG_S_RETRYNOW) ou monitorar (STG_S_MONITORING) a operação. Se FALSE, o valor retornado de OnProgress não terá influência no comportamento de bloqueio.

Retornar valor

Esse método pode retornar os valores retornados padrão E_FAIL, E_INVALIDARG, E_OUTOFMEMORY e E_UNEXPECTED, bem como os valores a seguir.

Código de retorno Descrição
STG_S_RETRYNOW
O chamador deve repetir a operação imediatamente. (Esse valor é mais útil para aplicativos que fazem o bloqueio de dentro da rotina de retorno de chamada.)
STG_S_BLOCK
O chamador deve bloquear o download e repetir a chamada conforme necessário para determinar se há dados adicionais disponíveis. Esse será o comportamento padrão se nenhum coletor for registrado no ponto de conexão.
STG_S_MONITORING
O destinatário do retorno de chamada abre mão do controle do processo de download para um dos outros objetos ou aplicativos que registraram coletores de notificação de progresso no mesmo fluxo. Isso será útil se o coletor de notificação estiver interessado apenas na coleta de estatísticas.
E_PENDING
Os dados estão indisponíveis no momento. O chamador deve tentar novamente após algum intervalo desejado. O coletor de notificação retornará esse valor se o armazenamento assíncrono for operar no modo sem bloqueio.

Comentários

Os coletores podem ser herdados por qualquer subtorage ou substream de um determinado armazenamento. Se nenhum coletor for registrado, o thread será bloqueado até que os dados solicitados fiquem disponíveis ou o download seja cancelado pelo downloader.

Quando vários objetos ou aplicativos registraram coletores de notificação de progresso em um único fluxo, apenas um deles pode controlar o comportamento de um download. A propriedade do download vai para o primeiro coletor para registrar-se no armazenamento ou fluxo, ou qualquer aviso de skinks que possa ter sido herdado do armazenamento pai (se o armazenamento foi criado com ASYNC_MODE_COMPATIBILITY.)

Qualquer um dos coletores pode abrir mão do controle para o próximo ponto de conexão retornando STG_S_MONITORING ao ponto de conexão que faz o chamador atual. Depois que um ponto de conexão obtém o controle (por meio do recebimento de STG_S_BLOCK ou STG_S_RETRYNOW), todos os pontos de conexão subsequentes que chamam OnProgress definirão fOwner como FALSE.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho objidl.h

Confira também

IProgressNotify