Cpu times (win32)

Description

Affichage des temps du ou des processeurs dans les different modes:
IdleTime, KernelTime, UserTime.
Prog reserve a Win 2000 ou superieur, teste au lancement.
J'ai limite a 16 procs ou 8 doubles (xeon ou HT).
Fait sur demande du forum vb alors je le pose ici.

Source / Exemple :


#define _WIN32_WINNT 0x0500
#include <windows.h>
#include <Winternl.h>

typedef int (__stdcall *pNTQUERYINFO) (ULONG,PVOID,ULONG,PULONG);

char buff[1024];
char szappname[] = "CpuTimes";
char szInfo[] = "IdleTime\t\tKernelTime\tUserTime\n";

void InfoCpus()
{
  SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION infos[16]; // 48 octets chaque
  DWORD ret, i;
  pNTQUERYINFO pquery;
  char *c;
  HINSTANCE hdll = LoadLibrary("Ntdll.dll");
  if(!hdll) return;
  pquery = (pNTQUERYINFO) GetProcAddress(hdll, "NtQuerySystemInformation");
  if(!pquery) goto relDll;
  ret = 0;
  pquery(SystemProcessorPerformanceInformation, &infos, sizeof(infos), &ret);
  if(!ret) goto relDll;
  if(ret > sizeof(infos)) goto relDll;
  ret /= 48; // nbr de structs remplies
  strcpy(buff, szInfo);
  c = buff+30;
  for(i = 0; i < ret; i++) {
    _i64toa(infos[i].IdleTime.QuadPart, c, 10);
    while(*c) c++;

  • c++ = 9;
_i64toa(infos[i].KernelTime.QuadPart, c, 10); while(*c) c++;
  • c++ = 9;
_i64toa(infos[i].UserTime.QuadPart, c, 10); while(*c) c++;
  • c++ = '\n';
}
  • (c-1) = 0;
MessageBox(0, buff, szappname, 0); relDll: FreeLibrary(hdll); } DWORD VerifWin2Kmini() { OSVERSIONINFO osvi; osvi.dwPlatformId = osvi.dwMajorVersion = 0; osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&osvi); if(osvi.dwPlatformId != VER_PLATFORM_WIN32_NT) return 0; return (osvi.dwMajorVersion >= 5); } int WINAPI WinMain(HINSTANCE, HINSTANCE, PSTR, int) { if(!VerifWin2Kmini()) return 0; InfoCpus(); return 0; }

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.