Método IWbemObjectSink::SetStatus (wbemcli.h)
Los orígenes llaman al método IWbemObjectSink::SetStatus para indicar el final de una secuencia de notificación o para enviar otros códigos de estado al receptor. El método IWbemObjectSink::Indicate puede haberse llamado o no antes de la llamada a SetStatus.
Normalmente, un cliente implementa la interfaz IWbemObjectSink y ejecuta métodos IWbemServices que devuelven sus resultados mediante la interfaz IWbemObjectSink . Durante esta operación, WMI llama a Indicar tantas veces como sea necesario, seguida de una llamada final a SetStatus y, en muchos casos, Release.
Sintaxis
HRESULT SetStatus(
[in] long lFlags,
[in] HRESULT hResult,
[in] BSTR strParam,
[in] IWbemClassObject *pObjParam
);
Parámetros
[in] lFlags
Máscara de bits de la información de estado. El estado de la operación se puede obtener examinando el parámetro hResult .
WBEM_STATUS_COMPLETE
La operación se ha completado.
WBEM_STATUS_PROGRESS
La operación todavía está en curso.
WBEM_STATUS_REQUIREMENTS
Se usa para activar el filtrado posterior.
[in] hResult
Este parámetro se establece en hrESULT de la operación o notificación asincrónica. Se trata de un código de error, si se ha producido un error o la cantidad de progreso que se ha realizado en una llamada asincrónica.
[in] strParam
Recibe un puntero a un BSTR de solo lectura, si la operación asincrónica original devuelve una cadena. Por ejemplo, al usar PutInstanceAsync, se llama a SetStatus con este parámetro establecido en la ruta de acceso del objeto de la instancia recién creada.
[in] pObjParam
En los casos en los que se devuelve un objeto de estado o error complejo, contiene un puntero al objeto de error. Si el objeto es necesario después de que SetStatus devuelva, el objeto llamado debe usar el método AddRef en el puntero antes de que el objeto llamado devuelva.
Valor devuelto
Este método devuelve un valor HRESULT que indica el estado de la llamada al método. En la lista siguiente se muestra el valor contenido en un HRESULT.
Comentarios
Al implementar un receptor de suscripción de eventos (IWbemObjectSink o IWbemEventSink), no llame a WMI desde el método SetStatus en el objeto receptor. Por ejemplo, llamar a IWbemServices::CancelAsyncCall desde una implementación de SetStatus puede interferir con el estado WMI. Para cancelar una suscripción de evento, establezca una marca y llame a IWbemServices::CancelAsyncCall desde otro subproceso u objeto. En el caso de las implementaciones que no están relacionadas con un receptor de eventos, como las recuperaciones de objetos, enumeraciones y consultas, puede volver a llamar a WMI.
Las implementaciones del receptor deben procesar la notificación de eventos en 100 ms porque el subproceso WMI que entrega la notificación de eventos no puede realizar otro trabajo hasta que el objeto receptor haya completado el procesamiento. Si la notificación requiere una gran cantidad de procesamiento, el receptor puede usar una cola interna para otro subproceso a fin de controlar el procesamiento. En el caso de las implementaciones que no están relacionadas con un receptor de eventos, como las recuperaciones de objetos, enumeraciones y consultas, puede volver a llamar a WMI.
Para recibir actualizaciones de estado intermedias a través de la implementación del cliente de SetStatus, debe especificar WBEM_FLAG_SENT_STATUS en la llamada a un método de proveedor o servicio. El estado exacto se puede determinar examinando los valores HIWORD y LOWORD de hResult por separado. El valor LOWORD (hResult) contiene la cantidad de progreso realizado hasta ahora y el valor HIWORD (hResult) contiene el total.
Si no especifica WBEM_FLAG_SEND_STATUS al llamar al proveedor o al método de servicio, se garantiza que recibirá una y solo una llamada a SetStatus.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows Vista |
Servidor mínimo compatible | Windows Server 2008 |
Plataforma de destino | Windows |
Encabezado | wbemcli.h (include Wbemidl.h) |
Library | Wbemuuid.lib |
Archivo DLL | Fastprox.dll |