IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

[WMI][C++] Créé un compteur de performance


Sujet :

Windows

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 228
    Points : 102
    Points
    102
    Par défaut [WMI][C++] Créé un compteur de performance
    J'avoue que la question meme est complexe surtout que je ne maitrise pas vraiment tous les apects WMI, je vais donc essayer de faire quelque chose de claire et d'ilustré...
    Voici l'archi WMI


    Tout en bas on trouve des providers et plus particulierement le CIMV2 (services des monitoring de performances), il est possible d'utiliser des compteurs de perfs préexistant comme Win32_PerfRawData_PerfDisk_LogicalDisk par exemple.

    Il est aussi possibel de créé sont propre compteur de performance a la sauce perfmon (j'ai un code d'exemple fourni pas crosoft mais je n'ai plus le liens :/). le compteur que l'on cré vient, dans l'architecture, sous les WMI provider, il est reconnu et identifié par le provider CimV2. C'est le processus ADAP qui se charge de mettre notre "managed object" (rien a voir avec les framework .NET) dasn le repository WMI pour que les providers puissent l'utiliser.
    Avec cette methode on peut don créé un compteur de performance personalisé., masi qui doit suivre le template des compterus perfom (inscription dans la base de registre, interfaces COM predefinies...)

    Deuxieme solution pour faire ce que l'on veut de A à Z ecrire le provider qui va avec l'objet managé, c'est long et lourd

    Je suis sonc a la recherche de la troisieme solution...
    Ecrire un object managé qui serai reconnu par ADAP, avec des interfaceq que je determine et non des interfaces impossées. En fait j'aimerai créé une classe du meme type que celle que l'on utilise avec WMI, comme Win32_PerfRawData_PerfDisk_LogicalDisk, qui s'appelrai Win32_PerfRawData_MesPerf par exemple. Ou les donées exportées on le type que je veux.

    Voilà désolé pour le pavé, je ne cherche pas forcement un bout de code/exemple (bien que ça serait pas mal :p, mais au moins le certitude de la faisabilté, ou non, de la chose).

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 25
    Points : 28
    Points
    28
    Par défaut
    Salut

    CIMV2 n'est pas vraiment un service de monitoring de performances, c'est juste le provider WMI par défaut.

    Perfmon expose ses compteurs via des classes WMI pré-définies qui effectivement appartiennent à CIMV2.

    Tu peux exposer des compteurs supplémentaires via perfmon assez simplement, étant donné que ce ne sont que des interfaces COM dérivées de IDispatch (donc même faisables en VB...)
    Tu peux aller voir http://msdn.microsoft.com/library/en...asp?frame=true, http://msdn.microsoft.com/library/de...sdn_ntperf.asp, etc...

    Ensuite on peut étendre le schéma CIM (sur lequel repose WMI) en développant son provider (un autre CIMV2...), une base class (comme CIM_File) ou une classe dérivée (CIM_LogicalFile)
    Ensuite il faudra que tu recompiles la base MOF (contenant le schéma CIM) via mofcomp.exe
    Tu peux aller voir http://msdn.microsoft.com/library/de...base_class.asp

    Donc en conclusions tu peux tout à fait redévelopper un Win32_PerfRawData_MonApplication, qui sera surement une classe dérivée de Win32_PerfRawData.
    Mais cette classe ne sera qu'un wrapper WMI pour le compteur perfmon que tu auras déjà créé.
    Nicolas Diétrich

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 228
    Points : 102
    Points
    102
    Par défaut ^^
    Merci

    Tu peux exposer des compteurs supplémentaires via perfmon assez simplement, étant donné que ce ne sont que des interfaces COM dérivées de IDispatch (donc même faisables en VB...)
    Tu peux aller voir http://msdn.microsoft.com/library/en-us/vccore/html/vctskCreatingATLPerformanceMonitorObject.asp?frame=true, http://msdn.microsoft.com/library/default.asp?url=/archive/en-us/dnarperfmo/html/msdn_ntperf.asp, etc...
    ça c'est deja fait en fait, et c'est effectivement plutot simple (mais ça pose des problemes de prtabilité entre palteforme, marche en FR et pas en US sur des windows identiques)

    Ensuite on peut étendre le schéma CIM (sur lequel repose WMI) en développant son provider (un autre CIMV2...), une base class (comme CIM_File) ou une classe dérivée (CIM_LogicalFile)
    Ensuite il faudra que tu recompiles la base MOF (contenant le schéma CIM) via mofcomp.exe
    Tu peux aller voir http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/creating_a_base_class.asp
    je vasi regarder de ce cote la, par contre il semble possible de créé un couple provider/compter un "Custom WMI provider" et j'aimerais asser mettre la main sur un exemple mais je ne trouve l'exercice qu'en C#
    (ici pour les gens interresé http://www.c-sharpcorner.com/Code/20...viderGuide.asp)
    Si quelqu'un à le meme genre de code mais en C++ sann utilisé le wizzard je suis preneur

    EDIT:
    Au cas ou, je commence ici http://msdn.microsoft.com/library/de...i_provider.asp

Discussions similaires

  1. Compteur de performance
    Par Zamalien974 dans le forum Windows Serveur
    Réponses: 9
    Dernier message: 17/09/2008, 12h06
  2. Explications concernant deux compteurs de performances
    Par Immobilis dans le forum MS SQL Server
    Réponses: 16
    Dernier message: 29/02/2008, 16h41
  3. Réponses: 1
    Dernier message: 05/02/2008, 15h35
  4. Compteur de performance désactivé
    Par rcgilbert dans le forum Framework .NET
    Réponses: 6
    Dernier message: 16/07/2007, 11h06
  5. Réponses: 1
    Dernier message: 02/03/2007, 17h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo