PDH性能计数器实例名称
PDH performance counter instance names
我正在尝试使用PDH API获取性能信息。我遇到的问题是,我无法将流程实例绑定到计数器实例:不同流程实例的实例名称总是相同的。
例如,不同svchost进程的性能计数器具有实例名vchost#1、svchost#2等。但是,PDH函数总是只返回svchost,而不返回尾随数字。
我使用PDH_FMT_COUNTERVALUE_ITEM.szName来获取实例名称。
我还尝试了PdhEnumObjectItems()函数,但没有成功:所有返回的实例名称仍然相同。
不幸的是,我不认为PDH提供任何方法来区分具有相同名称的两个进程。
如果这给您带来了问题,您可以转到较低级别的注册表API。(PDH是一个包装器,试图简化性能计数器的使用,但V1性能计数器的真正API是RegQueryValueEx,这正是PDH实际用来读取V1性能计数器值的东西。进程性能计数器是V1计数器。)低层注册表API在PERF_INSSTANCE_DEFINITION结构中提供信息,其中包括一个可能会有所帮助的UniqueID字段。(尽管Process性能计数器可能实际上并没有将UniqueID设置为任何有用的值——有些性能计数器将其设置为一个好值,而另一些则只是将其设置成0。)
将来,我希望Process性能计数器将PID包含在实例名称中,并将PID用作实例UniqueID,这将解决问题。
相关文章:
- 查询性能计数器限制/加快幻灯片速度
- 在类实例或方法的上下文中调用函数以进行性能分析
- 全局对象是否提供比多个本地实例更好的性能
- 我们是否应该将指向类实例的智能指针存储在大型 std::vector 中以获得更好的性能?
- 在Windows上读取性能数据计数器是否需要任何特殊的安全权限
- 如何以编程方式访问c/c++a-la-rdtsc中的性能计数器
- PDH性能计数器实例名称
- 查询性能计数器函数在在线判断中的使用
- 性能计数器C++的窗口时序漂移
- C中ubuntu上的性能计数器库
- 不带lodctr的c++中的性能计数器
- 是否可以使用查询性能计数器(Win32,C)获取时间戳
- 从C++公开的 Windows 性能计数器始终在 perfmon 中产生"Can't load counters".exe
- Visual c++中的函数性能计数器
- 需要对"High definition time-stamps"进行一些澄清(win32,direct3d,性能计数器)
- 在Linux下使用硬件性能计数器
- 卤化物的性能计数器
- 使用性能计数器获取正常运行时间的权限问题
- 如何在C++中读取性能计数器
- 以与语言无关的方式检索性能计数器值