begin process at 2012 05 30 09:58:42
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Snmp(CPU,memoire,disque) en C??


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Snmp(CPU,memoire,disque) en C??

samedi 20 décembre 2003 à 17:48:01 | Snmp(CPU,memoire,disque) en C??

kobee12

Je dois realiser un prog en C qui permet de recuperer le taux de CPU utilise, la memoire disque disponible, espace disque disponible, et pouvoir envoyer toutes ces infos a une machine principale.
J'ai apppris que l'on pouvait utiliser le protocole SNMP. Seulement je ne le connais pas du tout. Je suppose qu'il existe des bibliotheques en C du style snmp.h mais je ne connais pas les fonctions qui me permettent de realiser les operations que je dois mettre en oeuvre.
Si quelqu'un s'y connait en SNMP et connait les fonctions necessaires a mon prog, qu'il me fasse signe.
Merci d'avance kobee
samedi 20 décembre 2003 à 19:58:47 | Re : Snmp(CPU,memoire,disque) en C??

D1m3x

Google connait certainement cette librairie :p suffit de lui demander :p :d

[DmX]
samedi 20 décembre 2003 à 21:20:36 | Re : Snmp(CPU,memoire,disque) en C??

aardman

Membre Club
Salut,
Je ne connais pas ce protocole, mais je sais qu'il y a un chapitre entier dans MSDN qui lui est consacré. Ca peut etre une piste de depart..
dimanche 21 décembre 2003 à 14:05:03 | Re : Snmp(CPU,memoire,disque) en C??

SMarmotte


tu veux quoi au juste ?
pour CPU, moi je peux fournir comment récupérer l'util CPU pour NT (pas Win9x)

mais le code est long ...
il s'agit d'un fichier externe utilisant des fonction non documentées de NTDLL.DLL ...

-> A inclure ans un projet
utilisation hyper simple : float GetCPUusage()
ca fonctionne tres bien sur mon W2000

--------------------


// cpu_agent.cpp (Windows NT/2000)
// Getting the CPU usage in percent on Windows NT/2000

#include <stdio.h>
#include <conio.h>
#include <windows.h>


#define SystemBasicInformation 0
#define SystemPerformanceInformation 2
#define SystemTimeInformation 3


#define Li2Double(x) ((double)((x).HighPart) * 4.294967296E9 + (double)((x).LowPart))


typedef struct
{
DWORD dwUnknown1;
ULONG uKeMaximumIncrement;
ULONG uPageSize;
ULONG uMmNumberOfPhysicalPages;
ULONG uMmLowestPhysicalPage;
ULONG uMmHighestPhysicalPage;
ULONG uAllocationGranularity;
PVOID pLowestUserAddress;
PVOID pMmHighestUserAddress;
ULONG uKeActiveProcessors;
BYTE bKeNumberProcessors;
BYTE bUnknown2;
WORD wUnknown3;
} SYSTEM_BASIC_INFORMATION;


typedef struct
{
LARGE_INTEGER liIdleTime;
DWORD dwSpare[76];
} SYSTEM_PERFORMANCE_INFORMATION;


typedef struct
{
LARGE_INTEGER liKeBootTime;
LARGE_INTEGER liKeSystemTime;
LARGE_INTEGER liExpTimeZoneBias;
ULONG uCurrentTimeZoneId;
DWORD dwReserved;
} SYSTEM_TIME_INFORMATION;



// ntdll.NtQuerySystemInformation (NT specific!)
//
// The function copies the system information of the
// specified type into a buffer
//
// NTSYSAPI NTSTATUS NTAPI NtQuerySystemInformation(
// IN UINT SystemInformationClass, // information type
// OUT PVOID SystemInformation, // pointer to buffer
// IN ULONG SystemInformationLength, // buffer size in bytes
// OUT PULONG ReturnLength OPTIONAL // pointer to a 32-bit variable that receives
// // the number of bytes written to the buffer
// );
typedef long (WINAPI *PROCNTQSI)(UINT,PVOID,ULONG,PULONG);

PROCNTQSI NtQuerySystemInformation=NULL;


// The function ...
float GetCPUusage()
{
SYSTEM_PERFORMANCE_INFORMATION SysPerfInfo;
SYSTEM_TIME_INFORMATION SysTimeInfo;
SYSTEM_BASIC_INFORMATION SysBaseInfo;
double dbIdleTime;
double dbSystemTime;
long status;
static LARGE_INTEGER liOldIdleTime = {0,0};
static LARGE_INTEGER liOldSystemTime = {0,0};

if(!NtQuerySystemInformation)
NtQuerySystemInformation=(PROCNTQSI)GetProcAddress(GetModuleHandle("ntdll"), "NtQuerySystemInformation");

if(!NtQuerySystemInformation) return -1;

// Get number of processors in the system
status=NtQuerySystemInformation(SystemBasicInformation, &SysBaseInfo, sizeof(SysBaseInfo), NULL);
if(status!=NO_ERROR) return -1;

// Get new system time
status=NtQuerySystemInformation(SystemTimeInformation, &SysTimeInfo, sizeof(SysTimeInfo), 0);
if(status!=NO_ERROR) return -1;

// Get new CPU's idle time
status=NtQuerySystemInformation(SystemPerformanceInformation, &SysPerfInfo, sizeof(SysPerfInfo), NULL);
if(status!=NO_ERROR) return -1;

// CurrentValue = NewValue - OldValue
dbIdleTime=Li2Double(SysPerfInfo.liIdleTime)-Li2Double(liOldIdleTime);
dbSystemTime=Li2Double(SysTimeInfo.liKeSystemTime)-Li2Double(liOldSystemTime);

// CurrentCpuIdle = IdleTime / SystemTime
dbIdleTime=dbIdleTime/dbSystemTime;

// CurrentCpuUsage% = 100 - (CurrentCpuIdle * 100) / NumberOfProcessors
dbIdleTime=100.0-dbIdleTime*100.0/(double)SysBaseInfo.bKeNumberProcessors;

// Store new CPU's idle and system time
liOldIdleTime=SysPerfInfo.liIdleTime;
liOldSystemTime=SysTimeInfo.liKeSystemTime;

// Sometimes, value is -0.00
if(dbIdleTime<0) dbIdleTime=-dbIdleTime;
return (float)dbIdleTime;
}
lundi 22 décembre 2003 à 20:49:41 | Re : Snmp(CPU,memoire,disque) en C??

kobee12

ton pgrm a l'air pas mal mais quand je le compile il me fait deux erreurs sous visual c++ :

LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/cpu_agent.exe : fatal error LNK1120: 1 unresolved externals


lundi 22 décembre 2003 à 20:57:07 | Re : Snmp(CPU,memoire,disque) en C??

SMarmotte


salut
en fait ce fichier est à joindre dans un projet ...
et dans le fichier principal tu fait :

#include <stdio.h>
#include <windows.h>

void main()
{
for(;;)
{
printf("Util CPU = %f", GetCPUusage());
Sleep(1000);
}
}

ou int WinMain(....) pour une prog graphique

ca marche impec


d'un autre coté tu aurais pu t'en douter :
le msg d'erreur disait : "unresolved external symbol _main"

_main non trouvé (or tout prog en C a un main ou WinMain)

mardi 29 avril 2008 à 08:50:37 | la même chose processeur par processeur ?

sfave

Bonjour

ça fonctionne très bien. Excellent.
Et si on veut la même chose, mais pour chaque processeur ?

Quelqu'un aurait une solution ?

Merci

Seb le Fou


Cette discussion est classée dans : disque, realiser, memoire, cpu, snmp


Répondre à ce message

Sujets en rapport avec ce message

Afficher charge CPU disponibilite memoire et disque [ par kobee12 ] J'aimerais faire un prog qui me permette d'afficher en temps reel la charge CPU la disponibilite memoire et disque de mon pc, et out ca en C.Si quelqu monitorin CPU, memoire ,disques [ par Houssemsdi ] Bonjour j'ai à developper une application de monitoring base de données en java et j'ai besoin d'un petit module pour le monitoring systeme       ( ut Probleme CreateFile à l'ouverture du disque C: sous vista [ par ksoft_cppfrance ] En fait je suis en train de developper une application qui permet de lire et ecrire sur le disque. Pour cela, j'utilise les fonctions CreateFile, Read antileechdir [ par RICHARD37 ] Bonjour,J'ai mon disque qui s'est planté suite à virus. J'ai réinstallé windows XP sur un autre disque et mis le disque d'origine en esclave.Je souhai allocation memoire qui echoue, mais pourquoi?? [ par Seomaz ] Bonjour,je pense que le titre est assez explicite...mais je détaille quand même:lors d'une allocation dynamique (avec l'operateur new), je me retrouve Erreur (0x80000003) - L'exception Point d'arrêt [ par nuxaly ] Bonjour, j'ai un probleme de memoire. j'essaye d'executer mon programme c++ sous visual c++ et un erreur s'affiche le voila : "L'exception Point d [A SUPPRIMER]transfer de fichiers du disque c au sisque c [ par bonbout ] bonjour a tousj utilise windows x p  mon problème est quille ne me reste que 13/100 qui nets pas utiliser sur mon disque d ce qui fait en sorte que je Faire une tempo sans utiliser 100% du CPU [ par Xantra ] Bonjour,J'ai un probleme, je suis en train de developper une appli win32 sans fenetre (un processus), et je voudrai faire un attente de plusieur minut


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,998 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales