我想拥有上述内容。 我找到了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地址的好方法是什么?
答案 0 :(得分:0)
GetAdapterAddresses是windows api的一部分,应该为您提供有关mac地址和NIC类型的信息。
该调用返回指向适配器链接列表的结构。
请确保您没有硬编码结构的大小以维护Windows版本之间的可移植性,因为IP_ADAPTER_ADDRESSES
结构在版本之间的大小已经改变。
修改强>
这显然只给你mac地址,因为它只报告Vista之后的正确类型
但是,
GetIfTable返回MIB_IFTABLE
结构,您可以从中读取具有dwType的MIB_IFROW
,该类型可能是IF_TYPE_IEEE80211类型。这没有任何注意事项,这对于Vista是特定的,并且应该对XP有效,除非MS搞砸了他们的文档。
这两个都应该有一个物理地址,所以你应该能够匹配这两个条目以识别一张卡。
答案 1 :(得分:0)
如果您要从头开始支持XP,这是在将Native Wifi API引入XP之前(SP 2& 3支持Native Wifi API)。
我认为WMI可能还有机会。您可以创建Win32_NetworkAdapter
(已弃用的WMI类)在此课程中,您应该能够提取AdapterTypeID
,告知它是否是无线设备,并MACAddress
给出你的MAC地址。
所以我认为你的选择是支持Windows XP SP 2及以上,还是必须与WMI和不推荐的类集成。在任何情况下看起来都有骆驼吞咽。