Получить время подключения к беспроводному адаптеру

Я пишу, потому что я не мог найти ответы в Интернете. Я пишу проект в C# на WLAN (с использованием управляемого C++). Учитывая, что данный интерфейс (сетевая карта) подключен к сети, есть способ узнать, как долго интерфейс подключен к сети?

Другими словами, я хотел бы знать время, которое вы видите в информации о подключении в Windows 7 (trayicon -> Open Network and Sharing Center).

Я надеюсь, что я был ясен, и я прошу прощения за мой плохой английский.

http://imageshack.us/photo/my-images/39/immaginenrz.png/

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, не знаю о других платформах.

Другие вопросы по тегам