He pasado por todo el desbordamiento de pila respuestas Búsqueda viene con, y ni Google o Bing me están mostrando ningún amor. Necesito saber cuándo se ha conectado o desconectado un cable de red en un dispositivo con Windows CE, preferiblemente, desde una aplicación Compact Framework.'Red de cable desconectado' Detectando en el Compact Framework
Respuesta
que se dan cuenta de que estoy respondiendo a mi propia pregunta aquí, pero en realidad era una pregunta que a través de correo electrónico, y en realidad pasé bastante tiempo para encontrar la respuesta, así que lo pongo aquí.
Así que la respuesta general de cómo se detecta esto es que usted tiene que llamar al controlador NDIS a través de un IOCTL y decirle que usted está interesado en las notificaciones. Esto se hace con el valor IOCTL_NDISUIO_REQUEST_NOTIFICATION (los documentos dicen que esto no es compatible con WinMo, pero los documentos son incorrectos). Por supuesto, recibir las notificaciones no es tan sencillo: simplemente no puedes obtener una buena devolución de llamada. En su lugar, debe girar un point to point message queue y enviarlo a la llamada IOCTL, junto con una máscara de las notificaciones específicas que desea. Luego, cuando algo cambia (como se tira del cable) obtendrá una estructura NDISUIO_DEVICE_NOTIFICATION (nuevamente, MSDN dice incorrectamente que esto es solo CE) en la cola, que luego puede analizar para encontrar el adaptador que tuvo el evento y cuál es el el evento exacto es
Desde una perspectiva de código administrado, esto es en realidad una gran cantidad de código para tener que escribir - CreateFile para abrir NDIS, todas las API de cola, las estructuras para las notificaciones, etc. Afortunadamente, ya había estado abajo carretera y ya lo había agregado al Smart Device Framework. Así que si usted está utilizando el SDF, recibiendo las notificaciones se ve así:
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. Detectando el estado de la red (conectado - desconectado) en C#
- 2. puerto serie Cable desconectado
- 3. WMI EnableDHCP falla en el adaptador desconectado
- 4. Rhino Mocks & Compact Framework
- 5. Eliminar solo en Compact Framework
- 6. Compact Framework Current Folder
- 7. Detectar cuando se desconectó el cable de red
- 8. .net Compact Framework 4.0
- 9. ¿Cómo detectar cuando el cable de alimentación de la computadora portátil se ha desconectado?
- 10. .NET compact framework y ActiveSync
- 11. ¿Dónde está IQueryable en .NET Compact Framework?
- 12. Linq Expression Trees en Compact Framework
- 13. Compact Framework - ¿Muestras de FTP de OpenNetCf.Net?
- 14. .NET Compact Framework Impresión de librerías
- 15. Perfilador de memoria para .NET Compact Framework
- 16. Confusión sobre el futuro de .NET Compact Framework
- 17. Alternativas a Reflection.Emit para Compact Framework
- 18. Convertir BMP a PCX C# Compact Framework
- 19. Contenedor IoC/DI compatible con Compact Framework
- 20. .NET Compact Framework con Visual Studio 2010?
- 21. Botón de texto de dos líneas en Compact Framework
- 22. Desarrollo de .Net Compact Framework en Windows Embedded CE 6.0
- 23. .NET compact framework - ¿detecta si está bajo el emulador?
- 24. Número de versión en la aplicación .NET Compact Framework
- 25. Milisegundos en DateTime.Now en .NET Compact Framework siempre es cero?
- 26. conexiones de red sólo funcionan si el dispositivo conectado a través del cable
- 27. ¿Cómo puedo usar OpenStreetMap en mi aplicación Compact Framework?
- 28. WebRequest asíncrono con parámetros POST en .NET Compact Framework
- 29. Cliente desconectado
- 30. Seleccionar la fila completa en lugar de la celda en el DataGrid en Compact Framework