Я прошел через все ответы, связанные с переполнением стека, и ни Google, ни Bing не показывают мне никакой любви. Мне нужно знать, когда сетевой кабель был подключен или отключен на устройстве Windows CE, желательно, из приложения Compact Framework.Обнаружение «Сетевой кабель отключен» в Compact Framework
ответ
Я понимаю, что я отвечаю на свой собственный вопрос здесь, но на самом деле это вопрос, заданный по электронной почте, и я действительно потратил немало времени на то, чтобы найти ответ, поэтому я размещаю его здесь.
Таким образом, общий ответ на этот вопрос заключается в том, что вам нужно позвонить в драйвер NDIS через IOCTL и сообщить, что вы заинтересованы в уведомлениях. Это делается с помощью значения IOCTL_NDISUIO_REQUEST_NOTIFICATION (документы говорят, что это не поддерживается в WinMo, но документы ошибочны). Конечно, получение уведомлений не так просто - вы просто получаете хороший обратный вызов. Вместо этого вам нужно развернуть point to point message queue и отправить его на вызов IOCTL вместе с маской, в которой вам нужны конкретные уведомления. Затем, когда что-то изменится (например, кабель потянут), вы получите структуру NDISUIO_DEVICE_NOTIFICATION (опять же MSDN неправильно говорит, что это только CE) в очереди, после чего вы можете разобрать, чтобы найти адаптер, в котором было событие, и что точное событие.
С точки зрения управляемого кода это на самом деле много кода, который нужно написать - CreateFile, чтобы открыть NDIS, все API очередей, структуры для уведомлений и т. Д. К счастью, я уже был в этом и уже добавили его в Smart Device Framework. Поэтому, если вы используете SDF, получение уведомлений выглядит следующим образом:
public partial class TestForm : Form
{
public TestForm()
{
InitializeComponent();
this.Disposed += new EventHandler(TestForm_Disposed);
AdapterStatusMonitor.NDISMonitor.AdapterNotification +=
new AdapterNotificationEventHandler(NDISMonitor_AdapterNotification);
AdapterStatusMonitor.NDISMonitor.StartStatusMonitoring();
}
void TestForm_Disposed(object sender, EventArgs e)
{
AdapterStatusMonitor.NDISMonitor.StopStatusMonitoring();
}
void NDISMonitor_AdapterNotification(object sender,
AdapterNotificationArgs e)
{
string @event = string.Empty;
switch (e.NotificationType)
{
case NdisNotificationType.NdisMediaConnect:
@event = "Media Connected";
break;
case NdisNotificationType.NdisMediaDisconnect:
@event = "Media Disconnected";
break;
case NdisNotificationType.NdisResetStart:
@event = "Resetting";
break;
case NdisNotificationType.NdisResetEnd:
@event = "Done resetting";
break;
case NdisNotificationType.NdisUnbind:
@event = "Unbind";
break;
case NdisNotificationType.NdisBind:
@event = "Bind";
break;
default:
return;
}
if (this.InvokeRequired)
{
this.Invoke(new EventHandler(delegate
{
eventList.Items.Add(string.Format(
"Adapter '{0}' {1}", e.AdapterName, @event));
}));
}
else
{
eventList.Items.Add(string.Format(
"Adapter '{0}' {1}", e.AdapterName, @event));
}
}
}
- 1. Как узнать, отключен ли сетевой кабель?
- 2. Обнаружение, если сетевой порт отключен.
- 3. C# Compact Framework обнаружение соединения закрыто
- 4. Обнаружение пальцев в формате .Net Compact Framework
- 5. .NET compact framework - обнаружение, если под эмулятором?
- 6. Сетевой доступ отключен в MSDTC
- 7. Кабель сетевого адаптера C# отключен или адаптор отключен
- 8. compact-framework не может установить подключение к сетевой ошибке
- 9. Как смоделировать «подключенный сетевой кабель» (TCP/IP)?
- 10. Vagrant box post create - отключить сетевой кабель
- 11. VBScript: как написать сценарий, управляемый событиями, для проверки того, отключен ли сетевой кабель?
- 12. как получить событие всякий раз, когда сетевой кабель подключен или отключен.
- 13. Узел считает, что он подключен к сети, когда сетевой кабель отключен. Кардиостимулятор/Corosync
- 14. CreateParams в Compact Framework
- 15. Обнаружение сетевой инфраструктуры
- 16. Обнаружение, если клиент отключен
- 17. Обнаружение сетевой активности в C
- 18. sync Framework for Compact Framework
- 19. Как программно «выдернуть сетевой кабель» в большом приложении Linux?
- 20. XAML и Windows Mobile (. Compact Compact Framework)
- 21. ILASM для Compact Framework?
- 22. Поддержка TeeChart Compact Framework
- 23. Recurssion + .Net Compact framework
- 24. Compact Framework - Сила сигнала
- 25. Compact Framework Текущая папка
- 26. Compact Framework Charting
- 27. HttpWebRequest Сбой Compact Framework
- 28. ListViewItem Border - Compact Framework
- 29. Ninject Compact Framework
- 30. SQLite Compact framework