Как определить «беспроводную размещенную сеть» в результатах GetAdaptersAddresses - PullRequest
0 голосов
/ 08 марта 2019

Я перечисляю MAC-адреса компьютера, используя GetAdaptersAddresses Win32 API, который возвращает список всех адаптеров, имеющихся на этом компьютере. Когда пользователь включает WiFi, список содержит три новых элемента:

  • XXXXXXXXFCD8: фактический WiFi (Intel)
  • XXXXXXXXFCDA: Microsoft Virtual WiFi
  • XXXXXXXXFCDA: Microsoft Virtual WiFi

Начало MAC-адресов было отредактировано, но все они равны, за исключением последней цифры, которая перевернула один бит. Я знаю, что эти две виртуальные карты WiFi получены из функции Wireless Hosted Network , но я не могу попросить каждого пользователя отключить это.
Поскольку меня интересует только фактическая карта WiFi, я пытаюсь найти способ надежной идентификации двух карт «Microsoft Virtual WiFi». Я посмотрел на различных членов структуры IP_ADAPTER_ADDRESSES, которые дали мне следующее.

Реальный 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, который позволил бы мне проверить, происходит ли данный адаптер из функции «Беспроводная размещенная сеть»?

Если нет, то считаете ли вы, что поиск Microsoft Virtual WiFi в члене Description был бы устойчивым во времени способом сделать это?

1 Ответ

1 голос
/ 08 марта 2019

Flags отличаются между адаптерами

Реальный WiFi имеет следующие флаги:

0x01E5 (0111100101)

Виртуальный адаптер имеет следующие флаги:

0x01C5 (0111000101)

Как видите, они отличаются на 1 бит.

У Microsoft есть набор API-функций для работы с Wireless Hosted Network . Вы можете попытаться запросить информацию о размещенной сети и сопоставить ее с информацией вашего адаптера. Например, WlanHostedNetworkQueryStatus предоставит вам GUID виртуального устройства размещенной сети.

Также у Microsoft есть WlanEnumInterfaces() функция для определения доступных сетевых интерфейсов WiFi и их GUID. В соответствии с документацией, интерфейсы виртуальной размещенной сети не включены в этот список. Так что вы можете попробовать использовать это как своего рода механизм фильтрации.

...