2009-12-21 3 views
3

Я использую ManagementEventWatcher, чтобы наблюдать за отключением сетевого кабеля с помощью System.Management.MSNdis_StatusMediaDisconnect и устройство Уникальное имя

ManagementEventWatcher с WQL: SELECT * FROM MSNdis_StatusMediaDisconnect,
и следующий метод вызывается, когда 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); 
} 

Проблема заключается в том:
У меня есть 2 сетевых интерфейсов, от того же производителя, и оба случая , значение InstanceName имеет одинаковое значение, и я не могу определить, какая сеть отключена от сети!

Я пробовал все свойства EventArrivedEventArgs, но у них нет идентификатора ограничения для устройства ... как идентификатор устройства.

Как я могу узнать, что сетевой интерфейс witch был отключен?

ответ

0

Посмотрите на «Win32_NetworkAdapter.NetConnectionID». Это - на моей машине [!!] - удалите ту же строку, которую вы увидите в сетевых соединениях [панель управления], и она должна быть того же значения, что и в «MSNdis_EnumerateAdapter.InstanceName =».

Может быть, это помогает !? не

уш - mabra

+0

Mabra, если я выполнить другую WQL к Win32_NetworkAdapter я могу просмотреть NetConnectionID отключен ... но проблема в том, когда наступит MSNdis_StatusMediaDisconnect событие, Я не имею AdapterID на объект отправителя, ни на EventArrivedEventArgs !!!! это отстой! поэтому я должен выполнить еще один WQL, когда событие прибывает, чтобы узнать netadapter ... Я думаю, что это нехорошее решение ... – 2009-12-28 17:29:47

Смежные вопросы