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

  FORUM HardWare.fr
  Programmation

  Comment obtenir des informations sur le système (CPU, RAM,OS) en C++ ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Comment obtenir des informations sur le système (CPU, RAM,OS) en C++ ?

n°23025
LMF
///Miste & TDSiste
Posté le 06-04-2001 à 18:10:54  profilanswer
 

Je suis en train de concevoir un petit programme en C++ (avec Borland Builder C++ 5) or j'aimerais savoir comment obtennir des information sur le systeme qu'il l'éxécute (info sur le modele de CPU, la quantité de RAM, la version de l'OS...).
 
J'ai éssayé avec les fonctions du type get system info mais a part me dire que mon athlon est un 586  :pt1cable: (786 en réalité) ca va pas plus loin.
 
Windows dans les proprietés systemes arrive pourtant a m'indentifier les informations nécessaires.
 
Vous avez une idée pour identifier le systeme  ?

mood
Publicité
Posté le 06-04-2001 à 18:10:54  profilanswer
 

n°23031
bjone
Insert booze to continue
Posté le 06-04-2001 à 18:21:07  profilanswer
 

OS & RAM via les API de l'OS/Base de registre...
 
Identification modèle CPU => Instruction CPUID en asm, introduite par Intel pour le pentium... Cherche chez Intel pour avoir les infos de bases, puis va chez AMD pour savoir les ID en fonctions des CPUs AMD.
(quoique les dernières revs de 486 ont supportés CPUID je crois...)
D'ou le nom de WCPUID... & autres consors...
 
Mesure fréquence CPU => Instruction RDTSC en asm, historiquement idem.
Elle te retourne (par défaut) dans EDX:EAX un compteur qui est incrémenté à chaque tick d'horloge CPU interne, t'a cas poser un timer et tu pourra mesurer alors la freq CPU de manière on ne peu plus précise....

n°23034
LMF
///Miste & TDSiste
Posté le 06-04-2001 à 18:35:56  profilanswer
 

C'est bien ca le probleme, j'ai commencé avec les instructions CPUID, mais j'ai pas trop le niveau pour maitriser.
 
Il aurait-il un moyen de lire dans la base de registre (windows indentifiera à ma place).

n°23047
bjone
Insert booze to continue
Posté le 06-04-2001 à 19:50:42  profilanswer
 

bah, là je sais pas quel "degré" de précision tu trouvera...
mais je pas l'interêt d'afficher ce qu'il y a dans le premier onglet des "Propriétés système"... m'enfin c'est toi qui voit...
tu remaqueras que l'emploi de l'asm en C++ Builder et super cool...
 
t'as juste à faire un  
asm {
 mov eax,...
}
et rulez...

n°23085
LMF
///Miste & TDSiste
Posté le 07-04-2001 à 11:21:35  profilanswer
 

peux-tu me donner plus de détails SVP ?

n°23111
freewol
Ceci n'est pas une citation
Posté le 07-04-2001 à 18:38:19  profilanswer
 

Je risque de ne pas bcp t'aider, m'enfin voilà :
j'avais essayé d'utiliser les fonctions de cpuid fournit par intel avec VisualC++ (et ptet d'autres, j'en sais rien). Mais j'ai un thunderbird, et la fonction arrivait pas à reconnaitre le proc. Donc apperemment la bib intel pour C++ ne fonctionnerait qu'avec les intels, donc à éviter.

n°23575
LMF
///Miste & TDSiste
Posté le 10-04-2001 à 11:15:53  profilanswer
 

et c'était compliqué avec le visual ? parce que pour moi, je connais pas grand chose à l'assembleur c'est donc :hot: pour moi.

n°23810
bjone
Insert booze to continue
Posté le 10-04-2001 à 19:59:27  profilanswer
 

ben je pense qu'apprendre à coder en asm sous le c++ builder est plus facile...
normallement le CPUID/RDTSC est valable pour les AMDs, mais effectivement je doute que les exemples d'Intel reconnaissent un CPU AMD.

n°23812
LMF
///Miste & TDSiste
Posté le 10-04-2001 à 20:27:01  profilanswer
 

Si c'est possible avec les AMD, j'ai cherché sur le net, sur Sandpile.org (je crois)(merci Helloworld), ils disent quel sont les instructions avec les CPU AMD/INTEL/CYRIX... mais bon, c'est  :sweat:  pas de mon niveau.

n°23837
z51
Posté le 10-04-2001 à 23:49:54  profilanswer
 

cpuid te fournit des informations de façon "croissante", càd de la plus générale à la plus spécifique.
En gros le shéma est le suivant :
 

  • la fonction 0 te renvoie le nom du constructeur, codé sur 12 caractères. Là tu sais déjà si t'as un Intel, un AMD ou un Cyrix. Sur sandpile y'a 7 constructeurs référencés.


  • la fonction 1 te renvoie le trio famille/modèle/stepping, et à partir de là tu peux affiner la détection :

- la famille c'est en qque sorte la génération de processeur : 486, Pentium, P6, Pentium4 pour Intel, K5, K6, K7 pour AMD.
- le modèle fournit le ... modèle, au sein de la famille, par exemple Athlon (avec cache ext.), Duron ou TBird dans la famille K7, ou encore Céléron, Katmaï, Coppermine, Xeon dans la famille P6.
- le stepping correspond à la version du core, donc d'un intérêt moindre.
 
Voilà, en somme c'est un gros switch.

mood
Publicité
Posté le 10-04-2001 à 23:49:54  profilanswer
 

n°23838
z51
Posté le 10-04-2001 à 23:53:53  profilanswer
 

ah j'oubliais, pour la quantité de RAM utilise un MEMORYSTATUS:
 
MEMORYSTATUS memory_status;
GlobalMemoryStatus(&memory_status);
RAM_SIZE_EN_MB = (memory_status.dwTotalPhys/(1024*1024))+1;
 
et pour l'OS un OSVERSIONINFO :
 
OSVERSIONINFO osversioninfo;
GetVersionEx(&osversioninfo);


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

  Comment obtenir des informations sur le système (CPU, RAM,OS) en C++ ?

 

Sujets relatifs
programmation systéme sous linuxprogrammation système unix
Question à un pro en systeme Linux?cous de systeme sous linux sur le net?
C++ : Obtenir le nom de la méthode exécutante[C++] Résolution d'un systême d'équation
un mail systeme avec php3 en pop3 ???[C++] utilisation du HP système pour faire des sons
COBOL ET GROS SYSTEME IBM ETC... 
Plus de sujets relatifs à : Comment obtenir des informations sur le système (CPU, RAM,OS) en C++ ?


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