2009-10-28 74 views
6

我想显示进程列表(Windows,C++)以及它们以KB /秒为单位从磁盘读取和写入的数量。以编程方式获取Windows上的进程磁盘io统计信息?

Windows 7的资源监视器有能力,所以我应该能够做到这一点。

但是我无法找到相关的API调用或在perfmon计数器中找到任何东西。任何人都可以指出我的方向吗?

+0

我认为事件追踪(ETW)是唯一可行的方法......但是体面的ETW示例非常稀缺。 – dutchmega 2009-10-30 17:58:24

回答

11

您可以拨打GetProcessIoCounters以获得每个进程的整体磁盘I/O数据 - 您需要跟踪增量并自行转换为基于时间的速率。

该API会告诉您I/O操作的总数以及总字节数。

+0

如果这样做不能让您满意,那么您可能需要四处挖掘并编写WMI查询。 – opello 2009-10-28 20:53:37

+4

不GetProcessIoCounters()给你所有的IO操作,包括网络? – dutchmega 2009-10-29 11:32:28

+0

它是一个驱动程序io的功能? – 2009-11-05 02:22:11

3

WMI可以做到这一点,只要您定期对其进行快照以获得某些“最近”时间段的差异统计信息。 This post提供了一种独特的混合解决方案,VBScript从WMI和Perl中读取信息,并持续在Windows控制台中显示信息。尽管有奇怪的语言混合,但我认为它是一个很好的例子,说明如何获得所需的信息(当然,应该很有可能用C++重新编写它的所有信息)。

+3

再次,总的所有IO操作(与GetProcessIoCounters()相同) – dutchmega 2009-11-05 12:07:21

相关问题