Compartir a través de


Método IWbemHiPerfProvider::QueryInstances (wbemprov.h)

El método IWbemHiPerfProvider::QueryInstances devuelve instancias de la clase especificada mediante la instancia de IWbemObjectSink proporcionada. El método debe devolverse inmediatamente. La interfaz IWbemObjectSink se usa para especificar resultados.

Nota Si un proveedor no implementa este método, debe devolver WBEM_E_PROVIDER_NOT_CAPABLE.
 

Sintaxis

HRESULT QueryInstances(
  [in] IWbemServices   *pNamespace,
  [in] WCHAR           *wszClass,
  [in] long            lFlags,
  [in] IWbemContext    *pCtx,
  [in] IWbemObjectSink *pSink
);

Parámetros

[in] pNamespace

Puntero IWbemServices a WMI que puede atender cualquier solicitud del proveedor. El proveedor debe llamar a AddRef en este puntero si necesita volver a llamar a WMI durante la ejecución.

[in] wszClass

Puntero a una cadena WCHAR que especifica la clase cuyas instancias se devuelven.

[in] lFlags

Entero que contiene las marcas.

[in] pCtx

Normalmente NULL; de lo contrario, un puntero a un objeto IWbemContext requerido por uno o varios proveedores de clases dinámicas. Los valores del objeto de contexto deben especificarse en la documentación del proveedor. Para más información, consulte Llamadas a WMI.

[in] pSink

Puntero a la implementación IWbemObjectSink proporcionada por el cliente a cualquiera de los métodos asincrónicos de IWbemServices.

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.

Los proveedores de HiPerf pueden notificar el éxito o el error a través del código de retorno de QueryInstances o a través de una llamada al método SetStatus de pResponseHandler. Si llama al método SetStatus , el código de retorno enviado a través de pResponseHandler tiene prioridad sobre el código de retorno QueryInstances .

Comentarios

WMI llama a QueryInstances en respuesta a una solicitud IWbemServices::CreateInstanceEnum o IWbemServices::CreateInstanceEnumAsync .

Se llama al método IWbemObjectSink::SetStatus para indicar el final del conjunto de resultados. Cuando se producen condiciones de error, también se puede llamar a IWbemObjectSink::SetStatus sin llamadas intermedias a IWbemObjectSink::Indicate.

Ejemplos

En el ejemplo de código siguiente se muestra cómo implementar QueryInstances.

HRESULT CMyHiPerfProvider::QueryInstances(
    /* [in] */ IWbemServices* pNamespace,  
    /* [in] */ BSTR strClass,
    /* [in] */ long lFlags,
    /* [in] */ IWbemContext __RPC_FAR *pCtx,
    /* [in] */ IWbemObjectSink __RPC_FAR *pSink
)
{
   IWbemClassObject *pClass = 0;
   IWbemClassObject *pNextInst = 0;

   // The IWbemObjectSink interface must be
   // implemented in a class that you define. You then
   // must assign the pResponseHandler pointer
   // an instance of the class that implements
   // the IWbemObjectSink interface.
   IWbemObjectSink* pResponseHandler = 0;
   HRESULT hRes;

    // Use the namespace pointer to retrieve a class
    // definition.

   hRes = pNamespace ->GetObject(strClass, 0, NULL, &pClass, 0);
   if (WBEM_NO_ERROR==hRes)
       return hRes;


    // Now loop through the private source and create each instance.

     for (int i = 0 ; i < NUM_OF_INSTANCES ; i++)
    {
         hRes = pClass->SpawnInstance(0, &pNextInst);

         // Exit loop if no new instance is spawned
         if (WBEM_S_FALSE == hRes)
            break;

        if(NULL!=pNextInst)
       {
        // Create the instance.
        // For example, call a function (FillInst) that
        // assigns a value to the pNextInst pointer.
        /*FillInst(pNextInst);*/

        // Deliver the class to WMI.
        pResponseHandler->Indicate(1, &pNextInst);
        pNextInst->Release(); 
        pNextInst=NULL;
       }
    }

   // Send a finish message to WMI.
    pResponseHandler->SetStatus(0, WBEM_S_NO_ERROR, 0, 0);
    // Free memory resources.
    pNamespace->Release();
    pClass->Release();
    SysFreeString(strClass);

  return WBEM_S_NO_ERROR;
}

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista
Servidor mínimo compatible Windows Server 2008
Plataforma de destino Windows
Encabezado wbemprov.h (include Wbemidl.h)
Library Wbemuuid.lib
Archivo DLL Wmiprvsd.dll

Consulte también

Desarrollo de un proveedor WMI

IWbemHiPerfProvider

Conversión de un proveedor de instancias en un proveedor de alto rendimiento

Proveedor de contador de rendimiento

Escritura de un proveedor de instancias