Compartir a través de


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

Notifica a los objetos y aplicaciones registrados el progreso de una operación de descarga.

Sintaxis

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

Parámetros

[in] dwProgressCurrent

Cantidad de datos disponibles.

[in] dwProgressMaximum

Cantidad total de datos que se van a descargar.

[in] fAccurate

Indica la precisión de los valores de dwProgressCurrent y dwProgressMaximum. Son confiables (TRUE) o no confiables (FALSE). El valor FALSE indica que las estructuras de control para determinar la posición real de los datos que todavía no se van a descargar no están disponibles.

[in] fOwner

Indica si esta llamada a OnProgress puede controlar el comportamiento de bloqueo de la operación. Si es TRUE, el autor de la llamada puede usar valores devueltos de OnProgress para bloquear (STG_S_BLOCK), reintentar (STG_S_RETRYNOW) o supervisar (STG_S_MONITORING) la operación. Si es FALSE, el valor devuelto de OnProgress no influye en el comportamiento de bloqueo.

Valor devuelto

Este método puede devolver los valores devueltos estándar E_FAIL, E_INVALIDARG, E_OUTOFMEMORY y E_UNEXPECTED, así como los siguientes valores.

Código devuelto Descripción
STG_S_RETRYNOW
El autor de la llamada es reintentar la operación inmediatamente. (Este valor es más útil para las aplicaciones que bloquean desde dentro de la rutina de devolución de llamada).
STG_S_BLOCK
El autor de la llamada es bloquear la descarga y reintentar la llamada según sea necesario para determinar si hay datos adicionales disponibles. Este es el comportamiento predeterminado si no hay receptores registrados en el punto de conexión.
STG_S_MONITORING
El destinatario de devolución de llamada renuncia al control del proceso de descarga a uno de los otros objetos o aplicaciones que han registrado receptores de notificaciones de progreso en la misma secuencia. Esto resulta útil si el receptor de notificaciones solo está interesado en la recopilación de estadísticas.
E_PENDING
Los datos no están disponibles actualmente. El autor de la llamada es intentarlo de nuevo después de algún intervalo deseado. El receptor de notificaciones devuelve este valor si el almacenamiento asincrónico funciona en modo sin bloqueo.

Comentarios

Los receptores pueden ser heredados por cualquier substorage o substream de un almacenamiento determinado. Si no se registra ningún receptor, el subproceso se bloqueará hasta que los datos solicitados estén disponibles o el descargador cancele la descarga.

Cuando varios objetos o aplicaciones han registrado receptores de notificaciones de progreso en una sola secuencia, solo uno de ellos puede controlar el comportamiento de una descarga. La propiedad de la descarga va al primer receptor para registrarse con el almacenamiento o la secuencia, o cualquier aviso de máscaras que se hayan heredado del almacenamiento primario (si el almacenamiento se creó con ASYNC_MODE_COMPATIBILITY).

Cualquiera de los receptores puede renunciar al control al siguiente punto de conexión devolviendo STG_S_MONITORING al punto de conexión que realiza la llamada actual. Después de que un punto de conexión obtenga el control (mediante la recepción de STG_S_BLOCK o STG_S_RETRYNOW), todos los puntos de conexión posteriores que llaman a OnProgress establecerán fOwner en FALSE.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado objidl.h

Consulte también

IProgressNotify