2

我写是因为我在互联网上找不到任何答案。我正在用 C# 在 WLAN 上编写一个项目(使用托管 C++)。考虑连接到网络的给定接口(网卡),有没有办法知道接口连接到网络多长时间?

换句话说,我想知道您在 Windows 7 中的连接信息中看到的时间(trayicon -> 打开网络和共享中心)。

我希望我很清楚,我为我糟糕的英语道歉。

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

4

1 回答 1

0

可能是您正在寻找 Windows 的getiftable()函数。它是一个 winapi 函数,提供与特定网络接口相关的所有信息

是一个很好的例子

是整个结构的解释

根据msdn

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);

您可以使用pinvoke.net获得有关声明的进一步帮助。

.Net 框架中似乎有一种简单的方法,但不如预期

http://msdn.microsoft.com/en-us/library/system.net.networkinformation.operationalstatus.aspx

查看他们实施网络状态检测的方式。我的假设是,您必须在申请中记录自上次状态更改以来的时间。

我还实际测试了 getifrow 函数,令我失望的是,它在 Win7 上总是返回零,不知道其他平台。

于 2012-09-29T14:59:12.070 回答