Ho passato tutte le risposte di Overflow dello stack che si sono verificate per la ricerca e né Google né Bing mi stanno mostrando alcun amore. Ho bisogno di sapere quando un cavo di rete è stato collegato o disconnesso su un dispositivo Windows CE, preferibilmente, da un'applicazione Compact Framework.Rilevazione di 'Cavo di rete scollegato' nel Compact Framework
risposta
Mi rendo conto che sto rispondendo alla mia domanda qui, ma in realtà era una domanda posta via email, e in realtà ho passato un po 'di tempo a trovare la risposta, quindi la sto postando qui.
Quindi la risposta generale per come viene rilevato è che è necessario richiamare il driver NDIS tramite un IOCTL e indicare che si è interessati alle notifiche. Questo è fatto con il valore IOCTL_NDISUIO_REQUEST_NOTIFICATION (i documenti dicono che questo non è supportato in WinMo, ma i documenti sono sbagliati). Ovviamente ricevere le notifiche non è così semplice - non si ottiene semplicemente un bel richiamo. Invece devi far ruotare uno point to point message queue e inviarlo alla chiamata IOCTL, insieme a una maschera di quali notifiche specifiche desideri. Quindi, quando qualcosa cambia (come il cavo viene tirato) si otterrà una struttura NDISUIO_DEVICE_NOTIFICATION (di nuovo MSDN dice erroneamente che questo è solo CE) sulla coda, che è quindi possibile analizzare per trovare l'adattatore che ha avuto l'evento e ciò che il l'evento esatto è
Dal punto di vista del codice gestito, questo è in realtà un sacco di codice da scrivere - CreateFile per aprire NDIS, tutte le API di accodamento, le strutture per le notifiche, ecc. strada e l'aveva già aggiunto allo Smart Device Framework. Quindi, se stai utilizzando l'SDF, ottieni le notifiche in questo modo:
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. Come posso sapere se un cavo di rete è stato scollegato?
- 2. Invia un segnale quando un cavo seriale USB è scollegato
- 3. Aggiornamenti a .NET Compact Framework nel 2010?
- 4. Rhino Mocks & Compact Framework
- 5. Compact Framework Current Folder
- 6. cavo porta seriale Unplugged
- 7. Profilo di memoria per .NET Compact Framework
- 8. rilevazione Gruppo nel set di dati
- 9. Converti BMP in PCX C# Compact Framework
- 10. .NET generare metodo generico - compact framework
- 11. Numero versione nell'applicazione .NET Compact Framework
- 12. LINQ a SQL in Compact Framework
- 13. Alternative a Reflection.Emit per Compact Framework
- 14. Creazione bitmap monocromatica in Compact Framework
- 15. ios Rilevazione di zombi
- 16. oggetto di rilevazione + segmentazione
- 17. sql server compact edition Editor di dati
- 18. Rilevazione di frequenza Python
- 19. Essere informati quando un cavo di rete è collegato/Wifi connesso
- 20. Come posso utilizzare OpenStreetMap nella mia app Compact Framework?
- 21. Esiste un'alternativa per l'attributo "Pacchetto" StructLayout in Compact Framework?
- 22. Rilevamento dello stato della rete (connesso - disconnesso) in C#
- 23. . Sviluppo Compact Framework su Windows Embedded CE 6.0
- 24. Rilevazione di constexpr con SFINAE
- 25. ListViewItem testo troncato dopo la selezione - Compact Framework
- 26. WebRequest asincrona con parametri POST in .NET Compact Framework
- 27. Come minimizzare un modulo per codice su .NET Compact Framework
- 28. Come centrare un modulo utilizzando showdialog (.NET Compact Framework)
- 29. Come ottenere il nome dell'applicazione e la versione di Exe in C# Compact Framework
- 30. Utilizzo di un certificato X509 in .Net Compact Framework per l'autenticazione client HTTPRequest