Partager via


Classes utilitaires du Framework du fournisseur

[Les classes C++ WMI qui font partie du Framework du fournisseur WMI sont désormais considérées comme étant dans leur état final, et aucun développement, amélioration ou mise à jour ne sera disponible pour les problèmes non liés à la sécurité affectant ces bibliothèques. Les API MI doivent être utilisées pour tout nouveau développement.]

Les bibliothèques du Framework du fournisseur Framedyd.dll (version de débogage) et Framedyn.dll (version de publication) implémentent plusieurs classes d’assistance du fournisseur. Certaines fonctions dans Framedyn.dll ont été supprimées des fichiers d’en-tête. Pour continuer à utiliser ces fonctions, ajoutez #define FRAMEWORK_ALLOW_DEPRECATED à votre code avant d’inclure Fwcommon.h.

Vous pouvez décharger les fournisseurs individuels qui ne sont plus nécessaires.

Pour utiliser cette capacité, vous devez apporter les trois modifications suivantes à votre fournisseur dans MainDll.cpp :

  • Dans la fonction DllMain où vous appelez CWbemProviderGlue::FrameworkLoginDLL, vous devez ajouter un second paramètre qui est un pointeur vers un long.
  • Dans la fonction DllCanUnloadNow où vous appelez CWbemProviderGlue::FrameworkLogoffDLL, vous devez ajouter un second paramètre qui est un pointeur vers un long.
  • Dans la fonction DllGetClassObject où vous créez une instance de CWbemGlueFactory, vous devez ajouter un paramètre qui est un pointeur vers un long.

Dans les trois cas, le pointeur vers un long doit être le même pointeur.

Remarque

Dans Maindll.cpp, DllGetClassObject, DllCanUnloadNow, DllRegisterServer, DllUnregisterServer et les routines DllMain doivent être enveloppées dans un bloc try/catch.

 

Attention

Les builds de débogage du fournisseur sont liés avec Framedyd.lib pour Framedyd.dll. Framedyd.dll se trouve dans le répertoire \bin du Kit de développement logiciel (SDK) Microsoft Windows, qui n’est pas inclus dans le chemin système. Lorsqu’un build de débogage d’un fournisseur est testé avec le service de gestion Windows, le fournisseur du Framework ne se chargera pas car Framedyd.dll ou l’une de ses dépendances ne sera pas localisée. Par conséquent, vous devez soit copier Framedyd.dll du répertoire \bin du SDK Windows vers le répertoire \system32\wbem, soit ajouter le répertoire \bin du SDK Windows au chemin de recherche du système.

 

Le tableau suivant répertorie les classes utilitaires du Framework du fournisseur.

Classe Utility Description
CHString Fournit des fonctions de comparaison et de manipulation de chaînes pour WMI.
CHStringArray Contient des fonctions pour créer et manipuler des tableaux de CHString.
TRefPointerCollection Accorde l’accès à une classe de conteneur pour les pointeurs.
WBEMTime Facilite les conversions entre divers formats de temps de Windows et du runtime ANSI C.
WBEMTimeSpan Contient des fonctions d’assistance utilisées pour calculer et conserver la différence de durée entre deux objets WBEMTime.

 

Remarque

Les classes CHString et CHStringArray sont similaires aux classes CString et CStringArray de la Microsoft Foundation Classes (MFC). Les versions WMI existent pour que les développeurs puissent accéder aux méthodes de manipulation et de comparaison de chaînes sans avoir à accéder aux MFC. Les classes WBEMTime et WBEMTimeSpan sont également similaires aux classes CTime et CTimeSpan des MFC. Les versions WMI sont capables de stocker le temps avec une précision à la nanoseconde et peuvent également se convertir vers et depuis BSTR. Pour plus d’informations sur les classes CString, CStringArray, CTime et CTimeSpan, veuillez consulter la section Applications de bureau MFC.

 

Les valeurs BSTR retournées par les méthodes WBEMTime sont au format Date et Heure : « yyyymmddHHMMSS.mmmmmmsUUU »

Les valeurs BSTR retournées par les méthodes WBEMTimeSpan sont au format Intervalle : « ddddddddHHMMSS.mmmmmm:000 »

Bien que les temps et les intervalles de temps soient stockés en interne sous forme de nanosecondes, ils ne sont pas nécessairement stockés avec une précision à la nanoseconde. Cela est dû au fait que les objets WBEMTime peuvent être construits en utilisant des formats de temps qui sont précis à une seconde (struct tm, et time_t). Ajouter des décimales artificielles n’augmente pas la précision.