void SystemCheck()
{
while (1)
{
// 内存占用率
MEMORYSTATUSEX statex;
statex.dwLength = sizeof(statex);
if (GlobalMemoryStatusEx(&statex))
{
printf("内存占用率:%d\%", statex.dwMemoryLoad);
}
// cpu 占用率
FILETIME idleTime;
FILETIME kernelTime;
FILETIME userTime;
FILETIME pre_idleTime;
FILETIME pre_kernelTime;
FILETIME pre_userTime;
if (GetSystemTimes(&pre_idleTime, &pre_kernelTime, &pre_userTime))
{
Sleep(1000);
if (GetSystemTimes(&idleTime, &kernelTime, &userTime))
{
int idle = compare_file_time(pre_idleTime, idleTime);
int kernel = compare_file_time(pre_kernelTime, kernelTime);
int user = compare_file_time(pre_userTime, userTime);
int cpu_occupancy_rate = (kernel + user - idle) * 100 / (kernel + user);
cwmp_log_debug("cpu occupancy rate : %d", cpu_occupancy_rate);
pringf("cpu占用率:%d\%", cpu_occupancy_rate );
}
}
//硬盘占用
double total_size = 0;
double free_size = 0;
WCHAR szLogicalDriveString[64] = { 0 };
PWCHAR szDrive;
GetLogicalDriveStrings(63, szLogicalDriveString);
szDrive = szLogicalDriveString;
while (*szDrive)
{
if (GetDriveType(szDrive) == DRIVE_FIXED)
{
printf("volume: %s\n", szDrive);
DWORD64 dwAvailableByte, dwTotalNumberOfByte = 0, dwFreeNumberOfByte;
if (!GetDiskFreeSpaceEx(szDrive, (PULARGE_INTEGER)&dwAvailableByte,
(PULARGE_INTEGER)&dwTotalNumberOfByte, (PULARGE_INTEGER)&dwFreeNumberOfByte))
{
printf("cannot get disk free space: %s \n", szDrive);
}
else
{
total_size += (double)dwTotalNumberOfByte / 1024 / 1024;
free_size += (double)dwFreeNumberOfByte / 1024 / 1024;
}
}
szDrive += lstrlen(szDrive) + 1;
}
printf("硬盘空闲率: %d\%", free_size * 100 / total_size);
Sleep(9000);
}
}