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

Consulte también

IWbemObjectSink

IWbemObjectSink::Indicate

IWbemObjectSinkEx

IWbemServices::ExecQueryAsync

WBEM_STATUS_TYPE