Windows 中的性能计数器名称是本地化的,因此例如计数器\Processor(_Total)\% Processor Time
在 Windows 的其他语言版本中称为其他名称。这意味着为了找到正确的名称,必须首先找到计数器的索引,然后使用PdhLookupPerfNameByIndex(按索引) http://msdn.microsoft.com/en-us/library/aa372648%28v=VS.85%29.aspx函数来获取本地化名称(使用Pdh添加英文计数器 http://msdn.microsoft.com/en-us/library/aa372536%28v=VS.85%29.aspx如果支持 Windows XP 则已发布)。
这对于性能对象来说都是有好处的(Processor
)和计数器(% Processor Time
)上面计数器路径的一部分,但是实例名称(_Total
)?我在注册表中找不到该字符串,因此我认为它是由提供该信息的任何系统组件提供的。
系统提供的性能计数器的实例名称是否保证在不同语言版本的 Windows 中相同?
如果不是,我如何确定哪个实例对应于_Total
实例?
根据此支持知识库 http://support.microsoft.com/kb/287159,只有对象和计数器具有友好名称:
但是,实例在每种语言中都没有用户友好的名称。
因此,这让我相信给定计数器的实例名称是动态获取的(例如进程的 ProcessId)或静态获取的(例如硬编码)。当然,没有什么可以阻止有人在英语版本中硬编码“_Total”,在德语版本中硬编码其他内容,尽管似乎常见的做法是将语言内容限制在注册表中,并通过以下方式处理对象和计数器按动态或静态名称索引和实例。我认为微软一直使用“_Total”,正如我在一些外语安装中看到的那样。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)