gpt4 book ai didi

c++ - 性能计数器索引 windows pdh c

转载 作者:可可西里 更新时间:2023-11-01 10:37:15 26 4
gpt4 key购买 nike

我正在编写一个实用程序,它应该获取当前的 CPU 负载。目前它正在工作并在我的本地化中使用 \Processor(_Total)\% process time。对于多语言支持,我通过 PdhLookupPerfNameByIndex 从注册表中获取计数器名称。

现在代码看起来像

PdhLookupPerfNameByIndex(NULL, 6, processorTime, &cbPathSize);
PdhLookupPerfNameByIndex(NULL, 238, processor, &cbPathSize);
PDH_COUNTER_PATH_ELEMENTS elements = {NULL, processor, "_Total", NULL, NULL, processorTime};
PdhMakeCounterPath(&elements, fullPath, &cbPathSize, 0);

我想删除硬编码常量 6 和 238。

是否有一些常量表示 Processor% process time 的索引?

最佳答案

索引因系统而异,您必须动态确定它们。 MSDN documentation of PdhLookupPerfNameByIndex 中暗示了该过程:

  1. 检索注册表值 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\009\Counter
  2. 的 REG_MULTI_SZ 数据

注:“009”代表英文。该 key 始终存在,即使在具有不同语言版本的 Windows 的计算机上也是如此。

  1. 在返回的数据中查找您的(英文)计数器/对象名称。格式:索引后接英文计数器/对象名称,例如:

    6
    % 处理器时间

有你的索引。只需将字符串转换为 DWORD 并将其与 PdhLookupPerfNameByIndex 一起使用。

关于c++ - 性能计数器索引 windows pdh c,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18511379/

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