监控进程的网络使用情况?

在C#或C / C ++和Win32中是否有办法监视某个进程的网络使用情况(显然你没有构建该应用程序)? 我想监视一个小时左右的1个进程,然后返回仅由该进程使用的字节,例如limewire。

可能吗? 我知道windows上的netstat -e会告诉你发送/接收的总字节数,但这适用于所有进程。

编辑:如果我不能只返回一个进程用法,我如何获得整个系统发送/接收的字节? 作为netstat显示,除了我只想要整数。

例如:

 netstat -e已接收已发送字节数2111568926 1133174989单播数据包3016480 2711006非单播数据包3122 1100丢弃0 0错误0 0未知协议0 

我只想获得2个变量,如rec = 2111568926和sent = 1133174989

您可以使用WinPcap或编写自己的设备驱动程序。 我不认为你可以利用每个进程的perfmon计数器。

这是可能的,但如果我没有弄错,你将不得不创建一个网络驱动程序来过滤所有网络流量,而不是找出创建流量的进程。

微软有一个名为Microsoft Network Monitor 3.2 ( 下载 )的免费应用程序。 根据发行说明,它还有一个api可以使用。

网络监视器API:创建自己的应用程序,捕获,解析和分析网络流量!

这是一篇关于这些API的博客文章 。

在我看来,您应该使用此API(或其他API,如WinPcap)来过滤流量,而不是编写自己的设备驱动程序。

我在MSDN论坛上问同样的问题并得到答案。 坦率地说,已经尝试过了。 即尝试但不是那么难))建议使用ETW。 我没有意识到如何正确使用ETW事件。 http://social.msdn.microsoft.com/Forums/en-US/perfmon/thread/b82da95a-1c18-49ce-9bfa-e3d79ec40907

NetLimiter 2限制器

网络流量监视器您可以从此处获取最新的免费软件版本