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 |