- #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;
- }
#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;
}