Rog*_*mbe 12 performance networking winapi
我想知道哪些进程正在使用我的网络.这在Linux中很容易,但我对如何在Windows中执行此操作感到困惑.
基本上,我希望,对于每个进程,要知道它在一段时间内读取/写入网络的字节数.如果我能知道IP地址/端口号等,那将是非常棒的.
有什么指针吗?Windows Vista/Windows 2008似乎能够在资源监视器中执行此操作.他们是如何做到的呢?开销是多少?
我想在我自己的代码中执行此操作,因此实用程序(TCPView,PerfMon)对我没用.我还想拥有单独的磁盘和网络I/O计数器,因此默认的性能计数器是不够的.
Windows XP,2003,Vista,2008和7首选.Win32或COM OK.
经过大量研究后,我得出以下结论:
iexplore.exe 864 TCP tin 61207 a96-17-203-64.deploy.akamaitechnologies.com http ESTABLISHED 2 12,928 8 9,420所以...
一种可能的解决方案是使用 TCPVIEW 并通过从脚本中以编程方式生成的击键来控制它。您可以将刷新间隔设置为 1、10、30 分钟等,并让脚本发送击键以使 TCPVIEW 将输出保存在文件中。您可能希望脚本以刷新间隔的一半或三分之一发送击键,以确保您获得的快照至少与刷新间隔的 1/2 或 2/3 一样长。您可以使用 Import-CSV 导入文件,并在脚本中轻松操作它。
或者...
你可能会变得受虐狂并使用 ETW。
或者...
您可以深入研究并将 Linux 的 proc 文件系统(正如您所指出的,从脚本中使用起来要容易得多)移植到 Windows :-)
小智 3
我为此写了一个解决方案。
用于收集统计信息的 TDI 筛选器驱动程序,该服务与驱动程序通信并每秒获取一次统计信息。由于过滤器位于 TDI 层,因此我知道哪些套接字属于哪些应用程序。该服务是该数据的服务器,通过我编写的 API 通过共享内存将其提供给任意第三方客户端。我写了一个 GUI 和一个命令行客户端。
您还可以调整发送带宽(每个接口和/或应用程序和/或套接字),并在窗口中实时观察通过套接字传递的数据。
| 归档时间: |
|
| 查看次数: |
8221 次 |
| 最近记录: |