Comment obtenir des informations sur le système (CPU, RAM,OS) en C++ ? - Programmation
Marsh Posté le 06-04-2001 à 18:21:07
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....
Marsh Posté le 06-04-2001 à 18:35:56
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).
Marsh Posté le 06-04-2001 à 19:50:42
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...
Marsh Posté le 07-04-2001 à 18:38:19
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.
Marsh Posté le 10-04-2001 à 11:15:53
et c'était compliqué avec le visual ? parce que pour moi, je connais pas grand chose à l'assembleur c'est donc pour moi.
Marsh Posté le 10-04-2001 à 19:59:27
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.
Marsh Posté le 10-04-2001 à 20:27:01
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 pas de mon niveau.
Marsh Posté le 10-04-2001 à 23:49:54
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 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.
Marsh Posté le 10-04-2001 à 23:53:53
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);
Marsh Posté le 06-04-2001 à 18:10:54
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 (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 ?