Hi, been trying to get this thing working for a while now and I think that I am now officially stuck. This code is supposed to spit out the CPU usage of the current process (per PID which is supplied at CMDline) I am not real sure if I need it, but I looked at winbase.h and GetSystemTimes is not available for me. I hope someone can help me. Thanks
Thanks again.Code:#include "stdafx.h" #include <stdio.h> #include <conio.h> #include <windows.h> int iFunGetTime( FILETIME ftTime ) { SYSTEMTIME stTime; int iTime; FileTimeToSystemTime( &ftTime, &stTime ); iTime = stTime.wSecond * 1000; iTime += stTime.wMilliseconds; return iTime; } int iFunGetCpuProcUsage( HANDLE hHandle ) { LONG lOldUser, lNewUser, lOldKernel, lNewKernel, lUser, lKernel; DWORD dwOldTime, dwNewTime, dwTime; FILETIME ftCreate, ftExit, ftUser, ftKernel, sysTime; int iProcUsage; GetSystemTimeAsFileTime(&sysTime); dwOldTime = (DWORD)sysTime.dwLowDateTime; GetProcessTimes( hHandle, &ftCreate, &ftExit, &ftUser, &ftKernel ); lOldUser = iFunGetTime( ftUser ); lOldKernel = iFunGetTime( ftKernel ); Sleep( 1000 ); GetSystemTimeAsFileTime(&sysTime); dwNewTime = (DWORD)sysTime.dwLowDateTime; GetProcessTimes( hHandle, &ftCreate, &ftExit, &ftUser, &ftKernel ); lNewUser = iFunGetTime( ftUser ); lNewKernel = iFunGetTime( ftKernel ); lKernel = lNewKernel - lOldKernel; lUser = lNewUser - lOldUser; dwTime = dwNewTime-dwOldTime; if( dwTime == 0 ) { Sleep( 100 ); GetSystemTimeAsFileTime(&sysTime); dwNewTime = (DWORD)sysTime.dwLowDateTime; dwTime = dwNewTime-dwOldTime; } iProcUsage = (((lKernel+lUser)*100 ) / dwTime ); return iProcUsage; } int main(int argc, char* argv[]) { HANDLE hProcess; int pid = atoi(argv[1]); hProcess = OpenProcess(PROCESS_QUERY_INFORMATION ,false , pid); printf("cpu_usage: %d, proc_id: %d\n", iFunGetCpuProcUsage(hProcess), pid); CloseHandle( hProcess ); return 0; }



LinkBack URL
About LinkBacks


