Partager via


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

La méthode IWbemHiPerfProvider ::QueryInstances retourne des instances de la classe spécifiée à l’aide du instance IWbemObjectSink fourni. La méthode doit être retournée immédiatement. L’interface IWbemObjectSink est utilisée pour spécifier des résultats.

Note Si un fournisseur n’implémente pas cette méthode, il doit retourner WBEM_E_PROVIDER_NOT_CAPABLE.
 

Syntaxe

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

Paramètres

[in] pNamespace

Pointeur IWbemServices vers WMI qui peut traiter n’importe quelle requête du fournisseur. Le fournisseur doit appeler AddRef sur ce pointeur s’il doit rappeler WMI pendant l’exécution.

[in] wszClass

Pointeur vers une chaîne WCHAR qui spécifie la classe dont les instances sont retournées.

[in] lFlags

Entier qui contient les indicateurs.

[in] pCtx

Généralement NULL ; sinon, pointeur vers un objet IWbemContext requis par un ou plusieurs fournisseurs de classes dynamiques. Les valeurs de l’objet de contexte doivent être spécifiées dans la documentation du fournisseur. Pour plus d’informations, consultez Passer des appels à WMI.

[in] pSink

Pointeur vers l’implémentation IWbemObjectSink fournie par le client vers l’une des méthodes asynchrones d’IWbemServices.

Valeur retournée

Cette méthode retourne une valeur HRESULT qui indique l’état de l’appel de méthode. La liste suivante répertorie la valeur contenue dans un HRESULT.

Les fournisseurs HiPerf peuvent signaler la réussite ou l’échec par le biais du code de retour de QueryInstances ou d’un appel à la méthode SetStatus de pResponseHandler. Si vous appelez la méthode SetStatus , le code de retour envoyé via pResponseHandler est prioritaire sur le code de retour QueryInstances .

Remarques

WMI appelle QueryInstances en réponse à une requête IWbemServices ::CreateInstanceEnum ou IWbemServices ::CreateInstanceEnumAsync .

La méthode IWbemObjectSink ::SetStatus est appelée pour indiquer la fin du jeu de résultats. Lorsque des conditions d’erreur se produisent, IWbemObjectSink ::SetStatus peut également être appelé sans appel intermédiaire à IWbemObjectSink ::Indique.

Exemples

L’exemple de code suivant montre comment implémenter 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;
}

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista
Serveur minimal pris en charge Windows Server 2008
Plateforme cible Windows
En-tête wbemprov.h (inclure Wbemidl.h)
Bibliothèque Wbemuuid.lib
DLL Wmiprvsd.dll

Voir aussi

Développement d’un fournisseur WMI

IWbemHiPerfProvider

Création d’un fournisseur d’instance dans un fournisseur de haute performance

Fournisseur de compteurs de performances

Écriture d’un fournisseur d’instances