我使用GetAdaptersAddresses Win32 API枚举计算机的MAC地址,该API返回该计算机上所有适配器的列表。当用户打开WiFi时,列表包含三个新元素:
MAC地址的开头已经被修改过,但是它们都是相等的,除了最后一个有一个位翻转的数字。我知道这两个虚拟WiFi卡来自无线托管网络特性,但我不能要求每个用户都关闭它。
由于我只对实际的WiFi卡感兴趣,所以我试图找到一种可靠地识别这两张“”卡的方法。我查看了IP_ADAPTER_ADDRESSES结构的各个成员,这些成员给了我以下内容。
Real WiFi:
FriendlyName = Connexion réseau sans fil 4
AdapterName = {57DA33EE-F8E2-4F2C-B989-12EEB680CD64}
Description = Intel(R) Dual Band Wireless-AC 7260 #2
PhysicalAddressLength = 6
PhysicalAddress = 0000XXXXXXXXFCD8
Flags = 01E5
IfType = 71
TunnelType = 0
OperStatus = 1第一个虚拟WiFi:
FriendlyName = Connexion réseau sans fil 5
AdapterName = {7E6DCD1E-BFBB-41AF-A4B1-467C2FFB5D5E}
Description = Microsoft Virtual WiFi Miniport Adapter #3
PhysicalAddressLength = 6
PhysicalAddress = 0000XXXXXXXXFCDA
Flags = 01C5
IfType = 71
TunnelType = 0
OperStatus = 2第二虚拟WiFi
FriendlyName = Connexion réseau sans fil 6
AdapterName = {CC263A05-8034-46C9-9060-FC353D9BBBCB}
Description = Microsoft Virtual WiFi Miniport Adapter #4
PhysicalAddressLength = 6
PhysicalAddress = 0000XXXXXXXXFCDA
Flags = 01C5
IfType = 71
TunnelType = 0
OperStatus = 2正如您所看到的,除了Description之外,它似乎没有本地化,我看不出这三个网卡之间有什么区别。
您知道另一个API吗?它允许我检查给定适配器是否来自“无线托管网络”特性?
如果不是,您认为在Description成员中搜索Microsoft Virtual WiFi会是一种具有时间弹性的方法吗?
发布于 2019-03-08 16:59:42
适配器之间的Flags是不同的。
真正的WiFi有以下标志:
0x01E5 (0111100101)
虚拟适配器有以下标志:
0x01C5 (0111000101)
正如你所看到的,它们相差1位。
微软确实有一组用于使用无线托管网络的API函数。您可以尝试查询托管网络的信息,并尝试将其与适配器信息匹配。例如,WlanHostedNetworkQueryStatus将为您提供托管网络虚拟设备的GUID。
此外,微软还提供了一个函数,用于确定可用的WiFi网络接口及其GUID。根据文档,虚拟承载的网络接口不包括在此列表中。所以你也可以尝试使用它作为一种过滤机制。
https://stackoverflow.com/questions/55066105
复制相似问题