问题标签 [pdh]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2782 浏览

windows - 系统性能计数器的实例名称是否已本地化?

Windows 中的性能计数器名称是本地化的,因此例如\Processor(_Total)\% Processor Time在其他语言版本的 Windows 中,该计数器被称为其他名称。这意味着为了找到正确的名称,必须首先找到计数器的索引,然后使用PdhLookupPerfNameByIndex函数来获取本地化名称(如果应支持 Windows XP,则使用 PdhAddEnglishCounter 不可用)

这对于上面计数器路径的性能对象 ( Processor) 和计数器 ( % Processor Time) 部分都很好,但是实例名称 ( _Total) 呢?我在注册表中找不到这个字符串,所以我想它是由提供信息的任何系统组件提供的。

系统提供的性能计数器的实例名称是否保证在不同语言版本的 Windows 中相同?

如果不是,我如何确定哪个实例对应于该_Total实例?

0 投票
1 回答
354 浏览

c++ - 当前进程的性能计数器的竞争条件

我正在尝试解决旧的“如何获得当前进程的 Windows 性能计数器”问题。基本上,我正在枚举 Process Object 实例以获取 Process 对象的列表,然后我可以查询它们的进程 ID 并与我自己的进行比较。

基于此,我可以使用正确的实例索引(创建类似的东西\Process(my_program#3)\<counter>)构建性能计数器路径,然后我可以使用它来查询我感兴趣的任何计数器。但是如果一个或多个其他实例会发生什么my_program 在PdhAddCounter调用之前退出?如果我理解正确,这意味着我的计数器路径现在指的是不同的进程或者现在无效。它们甚至可能在查询进程 ID 时消失...

在我可以使用它来获取计数器句柄之前,如何防止计数器路径变得无效?

0 投票
2 回答
1503 浏览

c# - 在 Windows 上获得 cpu % 使用率和网络吞吐量的最有效和最基本的方法?

在 windows 平台上获得 cpu % 使用率和网络吞吐量的最有效和基本的方法是什么?

如我错了请纠正我...

  1. windows api // Win32? 开发工具包?(c/c++) #对不起,我不知道...
  2. Windows 管理规范 (WMI),
    • Win32_PerfFormattedData_Tcpip_NetworkInterface 类 BytesReceivedPerSec
    • Win32_PerfRawData_PerfOS_Processor 类 PercentProcessorTime
  3. System.Diagnostics PerformanceCounter
  4. 性能数据助手 (PDH) , pdh.dll
  5. PerformanceCounter(c#/.net 框架)还是其他当今的方法?
  6. ntdll.dll中的 NtQuerySystemInformation

那么获取这些值的最佳方法是什么,我只能导入windows.hkernel32.dll来获取cpu 百分比使用率网络接口速度值吗?

谢谢

0 投票
1 回答
739 浏览

c++ - 计算 Windows 服务器上的线程数;计数器路径

这里有一个类似的线程我尝试自己实现它。即尝试使用 c++ 库获取服务器中运行的线程数。

我可以确切地知道 COUNTER_PATH 是什么吗?(例如,给定链接中的“\Process(*_)\Thread Count” )?用那个和 pid 号创建一个字符串是什么意思?

以下是我到目前为止所写的内容,但没有真正理解任何内容:

**另外,上面链接中给出的解决方案是扩展通配符路径,但是当我检查PdhAddCounter 页面时,它说:“如果计数器路径包含通配符,所有匹配通配符的计数器名称都添加到查询”,所以我不确定是否真的需要扩展。

我一直在查看各种 示例,但我仍然不确定我是否正确地创建了查询或者仍然是 COUNTER_PATH 是什么。谁能给我一个解释?

0 投票
2 回答
3512 浏览

c++ - PDH 无法通过 PdhAddCounter() 访问总 CPU 时间

我目前正在尝试为我的 DirectX 程序制作某种 CPU 使用情况概述,但似乎我无法通过 PdhAddCounter() 获取此信息。我的代码如下所示:

在 PdhAddCounter 调用后,我的状态为 = -1073738824,这会导致程序失败。

我使用的是 Windows 7 64 位系统,我必须在 64 位环境中做一些不同的事情吗?谢谢你的帮助。

0 投票
1 回答
1246 浏览

c++ - PdhGetFormattedCounterValue 和正确的格式

我试图理解性能 API,但我在理解PdhGetFormattedCounterValue函数和dwFormat参数时遇到了问题。

调用此函数时如何知道选择哪种格式?

PDH_COUNTER_INFO在 MSDN 上找到了这个结构,看到这个结构有一个dwType成员,但是我仍然不明白如何使用这个结构来获取有关计数器格式的信息以成功调用该PdhGetFormattedCounterValue函数。

0 投票
1 回答
844 浏览

c++ - 在 Perfmon 中找到的 CPU 百分比

我正在编写一个客户端来从 Windows 机器上收集性能数据。该数据将被发送到存储信息并以图形方式显示的中央服务器。

我正在使用 Windows 性能 API 来收集系统数据。但现在我有一个小问题。服务器需要知道我发送的数据是如何相互关联的,我在网上找不到任何关于 CPU 计数器的有用信息。我的问题是这些计数器之间的关系如何。

例子

% 处理器时间 + % 空闲时间 = 100%

这并不难发现,但我找不到有关其他百分比值的任何信息,例如中断时间、特权时间或用户时间。例如,这些与处理器时间的关系如何。最终目标是添加所有这些值并最终获得 100%。

提前谢谢你,对不起我的英语,我希望我的问题很清楚。

0 投票
1 回答
1379 浏览

c++ - 使用 PdhAddEnglishCounter 时出错

我的代码:

我有这个错误:

pdh 错误

英文翻译:

在库 DLL pdh.dll 中找不到过程 PdhAddEnglishCounterA 中的访问点。

如果我使用PdhAddCounter而不是PdhAddEnglishCounter,我会在Status:中看到0xC0000BC0 (PDH_CSTATUS_BAD_COUNTERNAME)。我需要做什么?

ps 我在 Windows XP 上使用 Visual Studio 2010。

0 投票
1 回答
226 浏览

c++ - 我如何从线程 ID 中知道 PDH 的线程名称

我需要检查context switches线程。我正在编写函数,context switches从线程 id 返回。我正在使用 PDH 库计算上下文切换计数。我可以使用此构造获取所有线程的线程上下文切换计数:

resultBuffer在哪里"Thread(_Total/_Total)\\Context Switches/sec"

我必须改变(_Total/_Total)什么?

0 投票
2 回答
6739 浏览

c++ - 在 c++/windows 中获取特定进程的当前 cpu 使用情况

我想在我的代码中计算特定应用程序的当前 cpu 使用率。我在互联网上查找并找到了适用于 Windows 的 pdh 库。当我尝试它时,我得到的是整体 cpu 使用率,而不是一个进程的 cpu 使用率。

那么我如何使用这条线来获取特定进程的 cpu 使用率?我尝试用进程名称(资源管理器)替换_Total 。那时我的 CPU 使用率为 0。但是我检查了资源监视器,一次打开多个窗口会使 CPU 使用率增加 20%。仍在日志文件中 cpu 使用情况显示为 0。

谁能帮我这个?

提前致谢。