PdhExpandWildCardPath 返回太多路径

发布于 2024-10-18 23:31:33 字数 353 浏览 4 评论 0原文

我试图获取我的(Delphi XE)应用程序中每个(最多 200 个)线程的 CPU 利用率。为此,我向 PdhExpandWildCardPath 传递一个字符串 '\Thread(myappname/*)\% Processor Time'。然而(在 Win7/64 上)从此函数返回的缓冲区为系统中运行的每个线程返回一个字符串,换句话说,它似乎将输入视为 '\Thread(*/*)\ %处理器时间'。这是出乎意料的。当我随后扩展字符串以获得“ID Thread”时,也会发生同样的情况。

显然,我可以过滤应用程序名称上的结果字符串,并且仅添加我需要的计数器,但这需要数百次子字符串扫描。我是否误解了通配符的工作原理?

I am trying to obtain the CPU utilization of each of the (up to 200) threads in my (Delphi XE) application. To prepare for this I pass to PdhExpandWildCardPath a string '\Thread(myappname/*)\% Processor Time'. However (on Win7/64) the buffer returned from this function returns a string for every thread running in the system, in other words it seems to have treated the input as if it were '\Thread(*/*)\% Processor Time'. This was unexpected. The same happens when I subsequently expand a string to get 'ID Thread'.

Obviously I can filter the resulting strings on the application name and only add the counters I need, but this requires many hundreds of substring scans. Have I misinterpreted how the wildcards work?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

长伴 2024-10-25 23:31:33

晚了,但我也遇到了同样的问题,也许其他人需要它:

这里是: '\Thread(myappname*)\% Processor Time'

对于 ProcessNameFormat 设置为 2 和 ThreadNameFormat 设置特别有用到 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PerfProc\Performance' 中的 2

对于 ProcessNameFormat = 2 -> 链接,同样适用于 ThreadNameFormat,尽管我不能找到任何类型的文档。

Late, but I've hit the same wall, maybe someone else needs it:

Here it is: '\Thread(myappname*)\% Processor Time'

Especially useful with ProcessNameFormat set to 2 and ThreadNameFormat set to 2 in 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PerfProc\Performance'

For ProcessNameFormat = 2 -> link, same applies for ThreadNameFormat, although I couldn't find any kind of documentation.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文