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

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

砖农L

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值