Compartilhar via


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

O método IWbemHiPerfProvider::QueryInstances retorna instâncias da classe especificada usando a instância de IWbemObjectSink fornecida. O método deve retornar imediatamente. A interface IWbemObjectSink é usada para especificar resultados.

Observação Se um provedor não implementar esse método, ele deverá retornar WBEM_E_PROVIDER_NOT_CAPABLE.
 

Sintaxe

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

Parâmetros

[in] pNamespace

Um IWbemServices ponteiro de volta para o WMI que pode atender a qualquer solicitação do provedor. O provedor deve chamar AddRef nesse ponteiro se precisar ligar novamente para o WMI durante a execução.

[in] wszClass

Ponteiro para um WCHAR cadeia de caracteres que especifica a classe cujas instâncias são retornadas.

[in] lFlags

Inteiro que contém os sinalizadores.

[in] pCtx

Normalmente NULL; caso contrário, um ponteiro para um objeto IWbemContext que é exigido por um ou mais provedores de classe dinâmicos. Os valores no objeto de contexto devem ser especificados na documentação do provedor. Para obter mais informações, consulte Fazendo chamadas para o WMI.

[in] pSink

Ponteiro para a implementação IWbemObjectSink fornecida pelo cliente para qualquer um dos métodos assíncronos de IWbemServices.

Valor de retorno

Esse método retorna um HRESULT que indica o status da chamada de método. A lista a seguir lista o valor contido em um HRESULT.

Os provedores HiPerf podem relatar êxito ou falha por meio do código de retorno de queryInstances ou por meio de uma chamada para o método setStatus de pResponseHandler. Se você chamar o método SetStatus, o código de retorno enviado por pResponseHandler terá precedência sobre o código de retorno QueryInstances.

Observações

O WMI chama queryInstances em resposta a uma solicitação IWbemServices::CreateInstanceEnum ou IWbemServices::CreateInstanceEnumAsync.

O método IWbemObjectSink::SetStatus é chamado para indicar o final do conjunto de resultados. Quando ocorrem condições de erro, IWbemObjectSink::SetStatus também podem ser chamados sem chamadas intervindo para IWbemObjectSink::Indique.

Exemplos

O exemplo de código a seguir mostra como 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 Valor
de cliente com suporte mínimo Windows Vista
servidor com suporte mínimo Windows Server 2008
da Plataforma de Destino Windows
cabeçalho wbemprov.h (inclua Wbemidl.h)
biblioteca Wbemuuid.lib
de DLL Wmiprvsd.dll

Consulte também

desenvolvendo um provedor WMI

IWbemHiPerfProvider

Tornando um provedor de instância em um provedor de High-Performance

provedor de contador de desempenho

escrever um provedor de instância