2009-09-01 24 views
0

我目前正在开发一个项目,其中一个目标是减少从磁盘读取的数据总量。有没有办法确定进程运行的总字节数?我正在使用在Windows XP上运行的Visual Studio 2005构建的C++应用程序。确定进程读取的总字节数

理想情况下,如果指定进程名称,我想要某种可以打印结果的监视器。但是,如果某种API可以在我自己的应用程序中使用,那也可以。

我知道这一定是可能的,因为我可以显示任务管理器在进程运行时读取的总字节数,我希望能够为已经完成的进程获取这个数字。

回答

1

您可以使用GetProcessIOCounters函数。这将返回总读取操作,写入操作,其他读取字节,写入字节和其他字节。这个过程仍然需要活着才能发挥作用 - 掌握过程应该足够了。或者,您的流程可以在退出时记录此信息。

如果您的目标是减少磁盘I/O,我建议您使用Windows Performance Toolkit。这将向您显示您正在读取大部分数据的哪些文件,哪些线程正在读取大部分数据,并且还会帮助您获得更多的系统范围视图,以防您在系统中的其他位置导致磁盘I/O 。

+0

Windows性能工具包看起来不错,不幸的是,它需要Windows Vista,而我仍然在XP – Moe 2009-09-01 19:37:50

0

SysInternals的ProcMon将为您提供进程的所有I/O,包括调用堆栈。他们的FileMon工具也可能有用。

+0

...如果你只是想要高级别的计数,内置的taskmgr.exe也能完成这项工作:)只要确保显示其他(可选)列并为读取I/O请求选择适当的字段。 – reuben 2009-09-03 07:40:19

+0

@Reuben - 谢谢,如果你会注意到,我在问题中提到过,但我希望能够知道,而不必看任务管理器,而且我想要一些将会持续的事情。 – Moe 2009-09-03 17:51:31