Condividi tramite


Metodo IWbemHiPerfProvider::QueryInstances (wbemprov.h)

Il metodo IWbemHiPerfProvider::QueryInstances restituisce istanze della classe specificata usando l'istanza IWbemObjectSink specificata. Il metodo deve restituire immediatamente. L'interfaccia IWbemObjectSink viene usata per specificare i risultati.

Nota Se un provider non implementa questo metodo, deve restituire WBEM_E_PROVIDER_NOT_CAPABLE.
 

Sintassi

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

Parametri

[in] pNamespace

Puntatore IWbemServices a WMI che può eseguire il servizio di qualsiasi richiesta dal provider. Il provider deve chiamare AddRef in questo puntatore se deve tornare a WMI durante l'esecuzione.

[in] wszClass

Puntatore a una stringa WCHAR che specifica la classe le cui istanze vengono restituite.

[in] lFlags

Intero contenente i flag.

[in] pCtx

In genere NULL; in caso contrario, un puntatore a un oggetto IWbemContext richiesto da uno o più provider di classi dinamiche. I valori nell'oggetto contesto devono essere specificati nella documentazione del provider. Per altre informazioni, vedere Creazione di chiamate a WMI.

[in] pSink

Puntatore all'implementazione IWbemObjectSink fornita dal client a uno qualsiasi dei metodi asincroni di IWbemServices.

Valore restituito

Questo metodo restituisce un HRESULT che indica lo stato della chiamata al metodo. L'elenco seguente elenca il valore contenuto in un HRESULT.

I provider HiPerf possono segnalare l'esito positivo o negativo tramite il codice restituito da QueryInstances o tramite una chiamata al metodo SetStatus di pResponseHandler. Se si chiama il metodo SetStatus , il codice restituito inviato tramite pResponseHandler ha la precedenza sul codice restituito QueryInstances .

Commenti

WMI chiama QueryInstances in risposta a una richiesta IWbemServices::CreateInstanceEnum o IWbemServices::CreateInstanceEnumAsync.

Il metodo IWbemObjectSink::SetStatus viene chiamato per indicare la fine del set di risultati. Quando si verificano condizioni di errore, è possibile chiamare anche IWbemObjectSink::SetStatus senza chiamate di intervento a IWbemObjectSink::Indicate.

Esempio

Nell'esempio di codice seguente viene illustrato come implementare 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;
}

Requisiti

Requisito Valore
Client minimo supportato Windows Vista
Server minimo supportato Windows Server 2008
Piattaforma di destinazione Windows
Intestazione wbemprov.h (include Wbemidl.h)
Libreria Wbemuuid.lib
DLL Wmiprvsd.dll

Vedi anche

Sviluppo di un provider WMI

IWbemHiPerfProvider

Creazione di un provider di istanze in un provider di High-Performance

Provider contatore prestazioni

Scrittura di un provider di istanze