Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 particulières 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 d’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. L’omission 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 le bon moyen d’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 ce sujet nécessite les références et déclarations #include suivantes pour compiler correctement.
#define _WIN32_DCOM
#include <iostream>
using namespace std;
#include <comdef.h>
#include <Wbemidl.h>
#pragma comment(lib, "wbemuuid.lib")
Les fournisseurs d’instances, de classes et de propriétés ne doivent émettre aucun appel à WMI demandant la modification des données lors de 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 classes qui stocke les données dans le référentiel 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 le référentiel WMI, mais doit définir le paramètre lFlags sur WBEM_FLAG_OWNER_UPDATE dans l’appel IWbemServices approprié.
Les fournisseurs d’événements ne doivent apporter aucune modification de classe pendant le traitement d’un appel. Ils ne peuvent pas également émettre d’appels liés à des événements, tels que la modification d’un filtre d’événements.
Rubriques connexes