Freigeben über


IWbemHiPerfProvider::QueryInstances-Methode (wbemprov.h)

Die IWbemHiPerfProvider::QueryInstances-Methode gibt Instanzen der angegebenen Klasse mithilfe des angegebenen IWbemObjectSink-instance zurück. Die -Methode sollte sofort zurückgegeben werden. Die IWbemObjectSink-Schnittstelle wird verwendet, um Ergebnisse anzugeben.

Hinweis Wenn ein Anbieter diese Methode nicht implementiert, muss er WBEM_E_PROVIDER_NOT_CAPABLE zurückgeben.
 

Syntax

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

Parameter

[in] pNamespace

Ein IWbemServices-Zeiger zurück auf WMI, der jede Anforderung des Anbieters verarbeiten kann. Der Anbieter sollte AddRef für diesen Zeiger aufrufen, wenn er WMI während der Ausführung zurückrufen muss.

[in] wszClass

Zeiger auf eine WCHAR-Zeichenfolge , die die Klasse angibt, deren Instanzen zurückgegeben werden.

[in] lFlags

Ganze Zahl, die die Flags enthält.

[in] pCtx

Normalerweise NULL; andernfalls ein Zeiger auf ein IWbemContext-Objekt , das von mindestens einem dynamischen Klassenanbieter benötigt wird. Die Werte im Kontextobjekt müssen in der Anbieterdokumentation angegeben werden. Weitere Informationen finden Sie unter Richten von Aufrufen an WMI.

[in] pSink

Zeiger auf die IWbemObjectSink-Implementierung , die vom Client auf eine der asynchronen Methoden von IWbemServices bereitgestellt wird.

Rückgabewert

Diese Methode gibt ein HRESULT zurück, das den Status des Methodenaufrufs angibt. Die folgende Liste listet den Wert auf, der in einem HRESULT enthalten ist.

HiPerf-Anbieter können Erfolg oder Fehler entweder über den Rückgabecode von QueryInstances oder über einen Aufruf der SetStatus-Methode von pResponseHandler melden. Wenn Sie die SetStatus-Methode aufrufen, hat der über pResponseHandler gesendete Rückgabecode Vorrang vor dem QueryInstances-Rückgabecode .

Hinweise

WMI ruft QueryInstances als Antwort auf eine IWbemServices::CreateInstanceEnum - oder IWbemServices::CreateInstanceEnumAsync-Anforderung auf.

Die IWbemObjectSink::SetStatus-Methode wird aufgerufen, um das Ende des Resultsets anzugeben. Wenn Fehlerbedingungen auftreten, kann IWbemObjectSink::SetStatus auch ohne eingreifende Aufrufe von IWbemObjectSink::Indicate aufgerufen werden.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie QueryInstances implementiert wird.

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;
}

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista
Unterstützte Mindestversion (Server) Windows Server 2008
Zielplattform Windows
Kopfzeile wbemprov.h (include Wbemidl.h)
Bibliothek Wbemuuid.lib
DLL Wmiprvsd.dll

Weitere Informationen

Entwickeln eines WMI-Anbieters

IWbemHiPerfProvider

Umwandeln eines Instanzanbieters in einen Hochleistungsanbieter

Leistungsindikator-Provider

Schreiben eines Instanzanbieters