Condividi tramite


Metodo IProgressNotify::OnProgress (objidl.h)

Notifica agli oggetti registrati e alle applicazioni lo stato di avanzamento di un'operazione di download.

Sintassi

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

Parametri

[in] dwProgressCurrent

Quantità di dati disponibili.

[in] dwProgressMaximum

Quantità totale di dati da scaricare.

[in] fAccurate

Indica l'accuratezza dei valori in dwProgressCurrent e dwProgressMaximum. Sono affidabili (TRUE) o inaffidabili (FALSE). Il valore FALSE indica che le strutture di controllo per determinare la posizione effettiva di o la quantità di dati ancora da scaricare non sono disponibili.

[in] fOwner

Indica se questa chiamata OnProgress può controllare il comportamento di blocco dell'operazione. Se TRUE, il chiamante può usare valori restituiti da OnProgress per bloccare (STG_S_BLOCK), riprovare (STG_S_RETRYNOW) o monitorare (STG_S_MONITORING) l'operazione. Se FALSE, il valore restituito da OnProgress non influisce sul comportamento di blocco.

Valore restituito

Questo metodo può restituire i valori restituiti standard E_FAIL, E_INVALIDARG, E_OUTOFMEMORY e E_UNEXPECTED, nonché i valori seguenti.

Codice restituito Descrizione
STG_S_RETRYNOW
Il chiamante deve ripetere immediatamente l'operazione. Questo valore è più utile per le applicazioni che eseguono il blocco dall'interno della routine di callback.
STG_S_BLOCK
Il chiamante deve bloccare il download e ripetere la chiamata in base alle esigenze per determinare se sono disponibili dati aggiuntivi. Questo è il comportamento predefinito se nel punto di connessione non sono registrati sink.
STG_S_MONITORING
Il destinatario di callback abbandona il controllo del processo di download in uno degli altri oggetti o applicazioni che hanno registrato sink di notifica di stato nello stesso flusso. Ciò è utile se il sink di notifica è interessato solo alla raccolta di statistiche.
E_PENDING
I dati non sono attualmente disponibili. Il chiamante deve riprovare dopo un intervallo desiderato. Il sink di notifica restituisce questo valore se l'archiviazione asincrona deve funzionare in modalità non bloccante.

Commenti

I sink possono essere ereditati da qualsiasi sottostorage o sottostream di una determinata risorsa di archiviazione. Se non viene registrato alcun sink, il thread verrà bloccato fino a quando i dati richiesti non diventano disponibili o il download viene annullato dal downloader.

Se più oggetti o applicazioni hanno registrato sink di notifica dello stato in un singolo flusso, solo uno di essi può controllare il comportamento di un download. La proprietà del download passa al primo sink da registrare con lo spazio di archiviazione o flusso oppure eventuali skink che potrebbero essere stati ereditati dall'archiviazione padre (se la risorsa di archiviazione è stata creata con ASYNC_MODE_COMPATIBILITY).

Qualsiasi sink può rinunciare al punto di connessione successivo restituendo STG_S_MONITORING al punto di connessione che effettua il chiamante corrente. Dopo che un punto di connessione ottiene il controllo (tramite la ricezione di STG_S_BLOCK o STG_S_RETRYNOW), tutti i punti di connessione successivi che chiamano OnProgress impostano fOwner su FALSE.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione objidl.h

Vedi anche

IProgressNotify