Получить время подключения к беспроводному адаптеру
Я пишу, потому что я не мог найти ответы в Интернете. Я пишу проект в C# на WLAN (с использованием управляемого C++). Учитывая, что данный интерфейс (сетевая карта) подключен к сети, есть способ узнать, как долго интерфейс подключен к сети?
Другими словами, я хотел бы знать время, которое вы видите в информации о подключении в Windows 7 (trayicon -> Open Network and Sharing Center).
Я надеюсь, что я был ясен, и я прошу прощения за мой плохой английский.
1 ответ
Может быть, вы ищете функцию getiftable() для окон. Это функция winapi, которая предоставляет всю информацию, относящуюся к определенному сетевому интерфейсу.
Вот хороший пример этого
Вот объяснение всей структуры
Согласно МСДН
dwLastChange
Type: DWORD
The length of time, in hundredths of seconds (10^-2 sec), starting from the last computer restart, when the interface entered its current operational state.
Когда он подключен, он даст вам время, так как это так - то есть в подключенном состоянии.
Вот объявление этой функции в C#
public static extern uint GetIfTable(IntPtr pIfTable, ref uint pdwSize, bool bOrder);
Declare Function GetIfTable Lib "iphlpapi.dll" (TODO) As TODO
IPHelperTraslation.GetIfTable(IntPtr.Zero, ref size, false);
IPHelperTraslation.GetIfTable(buf, ref size, false);
Вы можете использовать http://www.pinvoke.net/ для дальнейшей помощи в декларации.
Кажется, что в.Net Framework есть простой путь, но не так, как ожидалось
http://msdn.microsoft.com/en-us/library/system.net.networkinformation.operationalstatus.aspx
Проверьте, как они реализовали обнаружение состояния сети. Я предполагаю, что вам придется записывать время в вашем приложении с момента последнего изменения статуса.
Я также практически протестировал функцию getifrow и, к моему разочарованию, она всегда возвращает ноль на Win7, не знаю о других платформах.