MAC-адреса на машине / фильтрация MAC-адресов устройств Plug and Play

У меня есть следующий код, который запускается и заполняет массив символов до 3-х MAC-адресов WiFi и Ethernet-адаптеров на компьютере с Windows:

IP_ADAPTER_INFO *info = NULL, *pos;
DWORD size = 0;
if (GetAdaptersInfo(info, &size) != ERROR_BUFFER_OVERFLOW)
    return;
info = (IP_ADAPTER_INFO *)malloc(size);
if (GetAdaptersInfo(info, &size) != ERROR_SUCCESS)
    return;
char addresses[1024];
char buffer[1024];
memset(addresses, 0, sizeof(addresses));
memset(buffer, 0, sizeof(buffer));
int recordedAddresses = 0;
for (pos = info; pos != NULL; pos = pos->Next) {
    if (pos->Type != IF_TYPE_IEEE80211 && pos->Type != MIB_IF_TYPE_ETHERNET)
        continue;
    if (recordedAddresses > 0)
        strcat_s<sizeof(addresses)>(addresses, " ");
    for (int i = 0; i < pos->AddressLength; i++) {
        sprintf_s<sizeof(buffer)>(buffer, i == 0 ? "%2.2x" : ":%2.2x", pos->Address[i]);
        strcat_s<sizeof(addresses)>(addresses, buffer);
    }
    recordedAddresses++;
    if (recordedAddresses >= 3)
        break;
}
free(info);
// The array called 'addresses' now contains something like this: a0:b1:c2:d3:e4:f5 0a:1b:2c:3d:4e:5f 00:01:02:03:04:05

Как я могу обнаружить, если какой-либо из этих IP_ADAPTER_INFO структуры относятся к устройствам Plug and Play? Есть ли стандартный способ сделать это? Я искал решение. В идеале я хочу отфильтровать WiFi-ключи Plug-and-Play из моего списка addressesтип ключей, которые имеют интерфейс USB и позволяют подключиться к WiFi-соединению на компьютере под управлением Windows через USB-ключ (если это возможно).

1 ответ

Вам необходимо использовать IP_ADAPTER_ADDRESSES, а не IP_ADAPTER_INFO Struct.

Ищите специально для PhysicalAddress и просматривайте адреса.

Другие вопросы по тегам