2009-12-21 3 views
3

J'utilise ManagementEventWatcher pour surveiller la déconnexion du câble réseau à l'aide de System.Management.MSNdis_StatusMediaDisconnect et le périphérique Nom unique

ManagementEventWatcher avec le WQL: SELECT * FROM MSNdis_StatusMediaDisconnect,
et la méthode suivante est tiré, lorsque EventArrived:

private void ServiceNetWorkStatusWmiDisconnected(object sender, EventArrivedEventArgs args) 
{ 
    string instanceName = args.NewEvent.Properties["InstanceName"].Value as string; 
    ServiceNetWorkStatusWmi = string.Format("Network disconnected ({0})", instanceName); 
    Console.WriteLine(ServiceNetWorkStatusWmi); 
} 

Le problème est:
J'ai 2 interfaces réseau, du même fabricant, et les deux cas , le nom d'instance a la même valeur et je ne peux pas identifier quel réseau est débranché!

J'ai essayé toutes les propriétés de EventArrivedEventArgs, mais elles n'ont pas d'identificateur de contrainte pour le périphérique ... comme un ID de périphérique.

Comment puis-je savoir si l'interface réseau a été débranchée?

Répondre

0

Jetez un coup d'œil à "Win32_NetworkAdapter.NetConnectionID". C'est - sur ma machine [!!] - la même chaîne que vous verrez dans les connexions réseau [panneau de contrôle] et il devrait être la même valeur, apparaissant dans "MSNdis_EnumerateAdapter.InstanceName =".

Peut être, cela aide !?

br - mabra

+0

Mabra, Si j'exécute une autre WQL à Win32_NetworkAdapter je peux voir la NetConnectionId déconnecté ... mais le problème est lorsque l'événement MSNdis_StatusMediaDisconnect arrive, je ne pas avoir le adapterid sur l'expéditeur de l'objet, ni sur EventArrivedEventArgs !!!! c'est nul !!! donc je dois exécuter un autre WQL quand arrive l'évènement pour connaitre le netadapter ... je pense que ce n'est pas une bonne solution ... –

Questions connexes