PDA

View Full Version : System information in C


Cecco BS
10-07-2003, 10:09
Ci sono dei comandi in C che mi permettano di ottenere delle informazioni basilari sul sistema operativo come modello processore, frequenza, fsb, memoria, etc... e magari anche temperature (rilevati dai sensori solitamente presenti su mobo e cpu)???

E' più che altro per curiosità, visto che è già pieno di questi sw... me ne piacerebbe realizzarne uno semplice semplice per provare...

mjordan
11-07-2003, 03:04
Originally posted by "Cecco BS"

Ci sono dei comandi in C che mi permettano di ottenere delle informazioni basilari sul sistema operativo come modello processore, frequenza, fsb, memoria, etc... e magari anche temperature (rilevati dai sensori solitamente presenti su mobo e cpu)???

E' più che altro per curiosità, visto che è già pieno di questi sw... me ne piacerebbe realizzarne uno semplice semplice per provare...

Quando fate queste domande vi scordate sempre di specificare che diavolo di sistema operativo usate... :o

mjordan
11-07-2003, 03:31
Comunque in ambiente Windows (Visual C++) puoi guardare quì:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/using_system_information.asp

Per un qualsiasi ambiente Unix, usare le funzioni tradizionali UNIX definite dallo standard POSIX, BSD e SYSV:

http://www.gnu.org/manual/glibc-2.2.5/html_node/System-Management.html#System%20Management

Per sistemi Linux, oltre alle funzioni disponibili sopra menzionate, utilizzare il proc filesystem.

http://www.tldp.org/LDP/sag/x672.html

Cecco BS
11-07-2003, 09:39
uso WinXP e Dev-C++, cmq adesso guarderò i links che mi hai dato, grazie...

Cecco BS
11-07-2003, 09:52
ok ho provat, ma questi sorgenti ti danno informazioni abbastanza criptiche, numeri di serie e cose del genere, a me interesserebbero dei comandi che restituiscono il nome del CPU, la quantità di RAM, come nel Microsoft system Information, o come nei classici CPU-Z o WCPUID...

cionci
11-07-2003, 18:30
Sul sito AMD c'è il programma per trovare il CPUID delle CPU AMD, sul sito Intel c'è il programma per le CPU Intel...

Comuqnue sul sito che ti ha linkato mjordan c'è l'API GetSystemInfo che contiene il CPUID della CPU di sistema... Se guardi nella struttura SYSTEM_INFO (che va passata a GetSystemInfo) c'è il link all'API IsProcessorFeaturePresent per rilevare SSE, MMX, 3DNOW etc etc...

Per il resto ci sono le utility dei produttori di CPU...

mjordan
11-07-2003, 18:31
Originally posted by "Cecco BS"

ok ho provat, ma questi sorgenti ti danno informazioni abbastanza criptiche, numeri di serie e cose del genere, a me interesserebbero dei comandi che restituiscono il nome del CPU, la quantità di RAM, come nel Microsoft system Information, o come nei classici CPU-Z o WCPUID...

Sono funzioni, non comandi.
Non hai pensato che è da quelle "informazioni criptiche" che devi estrarre le informazioni??

Cecco BS
14-07-2003, 11:45
effettivamente l'avevo sospettato ma... come si fa??? :confused: :confused: :D :D

misterx
14-07-2003, 12:09
ho provato anch'io a compilare:


Hardware information:

OEM ID: 0

Number of processors: 1

Page size: 4096

Processor type: 586

Minimum application address: 400000

Maximum application address: 7fffffff

Active processor mask: 1

Cecco BS
14-07-2003, 14:27
exatto, stessi risultati che vengono a me... non lo sapevo di avere un processore!!

misterx
14-07-2003, 15:03
:confused: non ho capito la tua battuta :rolleyes:

Cecco BS
14-07-2003, 16:02
perchè il programma ti dice il numero dei processori:

Number of processors: 1

Informazione veramente vitale che mi ha rivelato la vera essenza del mio hardware...!!

cionci
14-07-2003, 16:04
Stampa in esadecimale wProcessorRevision e vedrai che avrai famiglia, modello e stepping della CPU...

Cecco BS
14-07-2003, 16:07
come si fa? Ho appena iniziato a programmare in C! :rolleyes:

cionci
14-07-2003, 16:11
printf("%x", variabile);

Cecco BS
14-07-2003, 16:31
già, certo! :D
Proverò stasera...

cionci
15-07-2003, 08:03
#include <windows.h>
#include <stdio.h>

int main()
{
SYSTEM_INFO si;
char rev[4];
GetSystemInfo(&si);

printf("Processore: %d\n",si.dwProcessorType);
sprintf(rev, "%x", si.wProcessorRevision);

printf("Famiglia: %d Modello: %c Stepping; %c\n", si.wProcessorLevel, rev[0], rev[2]);

return 0;
}

;)