1

我想拥有以上。我找到了 IP Helper API,它可以工作。唯一的问题是,在比 Vista 更早的系统上,我无法识别适配器是无线的还是普通的以太网。我还需要支持 WinXP 和 Server 2003。

这是文档中的相关引用(IP Helper):

IEEE 802.11 无线网络接口。注意 此适配器类型在 Windows Vista 及更高版本上返回。在 Windows Server 2003 和 >Windows XP 上,IEEE 802.11 无线网络接口返回 >MIB_IF_TYPE_ETHERNET 的适配器类型。

那么在 WinXP/Server2003 及更高版本上识别无线适配器并获取其 MAC 地址的好方法是什么?

4

2 回答 2

0

如果您要从头开始支持 XP,这是在将 Native Wifi API 引入 XP 之前(SP 2 和 3 支持 Native Wifi API)。

我认为通过WMI仍然可能有机会。您可能可以创建一个Win32_NetworkAdapter(不推荐使用的 WMI 类)在这个类中,您应该能够提取AdapterTypeID哪个告诉它是否是无线设备以及MACAddress哪个给您 MAC 地址。

所以我认为你的选择是要么支持 Windows XP SP 2 或更高版本,要么必须与 WMI 和不推荐使用的类集成。看起来无论如何都有骆驼可以吞下。

于 2013-02-20T08:36:53.010 回答
0

GetAdapterAddresses是 windows api 的一部分,应该为您提供有关 mac 地址和 NIC 类型的信息。

该调用返回一个指向适配器链表的结构。

确保你没有硬编码结构的大小以保持 Windows 版本之间的可移植性,因为IP_ADAPTER_ADDRESSES结构在版本之间改变了大小。

编辑:

这显然只给你mac地址,因为它只在Vista之后报告正确的类型

但是, GetIfTable返回一个MIB_IFTABLE结构,从中您可以读取一个MIB_IFROW具有 dwType 的结构,该结构可能是 IF_TYPE_IEEE80211 类型,也可能不是。这没有说明这对于 Vista 来说是特别的,并且应该对 XP 有效,除非 MS 弄乱了他们的文档。

这两个都应该有一个物理地址,所以你应该能够匹配这两个条目来识别一张卡。

于 2013-02-19T11:26:44.487 回答