在语言无关的方式检索性能计数器值

在Windows中,性能计数器具有不同的名称,取决于操作系统的语言。 例如,在英文的Windows版本,还有就是性能计数器\Processor(_Total)\% Processor Time 。 同样的计数器被称为\Prozessor(_Total)\Prozessorzeit (%)在德国的Windows版本。

有什么办法来检索语言无关的方式性能计数器值(用C ++或C#)? 或者是有一个替代,以获得整个计算机的处理器负载没有性能计数器?

--------------解决方案-------------

每个性能监视器计数器被赋予一个唯一的(每机)整数ID来识别性能监视器计数器(但是在标准计数器这个ID是保证保持不变的情况下)。

连接性能监视器的信息计数器的ID,以便为其美国的英文名字和他们的本地化名称存储在注册表中的以下项:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib

一旦你已经使用注册表来获得性能监视器计数器名称(您可以在您的应用程序中嵌入一个恒定的标准柜),你可以使用PdhLookupPerfNameByIndex功能来查找本地化名称为给定的计数器ID。

请参阅有关更多详细信息本地化语言(Microsoft知识库)正确使用PDH的API。

您可能还会发现通过WinReg项(计算器)有些相关的perfmon发现柜台ID。

还有WinAPI的功能, QueryHighPerformanceCounterQueryHighPerformanceFrequency

您是否尝试过使用PDH辅助功能和PdhAddEnglishCounter功能?

分类:C# 时间:2012-12-26 人气:1
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.316 (s). 10 q(s)