确定进程读取的总字节数

时间:2009-09-01 19:12:06

标签: c++ windows file-io

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

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

我知道这必须以某种方式实现,因为我可以显示在进程运行时在任务管理器中读取的总字节数,我希望能够为已经完成的进程获取此数字。

2 个答案:

答案 0 :(得分:1)

您可以使用GetProcessIOCounters功能。这将返回总读操作,写操作,其他,读字节,写字节和其他字节。为了实现这个目标,这个过程仍然需要活着 - 持有流程的句柄就足够了。或者,您的流程可以在退出时记录此信息。

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

答案 1 :(得分:0)

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