如何通过Windows性能计数器API查询特定进程的磁盘IO读写速度?

2026-05-17 12:180阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1235个文字,预计阅读时间需要5分钟。

如何通过Windows性能计数器API查询特定进程的磁盘IO读写速度?

基本原因通常是计算器路径拼写错误或目标进程不存在。

Windows 性能计数器路径对大小写不敏感,但空白、斜杠、实例名必须严格匹配。

例如,获取某个进程的磁盘读取字节数,正确路径是:

实操建议:

  • 先用 perfmon.exe 手动添加相同计数器,确认路径有效;再复制路径到代码中
  • 若进程名含空格(如 Visual Studio Code),路径中直接写 Visual Studio Code 即可,无需引号或转义
  • 调用 PdhAddCounter 后务必检查返回值,PDH_INVALID_DATA 很可能意味着该进程此刻无磁盘 IO 活动(比如刚启动还没读写),不是路径错
  • 同一进程多个实例(如多个 cmd.exe)时,路径应为 "\Process(cmd#1)\IO Read Bytes/sec",可用 PdhEnumObjectItems 枚举所有实例名

如何用 PdhCollectQueryDataPdhGetFormattedCounterValue 获取实时速率值

性能计数器的“/sec”类值(如 IO Read Bytes/sec)本质是差分速率,需要至少两次采样才能算出。

阅读全文
标签:WindowsCwin

本文共计1235个文字,预计阅读时间需要5分钟。

如何通过Windows性能计数器API查询特定进程的磁盘IO读写速度?

基本原因通常是计算器路径拼写错误或目标进程不存在。

Windows 性能计数器路径对大小写不敏感,但空白、斜杠、实例名必须严格匹配。

例如,获取某个进程的磁盘读取字节数,正确路径是:

实操建议:

  • 先用 perfmon.exe 手动添加相同计数器,确认路径有效;再复制路径到代码中
  • 若进程名含空格(如 Visual Studio Code),路径中直接写 Visual Studio Code 即可,无需引号或转义
  • 调用 PdhAddCounter 后务必检查返回值,PDH_INVALID_DATA 很可能意味着该进程此刻无磁盘 IO 活动(比如刚启动还没读写),不是路径错
  • 同一进程多个实例(如多个 cmd.exe)时,路径应为 "\Process(cmd#1)\IO Read Bytes/sec",可用 PdhEnumObjectItems 枚举所有实例名

如何用 PdhCollectQueryDataPdhGetFormattedCounterValue 获取实时速率值

性能计数器的“/sec”类值(如 IO Read Bytes/sec)本质是差分速率,需要至少两次采样才能算出。

阅读全文
标签:WindowsCwin