使用PDH性能计数器获取CPU使用率网卡信息等

本文介绍了如何使用PDH库(Pdh.h和Pdh.lib)来获取CPU使用率、网卡信息等系统资源数据。关键在于正确识别性能计数器的名称,如网卡名需参考性能监视器中的名称,而非设备管理器中的。通过打开查询、添加查询、收集数据和取值等步骤,可以实现对内存和硬盘情况的监控。
摘要由CSDN通过智能技术生成

使用pdh包含头文件Pdh.h 库可以用#pragma comment(lib,"Pdh.lib")加载

通常步骤为打开查询,添加查询,查询的收集,取值。下面的是cpu使用率



HQUERY query;
	double CPUusage;
	PDH_STATUS status = PdhOpenQuery(NULL, NULL, &query);
	if (ERROR_SUCCESS != status)
	{
		MessageBox(NULL,TEXT("打开失败"),TEXT(""),MB_OK);
		return -1;

	}
	HCOUNTER counter;
	status = PdhAddCounter(query, _TEXT("\\Processor Information(_Total)\\% Processor Time"), NULL, &counter); //%号和P之间要有空格
	if (ERROR_SUCCESS != status)
	{
		MessageBox(NULL,TEXT("添加失败"),TEXT(""),MB_OK);
		return -1;

	}
	PdhCollectQueryData(query);      
	Sleep(1000);                 //这里要有延时不然结果相当不准确
	PdhCollectQueryData(query);
	PDH_FMT_
可以使用性能计数器获取CPU使用率,步骤如下: 1. 导入头文件 "Windows.h" 和 "pdh.h"。 2. 定义变量: ```c HQUERY query; // 查询句柄 HCOUNTER counter; // 计数器句柄 PDH_STATUS status; // 状态 DWORD type; // 计数器类型 ``` 3. 初始化查询句柄和计数器句柄: ```c status = PdhOpenQuery(NULL, 0, &query); status = PdhAddCounter(query, L"\\Processor(_Total)\\% Processor Time", 0, &counter); status = PdhCollectQueryData(query); ``` 其中,第二个参数是要获取计数器名称,这里的 "\_Total" 表示获取全部 CPU使用率。 4. 循环获取数据并输出: ```c DWORD value; while (true) { Sleep(1000); // 等待 1 秒 status = PdhCollectQueryData(query); status = PdhGetFormattedCounterValue(counter, PDH_FMT_LONG, &type, &value); printf("CPU Usage: %d%%\n", value); } ``` 其中,Sleep(1000) 表示每隔 1 秒获取一次数据,PdhGetFormattedCounterValue() 函数用来获取计数器值。 完整代码示例: ```c #include <Windows.h> #include <pdh.h> #include <stdio.h> #pragma comment(lib, "pdh.lib") int main() { HQUERY query; // 查询句柄 HCOUNTER counter; // 计数器句柄 PDH_STATUS status; // 状态 DWORD type; // 计数器类型 // 初始化查询句柄和计数器句柄 status = PdhOpenQuery(NULL, 0, &query); status = PdhAddCounter(query, L"\\Processor(_Total)\\% Processor Time", 0, &counter); status = PdhCollectQueryData(query); DWORD value; while (true) { Sleep(1000); // 等待 1 秒 status = PdhCollectQueryData(query); status = PdhGetFormattedCounterValue(counter, PDH_FMT_LONG, &type, &value); printf("CPU Usage: %d%%\n", value); } return 0; } ``` 注意:需要在项目属性中设置附加依赖项为 "pdh.lib",否则会出现链接错误。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值