通过 winreg 查找 perfmon 计数器 id

2023-12-29

我有一个通过 winreg.h 中公开的 API 收集 Perfmon 计数器值的应用程序 - 为了收集 Perfmon 计数器值,我必须调用RegQueryValueExW传递我感兴趣的 Perfmon 计数器的 id,为了获取该 ID,我需要查询注册表以获取 Perfmon 计数器名称列表,并查找我感兴趣的计数器

C++ 不是我选择的语言,因此以下是一个不稳定的示例,可能有很多语法错误,但您明白了:

DWORD IdProcessIndex = 0;
WCHAR* RawStrings = new WCHAR[ len ];
WCHAR* pCurrent;
DWORD nLenInChars;

// Get the name id of the "ID Process" counter
RegQueryValueExW(HKEY_PERFORMANCE_DATA, COUNTER009, 0, 0, (PBYTE)RawStrings, &len)

pCurrent = (WCHAR*)RawStrings;
while ( (nLenInChars = wcslen(pCurrent)) != 0 && IdProcessIndex == 0 )
{
    WCHAR* pName;
    pName = pCurrent + nLenInChars + 1;

    if ( wcscmp( pName, L"ID Process" ) == 0)
    {
        IdProcessIndex = _wtoi( pCurrent );
    }

    pCurrent = pName + wcslen( pName ) + 1;
}

// Get data for the "ID Process" counter
WCHAR strIdProcessIndex[32];
_itow( nIdProcessIndex, strIdProcessIndex, 10 );

RegQueryValueExW(HKEY_PERFORMANCE_DATA, strIdProcessIndex, NULL, NULL, (PBYTE)pData, &len)

问题是,在某些机器(安装了 Windows CE 开发工具包的机器)上有第二个名为“ID Process”的 perfmon 计数器,因此上面的代码找到了错误计数器的 ID。

除了它们所处的顺序之外,我看不到任何方法来区分两者 - 目前我认为我最好的选择是采用我找到的具有匹配名称的第一个计数器,是否有更好的选择?

(不可能将其迁移到 .Net 或类似的东西)


我意识到这已经很旧了,但以防万一它有帮助:

  1. 蒂姆是对的,自己解析二进制数据很困难。为痛苦的世界做好准备。我建议使用 PDH(为您封装注册表访问),或者如果失败,则使用 WMI(尽管请注意 WMI 速度要慢得多)。
  2. 您无法仅获取性能计数器的数据(ID Process,有索引784)。您需要为整个对象获取它(Process,有索引230).
  3. 内置对象的 ID 是保证是一样的 http://support.microsoft.com/kb/287159在所有 Windows 安装上。因此,如果这是您需要的唯一计数器,只需使用230. :)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 winreg 查找 perfmon 计数器 id 的相关文章

随机推荐

  • 我的随机化代码无法离线工作

    我是一个 php 菜鸟 我只是根据我在网上找到的其他一些脚本制作了一个小脚本 它从名为 Random 的文件夹中随机选取 3 张图像并显示它们 当我在线运行脚本时它可以工作 但是当我尝试在 xampp 上离线运行它时 我收到此错误 注意 未
  • UITableView 的第一行在顶部栏下被截断

    我有一个UITabBarController有两个UITableViews 全部都是在故事板中创建的 问题是 在第二个表视图中 表的前几行位于顶栏下方 第一个表视图不会发生这种情况 即使我更改视图的顺序 第一个视图将完美工作 第二个视图将呈
  • 派生类构造函数在 python 中如何工作?

    我有以下基类 class NeuralNetworkBase def init self numberOfInputs numberOfHiddenNeurons numberOfOutputs self inputLayer numpy
  • R:使用 spplot 地图中的自定义调色板

    我正在努力使用在多个多边形上引入自定义调色板spplot来自sp包裹 我正在绘制几个字段并希望显示我的评级 其值可以为 0 1 2 4 或 5 我需要为此使用自定义颜色 我尝试的是 spplot Map zcol Rating col re
  • 仅在现有 iOS 应用程序中对某些视图使用 React Native

    是否可以仅对项目中的一个视图使用 React Native 我已经成功为特定的 iOS 应用程序屏幕添加了 React 视图 使用 与现有 iOS 项目集成 文档中的说明 但我不知道如何从该屏幕获取数据并调用其他 objective c 代
  • VB.Net Xml 反序列化为类

    我在尝试将一些 XML 反序列化到我创建的类中时遇到了一些问题 我得到的错误是 There is an error in XML document 1 2 at System Xml Serialization XmlSerializer
  • MongoDB索引/RAM关系

    我即将在一个新项目中采用 MongoDB 我选择它是为了灵活性 而不是可扩展性 因此将在一台机器上运行它 从文档和网络帖子中我一直读到所有索引都在 RAM 中 这对我来说没有意义 因为我的索引很容易大于可用 RAM 的量 谁能分享一些关于索
  • 如何使用java获取xml节点的属性值

    我有一个 xml 如下所示
  • 我怎样才能让 Modelsim 警告我有关“X”信号的信息?

    我正在使用 Modelsim 进行大型设计 我已经了解了 modelsim 模拟的工作方式 我想知道 是否有一种方法可以在 modelsim 在仿真阶段评估信号并发现它是红色信号 即 X 时向我发出警告 要知道 不可能列出设计的所有信号并一
  • Rails 4:SQLException:没有这样的表:

    我在 Rails4 中运行以下命令 bundle exec rake db migrate 201405270646 AddAttachmentImageToPins 迁移 change table pins 耙子中止 StandardEr
  • 通过扬声器的 AVAudioPlayer

    我得到以下代码 id init if self super init UInt32 sessionCategory kAudioSessionCategory MediaPlayback AudioSessionSetProperty kA
  • 选中复选框时动态更改引导程序进度条值

    我正在尝试制作一个带有引导进度条的动态清单 这是我的标记代码 div class progress progress striped active div class progress bar div div div class row t
  • 如何在TF2.0中创建具有自定义渐变的keras层?

    由于在 TensorFlow 2 0 中 他们计划统一 keras 下的所有高级 API 我不太熟悉 并完全删除会话 我想知道 如何创建具有自定义渐变的自定义 keras 层 我见过 相当有限 guide https keras io la
  • UISearchBar 横向宽度错误

    当您以横向模式启动时 我的搜索栏稍微向右拉伸得太远 如果您随后旋转到纵向模式 它仍然有点太宽 但是 如果您以纵向模式开始 然后将其旋转为横向模式 也可以 这是我的代码 sBar UISearchBar alloc initWithFrame
  • 如何使用 php 生成带有肥皂信封和正文标记的 XML

    我无法使用 Soap Envelope 和 Body Tag 生成 XMl 这是代码 rootElement XMLDoc gt createElement AddDetails rootNode XMLDoc gt appendChild
  • 如何对使用 Popen 的函数进行单元测试?

    我正在编写一个包含大量文件操作的程序 一些操作是通过调用来完成的subprocess Popen eg split l 50000 filename gzip d f filename filename 现在我想对程序的功能进行单元测试 但
  • 递归函数的产量

    我正在尝试对给定路径下的所有文件执行某些操作 我不想事先收集所有文件名然后对它们执行某些操作 所以我尝试了以下方法 import os import stat def explore p s list os listdir p for a
  • 如何进行MultiLabel分层抽样?

    我正在处理多标签数据 我想使用分层采样 假设我有 10 个类 我们将它们称为 ABCDEFGHIJ 我有一个包含 10 列的数据框 对应于每个标签 其中包含有关条目的其余信息 我可以在 n entry 10 矩阵中提取这 10 列 我将其称
  • 如何设置不同的列表选择器

    mainListView setOnItemClickListener new AdapterView OnItemClickListener Override public void onItemClick AdapterView
  • 通过 winreg 查找 perfmon 计数器 id

    我有一个通过 winreg h 中公开的 API 收集 Perfmon 计数器值的应用程序 为了收集 Perfmon 计数器值 我必须调用RegQueryValueExW传递我感兴趣的 Perfmon 计数器的 id 为了获取该 ID 我需