WIN32获取系统占用的方法

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

}

猜你喜欢

转载自blog.csdn.net/liusarzn/article/details/83303012