如何获取当前进程的Windows性能计数器 我正在为C++应用程序Fo.Exe编写代码。在应用程序内部,我想记录它的地址空间使用情况。因此,我要查看的性能计数器是“\Process(foo)\virtualbytes”。我遇到的问题是,系统上可能运行多个foo.exe实例。在perfmon中,我可以看到它们被引用为“\Process(foo#2)\Virtual Bytes”,其中#2可以是任何数字,具体取决于进程的数量

如何获取当前进程的Windows性能计数器 我正在为C++应用程序Fo.Exe编写代码。在应用程序内部,我想记录它的地址空间使用情况。因此,我要查看的性能计数器是“\Process(foo)\virtualbytes”。我遇到的问题是,系统上可能运行多个foo.exe实例。在perfmon中,我可以看到它们被引用为“\Process(foo#2)\Virtual Bytes”,其中#2可以是任何数字,具体取决于进程的数量,c++,windows,performance,C++,Windows,Performance,如何构造计数器路径来获取当前进程的虚拟字节,以处理进程存在多个实例的情况?您的实例是具有与当前进程ID匹配的ID process计数器值的实例。不幸的是,除了获取所有实例和枚举它们,直到找到属于您的实例为止,但这是一件非常简单的事情。如果您只需要进程的虚拟字节(或其他内存统计信息),那么使用起来就容易多了,如中所述。请务必确保ID进程值与PID匹配。仅仅因为你现在是foo#2,并不意味着foo不会离开你,把你变成foo#1@盖布:我认为这些实例是在“出生”时命名的。一旦创建为foo#2,它就不能

如何构造计数器路径来获取当前进程的虚拟字节,以处理进程存在多个实例的情况?

您的实例是具有与当前进程ID匹配的
ID process
计数器值的实例。不幸的是,除了获取所有实例和枚举它们,直到找到属于您的实例为止,但这是一件非常简单的事情。

如果您只需要进程的虚拟字节(或其他内存统计信息),那么使用起来就容易多了,如中所述。

请务必确保
ID进程
值与PID匹配。仅仅因为你现在是
foo#2
,并不意味着
foo
不会离开你,把你变成
foo#1
@盖布:我认为这些实例是在“出生”时命名的。一旦创建为
foo#2
,它就不能更改名称,直到进程终止。雷姆斯:这不是我使用Perfmon的经验。谢谢你提供的信息。我不会说获得这些信息是微不足道的,但我做到了。图书馆的界面如此糟糕,真令人失望。我很惊讶!Gabe是正确的——实例发生了变化。只能依赖
ID进程
计数器。