Appels à WMI

Les fournisseurs peuvent appeler des méthodes implémentées par WMI à partir de leurs implémentations de méthode. Toutefois, il existe des considérations spéciales lorsqu’un fournisseur appelle l’implémentation WMI d’une méthode IWbemServices à partir de sa propre implémentation de la même méthode. Ces considérations sont importantes, que le fournisseur appelle la version synchrone ou asynchrone de la méthode.

Chaque méthode IWbemServices qu’un fournisseur peut implémenter a un paramètre pctX , un pointeur vers une implémentation de l’interface IWbemContext . Lorsque WMI appelle le fournisseur, WMI transmet un pointeur valide dans ce paramètre. Un fournisseur doit toujours passer ce même pointeur dans tous les appels à WMI qu’il effectue lors du traitement des demandes. Le fait de définir pctX de manière appropriée peut entraîner le démarrage d’une boucle infinie par WMI.

L’exemple de code suivant montre la méthode correcte pour appeler l’implémentation WMI de GetObject à partir d’une implémentation de GetObjectAsync.

STDMETHODIMP CClassProv::GetObjectAsync (BSTR ObjectPath,
    long lFlags, IWbemContext *pCtx,
    IWbemObjectSink *pHandler)
{
  IWbemClassObject *pclObj = NULL;
  IWbemServices* m_pNamespace;
  HRESULT hr = m_pNamespace->GetObject(
      _bstr_t(L"AClass"), 0, pCtx, &pclObj, 
      NULL );
  pclObj->Release();
  return pHandler->SetStatus(0, hr, NULL, NULL);
}

L’exemple de code C++ dans cette rubrique requiert les références suivantes et les # instructions include pour être compilées correctement.

#define _WIN32_DCOM
#include <iostream>
using namespace std;
#include <comdef.h>
#include <Wbemidl.h>
#pragma comment(lib, "wbemuuid.lib")

Les fournisseurs d’instance, de classe et de propriété ne doivent émettre aucun appel à WMI demandant la modification de données pendant la maintenance d’une demande de lecture. Les seuls fournisseurs qui sont des exceptions à cette règle sont des fournisseurs push. Un fournisseur push est un fournisseur de classe qui stocke des données dans l’espace de stockage WMI et s’appuie sur WMI pour gérer les demandes des clients. Lors du traitement d’une demande de lecture, un fournisseur Push peut mettre à jour l’espace de stockage WMI, mais doit définir le paramètre lFlags sur la _ _ _ mise à jour du propriétaire de l’indicateur WBEM dans l’appel IWbemServices approprié.

Les fournisseurs d’événements ne doivent pas apporter de modifications de classe lors de la maintenance d’un appel. Ils ne peuvent pas non plus émettre des appels liés aux événements, tels que la modification d’un filtre d’événement.

Développement d’un fournisseur WMI

Définition des descripteurs de sécurité espace

Sécurisation de votre fournisseur