2009-01-13 8 views
12

Y at-il un moyen en C# ou C/C++ & Win32 pour surveiller l'utilisation du réseau d'un certain processus (sans que cette application soit construite par vous évidemment)? Je voudrais surveiller seulement 1 processus pendant une heure environ, puis retourner les octets utilisés par ce processus, comme par exemple limewire.Surveiller l'utilisation du réseau d'un processus?

Est-ce possible? Je sais que netstat -e sur windows vous dira le nombre total d'octets envoyés/reçus, mais c'est pour tous les processus.

edit: Si je ne peux pas retourner une seule utilisation des processus, comment puis-je obtenir les octets envoyés/reçus par l'ensemble du système? comme netstat affiche sauf que je veux juste les entiers.

par exemple:

 
netstat -e 

          Received   Sent 

Bytes     2111568926  1133174989 
Unicast packets    3016480   2711006 
Non-unicast packets   3122   1100 
Discards       0    0 
Errors       0    0 
Unknown protocols     0 

Je veux juste obtenir 2 variables, comme rec = 2111568926 et envoyé = 1133174989

+0

lequel êtes-vous allé pour Mike? – Greg

Répondre

5

Vous pouvez utiliser WinPcap pour cela ou écrire votre propre pilote de périphérique. Je ne pense pas qu'il existe des compteurs de perfmon par processus que vous pouvez utiliser.

5

C'est possible, mais si je ne me trompe pas, vous devrez créer un pilote réseau pour filtrer tout le trafic réseau et déterminer quel processus a créé le trafic.

Microsoft a une application gratuite appelée Microsoft Network Monitor 3.2 (download). Selon les notes de version, il a également une API à utiliser.

API Moniteur réseau: Créez vos propres applications qui capture, analyser et analyser le trafic réseau!

Here is a blog post about these API's. À mon avis, vous devriez utiliser cette API (ou une autre API telle que WinPcap) pour filtrer le trafic au lieu d'écrire votre propre pilote de périphérique.

Questions connexes