Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1636 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C,C++] recuperer les infos du processeur ...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C,C++] recuperer les infos du processeur ...

n°171877
velleronna​is
Posté le 05-07-2002 à 13:48:46  profilanswer
 

Bonjour,  
 
Tout est dans la question ....
 
je souhaite recuperer le <Processor Time> du processeur et j'utilise pour cela la librairie PDH avec des methodes telles que :  
PdhOpenQuery
PdhAddCounter
PdhCollectQueryData
PdhCollectQueryData
...
 
mais ca veut pas marcher ..... snif !!!
 
si une ame charitable aurait une idee a me soumettre je prend bien volontier ...
 
Merci par avance ...

mood
Publicité
Posté le 05-07-2002 à 13:48:46  profilanswer
 

n°171912
velleronna​is
Posté le 05-07-2002 à 14:18:58  profilanswer
 

:bounce:

n°171979
velleronna​is
Posté le 05-07-2002 à 15:02:25  profilanswer
 

please !!!!!!!!!!!!!!!!!!!!!!!!
 :(

n°172829
try58
Posté le 08-07-2002 à 12:35:00  profilanswer
 

Donne plus d'explications concernant ton appli! Comment elle fonctionne? Sous quoi tu programmes?
Je viens de finir une appli qui utilise cette lib et je pourrai carrement t'aider mais j'ai besoin de plus de precisions.


---------------
LOVE & PEACE !!! [:kirvel]
n°173159
velleronna​is
Posté le 08-07-2002 à 21:52:34  profilanswer
 

Salut !!!! Et merci beaucoup pour ton aide ...
 
en fait, je bosse avec VC++6.0 et mon soucis est le suivant :  
 
porter une appli qui tournait sous WIN NT 4.0  vers WIN 2K et surtout WIN XP.
 
 Mon probleme, c'est que lorsque je fait un PdhAddCounter sur le libelle : \Processor(0)\% Processor Time !!!
ben ca marche pas et il me retourne l'erreur : PDH_CSTATUS_NO_OBJECT (The specified object could not be found.)
 
Je comprend pas trop pourquoi ???
 si tu as une idee a me suggerer, je suis preneur !!!
 
MERCI BEAUCOUP PAR AVANCE !!!

n°173303
try58
Posté le 09-07-2002 à 09:16:04  profilanswer
 

Dans un premier temps il faut que tu crees une query a l'aide de la fonction PdhOpenQuery(). Ensuite tu appelles ta fonction PdhAddCounter();
 
ex :

Code :
  1. PDH_HQUERY hQuery;
  2. PDH_HCOUNTER hCounter;
  3. PdhOpenQuery(0, 0, &hQuery);
  4. PdhAddCounter(hQuery, "\\\\nomdetamachine\\Processor(0)\\%Processor Time", 0, &hCounter);


Voila, normalement ca devrait marcher. Je crois que ton probleme venait au niveau de ton path, il ne faut pas oublie de rajouter le nom de la machine et puis de doubler les '\'.


---------------
LOVE & PEACE !!! [:kirvel]
n°173336
velleronna​is
Posté le 09-07-2002 à 09:45:38  profilanswer
 

OK merci beaucoup, je m'en vais appliquer tes conseils !!!

n°173358
try58
Posté le 09-07-2002 à 10:04:24  profilanswer
 

de rien !


---------------
LOVE & PEACE !!! [:kirvel]
n°173363
velleronna​is
Posté le 09-07-2002 à 10:13:00  profilanswer
 

bouh!, il est mechant avec moi :
voila mon code...
 
  PDH_STATUS pdhStatus;
 
 // etape 1
     pdhStatus = PdhOpenQuery (NULL, 0, &_hQuery);
 VERIFY (pdhStatus == ERROR_SUCCESS);
 
 // etape 2
 char computerName[100];
 gethostname(computerName, 99);
 CString path = "\\\\";
 path += computerName;
 path += "\\Processor(0)\\%Processor Time";
 pdhStatus = PdhAddCounter(_hQuery, path, 0, &_pCounterProcessorTime);  
     VERIFY (pdhStatus == ERROR_SUCCESS);
 
 // etape 3
 pdhStatus = PdhCollectQueryData (_hQuery);  
 VERIFY (pdhStatus == ERROR_SUCCESS);
 
Tout marche impecc jusqu'a l'etape 3, c'est a dire PdhCollectQueryData ....  
il me retourne alors l'erreur suivante : PDH_NO_DATA (The query does not currently have any counters).
Pourtant l'etape 2 semble se passer correctement (je passe le VERIFY sans pb) et ce grace a toi !!!
 
Je voudrais pas abuser de ton temps, mais si tu as une autre piste pour moi, je suis preneur !

n°173390
try58
Posté le 09-07-2002 à 10:38:56  profilanswer
 

velleronnais a écrit a écrit :

bouh!, il est mechant avec moi :
voila mon code...
 
  PDH_STATUS pdhStatus;
 
 // etape 1
     pdhStatus = PdhOpenQuery (NULL, 0, &_hQuery);
 VERIFY (pdhStatus == ERROR_SUCCESS);
 
 // etape 2
 char computerName[100];
 gethostname(computerName, 99);
 CString path = "\\\\";
 path += computerName;
 path += "\\Processor(0)\\%Processor Time";
 pdhStatus = PdhAddCounter(_hQuery, path, 0, &_pCounterProcessorTime);  
     VERIFY (pdhStatus == ERROR_SUCCESS);
 
 // etape 3
 pdhStatus = PdhCollectQueryData (_hQuery);  
 VERIFY (pdhStatus == ERROR_SUCCESS);
 
Tout marche impecc jusqu'a l'etape 3, c'est a dire PdhCollectQueryData ....  
il me retourne alors l'erreur suivante : PDH_NO_DATA (The query does not currently have any counters).
Pourtant l'etape 2 semble se passer correctement (je passe le VERIFY sans pb) et ce grace a toi !!!
 
Je voudrais pas abuser de ton temps, mais si tu as une autre piste pour moi, je suis preneur !




 
Je crois qu'il manque un espace entre "%" et "Processor"! Ca tiens vraiment a rien!!


---------------
LOVE & PEACE !!! [:kirvel]
mood
Publicité
Posté le 09-07-2002 à 10:38:56  profilanswer
 

n°173513
velleronna​is
Posté le 09-07-2002 à 12:09:42  profilanswer
 

bon je vais finir par croire que Microsoft m'en veut a mort ... ca marche pas avec moi ....
 
  PDH_STATUS pdhStatus;
    pdhStatus = PdhOpenQuery (NULL, 0, &_hQuery);
 VERIFY (pdhStatus == ERROR_SUCCESS);
 
 // JF
 //char computerName[MAX_COMPUTERNAME_LENGTH + 1];
 //LPDWORD lpnSize = (unsigned long*)(MAX_COMPUTERNAME_LENGTH + 1);
 //GetComputerName(computerName, lpnSize);
 RbCString path = "\\\\";
 //path += "IPROCESSOR8";
 path += "\\Processor(0)\\% Processor Time";
 
 // définition des compteurs a insérer dans la requete
 pdhStatus = PdhAddCounter (_hQuery, path, 0, &_pCounterProcessorTime);  
 
    VERIFY (pdhStatus == ERROR_SUCCESS);

n°173521
velleronna​is
Posté le 09-07-2002 à 12:14:08  profilanswer
 

houla ... desole, mon doigt a fourche, ... j'ai valide sans le vouloir mon msg precedent ...
 
le PdhAddCounter ne me retourne ERROR_SUCCESS que si je lui demande dans le path : @\\Processor(0)\\% Processor Time";  
 
Si j'insere avant le nom de ma machine, il me retourne la meme erreur que precedemment (PDH_CSTATUS_NO_OBJECT ).
 
Mais meme dans le cas ou il me retourne ERROR_SUCCESS (avec le path specifie plus haut), ben les PdhGetCounterInfo ou les PdhCollectQueryData ne marchent pas .....
je crois que je vais criser !!!
 
HELP !!!!!

n°173540
try58
Posté le 09-07-2002 à 12:29:25  profilanswer
 

il sert a quoi le '@' au debut de ton path?
sinon affiche le path une fois que tu l'as remplit pour voir si il est correct!
Ce qui doit s'afficher doit etre exactement comme ce qui suit :
ex: ma machine s'appelle DEV-SERVER
"\\DEV-SERVER\Processor(0)\% Processor Time"
sinon essaie de le mettre en dur dans PdhAddCounter sans passer par la variable path.
Si ca ne marche pas, je ne saurai quoi te dire, c'est vraiment bizarre!!


---------------
LOVE & PEACE !!! [:kirvel]
n°173552
velleronna​is
Posté le 09-07-2002 à 12:38:07  profilanswer
 

alors le @ c'etait rien ... dans le code c'etatit bien un "
 
j'ai bien recupere le nom de ma machine,voici le code exact pour cela :
 
char   computerName [MAX_COMPUTERNAME_LENGTH + 1];
DWORD  computerNameLength = MAX_COMPUTERNAME_LENGTH + 1;
GetComputerName(computerName, &computerNameLength);
 
 
puis je procede selon tes instructions. Que je rentre en dur le nom de ma machine ou que je le fasse par le code ci-dessus, ca marche pas de toute facon ....
 
Comme tu dit, c'est vraiment bizarre cette histoire !!!!
 
Ca marchait sous WIN NT, mais tous ces pb je les rencontre sous XP ... tu as developpe sous quel OS toi ?

n°173554
try58
Posté le 09-07-2002 à 12:39:16  profilanswer
 

W2000


---------------
LOVE & PEACE !!! [:kirvel]
n°173557
velleronna​is
Posté le 09-07-2002 à 12:40:44  profilanswer
 

bizarre bizarre cette histoire .....
Enfin, merci mille fois encore pour ton aide !!!

n°173576
try58
Posté le 09-07-2002 à 13:16:30  profilanswer
 

As tu essaie d'utiliser un autre compteur genre "Processor(_Total)\% Processor Time" ?


---------------
LOVE & PEACE !!! [:kirvel]
n°173605
velleronna​is
Posté le 09-07-2002 à 14:00:45  profilanswer
 

Alors pour info, voila la solution a mon pb :
 
il fallait recuperer le compteur en FRANCAIS !!!!!!
C'est quoi ce binz ?? Comment on fait pour faire un truc qui marche sur tous les systemes quels que soient leurs langues ???
 
voila le code qui marche chez moi :
 
  PDH_STATUS pdhStatus;
        pdhStatus = PdhOpenQuery (NULL, 0, &_hQuery);
 VERIFY (pdhStatus == ERROR_SUCCESS);
 
 char computerName [MAX_COMPUTERNAME_LENGTH + 1];
 DWORD  computerNameLength = MAX_COMPUTERNAME_LENGTH + 1;
 GetComputerName(computerName, &computerNameLength);
 CString path = "\\\\";
 path += computerName;
 path += "\\Processeur(_Total)\\% Temps Processeur";
 pdhStatus = PdhAddCounter(_hQuery, path, 0, &_pCounterProcessorTime);  
        VERIFY (pdhStatus == ERROR_SUCCESS);
 
 pdhStatus = PdhCollectQueryData (_hQuery);  
 VERIFY (pdhStatus == ERROR_SUCCESS);
 
 
Merci beaucoup pour ton aide try58 !!!!!!

n°173686
velleronna​is
Posté le 09-07-2002 à 15:06:36  profilanswer
 

ho la la !!!!
 
je suis en plein sur l'etude du pourquoi du comment ajouter des compteurs dans la langue de l'OS ... et c'est pas la joie !!!

n°173788
try58
Posté le 09-07-2002 à 16:35:02  profilanswer
 

Arf!! moi je suis sur un W2k anglais, je pouvais chercher longtemps !
Pour ton probleme de langue je ne sais pas comment faire parce que moi j'utilise le browser :
http://msdn.microsoft.com/library/ [...] f_9vn7.asp
et ca me sort les noms des compteurs en fonction de la langue


---------------
LOVE & PEACE !!! [:kirvel]
n°173790
velleronna​is
Posté le 09-07-2002 à 16:37:51  profilanswer
 

Ok merci, j'y cours !!
:-)

n°173793
velleronna​is
Posté le 09-07-2002 à 16:40:52  profilanswer
 

arf ... en fait je connaissais deja cette fonction... mais ca ne peut convenir a mon pb ....  
j'ai un bel article dans la MSDN qui pourrais m'aider, mais si je dois tout faire ce qu'il proposent, je deviendrais fou je crois....

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C,C++] recuperer les infos du processeur ...

 

Sujets relatifs
JSP :comment recuperer le contenu d un champ.....[PHP] Récupérer la liste des paramètres passés via URL [résolu]
comment recuperer des données d'un formulaire en xml ?[JavaScript] Récupérer la liste des fonts dispos sur le client
[java] récupérer le path du fichier .class associé à une classeinfos d'un fichier
recuperer frame position sous directshow?NEWBIE: Comment récupérer les données envoyés par un formulaire HTML
récuperer les L et C visibles à l'écran d'une Stringgrid[java] Enregistrer un vecteur dans un fichier et le recupérer
Plus de sujets relatifs à : [C,C++] recuperer les infos du processeur ...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR