Gold mine of Visual C++ tricks!
Archive for July 21, 2008
How to get Kernel time usage and User time usage of process?
Jul 21st
![]()
Every process spend its time in kernel space as well as in user space. You can watch it by using perfmon.exe. Have a look at the screenshot.

But how to get the Kernel time and user time of a particular process?
![]()
You can use the api – GetProcessTimes(). See the code snippet below,
FILETIME CreationTime = { 0 };
FILETIME ExitTime = { 0 };
FILETIME KernelTime = { 0 };
FILETIME UserTime = { 0 };
// Get Process times.
GetProcessTimes( GetCurrentProcess(),
&CreationTime,
&ExitTime,
&KernelTime,
&UserTime );
// Format time to readable form.
SYSTEMTIME SystemTime = { 0 };
FileTimeToSystemTime( &KernelTime, & SystemTime );
// Kernel Time in HH:MM:SS:mmm.
CString csKernelTime;
csKernelTime.Format( _T("Kernel Time - %02d:%02d:%02d:%04d"),
SystemTime.wHour,
SystemTime.wMinute,
SystemTime.wSecond,
SystemTime.wMilliseconds );
// Format user time to readable form.
FileTimeToSystemTime( &UserTime, & SystemTime );
// Kernel Time in HH:MM:SS:mmm.
CString csUserTime;
csUserTime.Format( _T("User Time - %02d:%02d:%02d:%04d"),
SystemTime.wHour,
SystemTime.wMinute,
SystemTime.wSecond,
SystemTime.wMilliseconds );
![]()
You can also get the process creation time and process exit time by using the same api.
![]()
Targeted Audience – Beginners.