Condividi tramite


Metodo IWbemObjectSink::SetStatus (wbemcli.h)

Il metodo IWbemObjectSink::SetStatus viene chiamato dalle origini per indicare la fine di una sequenza di notifica o per inviare altri codici di stato al sink. Il metodo IWbemObjectSink::Indicate può essere stato chiamato o meno prima della chiamata a SetStatus.

In genere, un client implementa l'interfaccia IWbemObjectSink ed esegue i metodi IWbemServices che restituiscono i risultati usando l'interfaccia IWbemObjectSink . Durante questa operazione, le chiamate WMI indicano il numero di volte necessario, seguite da una chiamata finale a SetStatus e, in molti casi, release.

Sintassi

HRESULT SetStatus(
  [in] long             lFlags,
  [in] HRESULT          hResult,
  [in] BSTR             strParam,
  [in] IWbemClassObject *pObjParam
);

Parametri

[in] lFlags

Maschera di bit delle informazioni sullo stato. È possibile ottenere lo stato dell'operazione esaminando il parametro hResult .

WBEM_STATUS_COMPLETE

L'operazione è stata completata.

WBEM_STATUS_PROGRESS

L'operazione è ancora in corso.

WBEM_STATUS_REQUIREMENTS

Usato per attivare il post-filtro.

[in] hResult

Questo parametro è impostato sul valore HRESULT dell'operazione o della notifica asincrona. Si tratta di un codice di errore, se si è verificato un errore o della quantità di avanzamento eseguita in una chiamata asincrona.

[in] strParam

Riceve un puntatore a una stringa BSTR di sola lettura, se l'operazione asincrona originale restituisce una stringa. Ad esempio, quando si usa PutInstanceAsync, SetStatus viene chiamato con questo parametro impostato sul percorso dell'oggetto dell'istanza appena creata.

[in] pObjParam

Nei casi in cui viene restituito un errore complesso o un oggetto di stato, questo contiene un puntatore all'oggetto error. Se l'oggetto è necessario dopo la restituzione di SetStatus , l'oggetto chiamato deve utilizzare il metodo AddRef sul puntatore prima che l'oggetto chiamato restituisca.

Valore restituito

Questo metodo restituisce un valore HRESULT che indica lo stato della chiamata al metodo. L'elenco seguente elenca il valore contenuto in hrESULT.

Commenti

Quando si implementa un sink di sottoscrizione di eventi (IWbemObjectSink o IWbemEventSink), non chiamare WMI dall'interno del metodo SetStatus nell'oggetto sink. Ad esempio, la chiamata a IWbemServices::CancelAsyncCall dall'interno di un'implementazione di SetStatus può interferire con lo stato WMI. Per annullare una sottoscrizione di eventi, impostare un flag e chiamare IWbemServices::CancelAsyncCall da un altro thread o oggetto. Per le implementazioni non correlate a un sink di eventi, ad esempio oggetti, enumerazioni e recupero di query, è possibile richiamare in WMI.

Le implementazioni sink devono elaborare la notifica degli eventi entro 100 MSEC perché il thread WMI che recapita la notifica degli eventi non può eseguire altre operazioni finché l'oggetto sink non ha completato l'elaborazione. Se la notifica richiede una grande quantità di elaborazione, il sink può usare una coda interna per un altro thread per gestire l'elaborazione. Per le implementazioni non correlate a un sink di eventi, ad esempio oggetti, enumerazioni e recupero di query, è possibile richiamare in WMI.

Per ricevere gli aggiornamenti dello stato intermedio tramite l'implementazione del client di SetStatus, è necessario specificare WBEM_FLAG_SENT_STATUS nella chiamata a un metodo provider/servizio. Lo stato esatto può essere determinato esaminando separatamente i valori HIWORD e LOWORD di hResult . Il valore LOWORD (hResult) contiene la quantità di avanzamento apportata finora e il valore HIWORD (hResult) contiene il totale.

Se non si specifica WBEM_FLAG_SEND_STATUS quando si chiama il provider o il metodo di servizio, viene garantita la ricezione di una sola chiamata a SetStatus.

Requisiti

Requisito Valore
Client minimo supportato Windows Vista
Server minimo supportato Windows Server 2008
Piattaforma di destinazione Windows
Intestazione wbemcli.h (include Wbemidl.h)
Libreria Wbemuuid.lib
DLL Fastprox.dll

Vedi anche

IWbemObjectSink

IWbemObjectSink::Indicate

IWbemObjectSinkEx

IWbemServices::ExecQueryAsync

WBEM_STATUS_TYPE