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.
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
Umwandeln eines Instanzanbieters in einen Hochleistungsanbieter