检测计算机是否在Windows上使用移动连接(3G / EDGE / GPRS)

时间:2010-09-13 10:09:11

标签: .net windows winapi connection 3g

我需要确定计算机是否使用移动连接(例如3G,EDGE,GPRS)连接到Internet。我找到了this identical question,但接受的答案对我没有多大帮助...... System.Net.NetworkInformation.NetworkInterface类暴露了一些属性,但没有什么可以帮助我确定它是否是移动连接。

我的应用程序是在.NET中,但我也对涉及Win32或WMI的解决方案感兴趣

1 个答案:

答案 0 :(得分:1)

我认为如果您查询活动设备的Mobile Broadband状态可能会有效,因为如果它是移动宽带设备,它应该返回状态,否则我认为它会返回错误。

这篇文章MB Miniport Driver Initialization有一个图表,展示了如何做这样的事情。从该页面引用:下图表示确定接口是否被限定为MB接口并收集有关设备功能的信息的过程。

我自己从未尝试过,所以我不确定上述内容,但我无法显示任何示例代码,但有一个部分可能包含一些有用的示例:Network Samples

编辑:旧新闻组中名为Norman Diamon的人的代码段posting

DWORD PhysicalMediumQuery = OID_GEN_PHYSICAL_MEDIUM;
NDIS_PHYSICAL_MEDIUM PhysicalMediumResult;
DWORD PhysicalMediumResultLength;
if (!DeviceIoControl(DeviceHandle, IOCTL_NDIS_QUERY_GLOBAL_STATS,
    &PhysicalMediumQuery, sizeof PhysicalMediumQuery,
    &PhysicalMediumResult, sizeof PhysicalMediumResult,
    &PhysicalMediumResultLength, NULL))
{ /* do error handling here */ }