0

我正在尝试解决旧的“如何获得当前进程的 Windows 性能计数器”问题。基本上,我正在枚举 Process Object 实例以获取 Process 对象的列表,然后我可以查询它们的进程 ID 并与我自己的进行比较。

基于此,我可以使用正确的实例索引(创建类似的东西\Process(my_program#3)\<counter>)构建性能计数器路径,然后我可以使用它来查询我感兴趣的任何计数器。但是如果一个或多个其他实例会发生什么my_program 在PdhAddCounter调用之前退出?如果我理解正确,这意味着我的计数器路径现在指的是不同的进程或者现在无效。它们甚至可能在查询进程 ID 时消失...

在我可以使用它来获取计数器句柄之前,如何防止计数器路径变得无效?

4

1 回答 1

0

哇,你是对的。这对我来说似乎是一个主要的设计缺陷。如果实例的名称不是唯一的,则基本上不可能可靠地监视实例。我确实偶然发现了专门针对 Process 和 Thread 对象的解决方法,但这是一个可能影响其他应用程序的全局设置。

我认为最安全的方法是观察所有进程对象,每次收集数据时,都要通过并找到具有所需进程 ID 的对象。

于 2011-09-28T16:09:27.610 回答