gpt4 book ai didi

c++ - 如何读取 Windows perfmon 计数器?

转载 作者:可可西里 更新时间:2023-11-01 11:20:56 28 4
gpt4 key购买 nike

我可以获取 C++ 代码来读取 Windows perfmon 计数器(类别、计数器名称和实例名称)吗?

在 C# 中很容易,但我需要 C++ 代码。

谢谢

最佳答案

正如 Doug T. 之前指出的那样,我刚才发布了一个帮助程序类来查询性能计数器值。该类的使用非常简单,您所要做的就是为性能计数器提供字符串。 http://askldjd.wordpress.com/2011/01/05/a-pdh-helper-class-cpdhquery/

不过我在博客上贴的代码在实践中有修改过。从您的评论来看,您似乎只对查询单个字段感兴趣。

在这种情况下,尝试将以下函数添加到我的 CPdhQuery 类中。

double CPdhQuery::CollectSingleData()
{
double data = 0;
while(true)
{
status = PdhCollectQueryData(hQuery);

if (ERROR_SUCCESS != status)
{
throw CException(GetErrorString(status));
}

PDH_FMT_COUNTERVALUE cv;
// Format the performance data record.
status = PdhGetFormattedCounterValue(hCounter,
PDH_FMT_DOUBLE,
(LPDWORD)NULL,
&cv);

if (ERROR_SUCCESS != status)
{
continue;
}

data = cv.doubleValue;

break;

}

return data;
}

例如获取处理器时间

counter = boost::make_shared<CPdhQuery>(std::tstring(_T("\\Processor Information(_Total)\% Processor Time")));

获取文件读取字节数/秒:

counter = boost::make_shared<CPdhQuery>(std::tstring(_T("\\System\\File Read Bytes/sec")));

获取 % Committed Bytes:

counter = boost::make_shared<CPdhQuery>(std::tstring(_T("\\Memory\\% Committed Bytes In Use")));

要获取数据,请执行此操作。

double data = counter->CollectSingleData();

希望对您有所帮助。

...艾伦

关于c++ - 如何读取 Windows perfmon 计数器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10953703/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com