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