项目需要获取cpu的使用率,还需要跟任务管理器保持一致.
先是百度了一大圈,说是用GetSystemTimes这个api,来获取cpu总时间和空闲时间,然后做减法,每一段时间循环计算来实现的。
下面是代码:
__int64 CompareTime(FILETIME time1, FILETIME time2)
{
__int64 a = time1.dwHighDateTime << 32 | time1.dwLowDateTime;
__int64 b = time2.dwHighDateTime << 32 | time2.dwLowDateTime;
return (b - a);
}
void TestDiskManager::GetCpuInfo()
{
FILETIME idleTime;//空闲时间
FILETIME kernelTime;//核心态时间
FILETIME userTime;//用户态时间
bool res;
res = GetSystemTimes(&idleTime, &kernelTime, &userTime);
cout << "GetSystemTimes(&, &, &) = " << res << endl << endl;
HANDLE hEvent;
FILETIME pre_idleTime;
FILETIME pre_kernelTime;
FILETIME pre_userTime;
pre_idleTime = idleTime;
pre_kernelTime = kernelTime;
pre_userTime = userTime;
hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
//初始值为nonsignaled&#x