У меня проблема с печатью (printf) dot11Bssid (тип DOT11_MAC_ADDRESS ).Адрес содержится в WLAN_BSS_ENTRY , который содержится в коллекции, возвращенной из WlanGetNetworkBssList .
Когда я пытаюсь распечатать его, похоже, что это просто инкрементный счет, а не фактическое значение для BSSID - но я не могу понять, почему.Все остальное печатается как надо.
if (WlanGetNetworkBssList(hWlan, &guidInterface, NULL, dot11_BSS_type_infrastructure, NULL, NULL, ppWlanBssList) == ERROR_SUCCESS)
{
// De-reference seems to be required here to access the object returned from the call.
PWLAN_BSS_LIST pWLanBssList = (*ppWlanBssList);
for (unsigned int t = 0; t < pWLanBssList->dwNumberOfItems; t++)
{
printf("\nSSID: %s\t", pWLanBssList->wlanBssEntries[t].dot11Ssid.ucSSID);
printf("\tBSSID: %x:%x:%x:%x:%x:%x\t", pWLanBssList->wlanBssEntries[t].dot11Bssid);
printf("\tSignal Strength: %d dbm", pWLanBssList->wlanBssEntries[t].lRssi);
}
}
Это вывод:
SSID: [REDACTED] BSSID: 1ef7d580:fffffd7f:c12cdd50:0:0:c12ce248 Signal Strength: -60 dbm
SSID: [REDACTED] BSSID: 1ef7d6e8:fffffd7f:c12cdd50:0:0:c12ce248 Signal Strength: -80 dbm
SSID: [REDACTED] BSSID: 1ef7d850:fffffd7f:c12cdd50:0:0:c12ce248 Signal Strength: -79 dbm
SSID: [REDACTED] BSSID: 1ef7d9b8:fffffd7f:c12cdd50:0:0:c12ce248 Signal Strength: -85 dbm
SSID: [REDACTED] BSSID: 1ef7db20:fffffd7f:c12cdd50:0:0:c12ce248 Signal Strength: -94 dbm
Кроме того, похоже, что байты перевернуты (судя по последующим одинаковым символам -хотя все они должны быть разными), но, учитывая, что первая группа выглядит как инкрементный счет, я, очевидно, не могу доверять каким-либо данным.
Любые идеи относительно того, что я делаю неправильно, здесь?Должен ли я печатать каждый UCHAR, индексируя по месту символа (например, dot11Bssid [0]), а не весь объект сразу?