#include <iostream>#include <pdh.h>#pragma comment(lib, "pdh.lib")int main(){ PDH_STATUS status; HQUERY hQuery; HCOUNTER hCounter; PDH_FMT_COUNTERVALUE counterValue; // 打开查询 status = PdhOpenQuery(NULL, 0, &hQuery); if (status != ERROR_SUCCESS) { std::cout << "打开查询失败:" << status << std::endl; return 1; } // 添加计数器 status = PdhAddCounter(hQuery, L"\\PhysicalDisk(_Total)\\Disk Read Bytes/sec", 0, &hCounter); if (status != ERROR_SUCCESS) { std::cout << "添加计数器失败:" << status << std::endl; PdhCloseQuery(hQuery); return 1; } // 查询计数器值 status = PdhCollectQueryData(hQuery); if (status != ERROR_SUCCESS) { std::cout << "查询计数器值失败:" << status << std::endl; PdhCloseQuery(hQuery); return 1; } // 获取计数器值 status = PdhGetFormattedCounterValue(hCounter, PDH_FMT_LARGE, NULL, &counterValue); if (status != ERROR_SUCCESS) { std::cout << "获取计数器值失败:" << status << std::endl; PdhCloseQuery(hQuery); return 1; } // 输出计数器值 std::cout << "磁盘读速度:" << counterValue.largeValue << " 字节/秒" << std::endl; // 关闭查询 PdhCloseQuery(hQuery); return 0;}
时间: 2024-03-07 20:51:10 浏览: 103
#include <iostream>
这段代码使用了 PDH 库来获取磁盘读速度的计数器值。如果您遇到了 PdhGetFormattedCounterValue 获取计数器值失败的问题,可以尝试修改代码中的计数器路径,或者使用 PdhGetLastError 函数来获取更详细的错误信息。
另外,如果您使用的是自定义计数器,需要确保该计数器已经创建并且正在运行。您可以使用 Perfmon.exe 工具来查看计数器是否存在,并检查计数器名称和路径是否与代码中添加的计数器名称和路径一致。
阅读全文