我想要获得我的(Delphi XE)应用程序中每个(最多200个)线程的CPU利用率。为此做准备,我传递给PdhExpandWildCardPath一个字符串'\Thread(myappname/*)\% Processor Time'
。但是(在Win7/64上)从该函数返回的缓冲区为系统中运行的每个线程返回一个字符串,换句话说,它似乎已经将输入看作是'\Thread(*/*)\% Processor Time'
。这是意想不到的。当我随后扩展字符串以获得“ID线索”时,会发生同样的情况。PdhExpandWildCardPath返回太多路径
很明显,我可以过滤应用程序名称上的结果字符串,只添加我需要的计数器,但这需要数百个子字符串扫描。我误解了通配符是如何工作的?
仅仅枚举你自己的进程中的线程和构建这些名字就不那么容易了吗? – 2011-02-25 11:36:14
为什么不为每个线程使用GetThreadTimes? – Misha 2011-02-25 13:48:33
@David:懒惰,我已经完成了通配符代码。但是,谢谢,我现在已经改变了我的代码,首先枚举线程,并且更快。而且我仍然认为通配符扩展很奇怪。 – frogb 2011-02-25 15:36:54