Перечисление данных WlanQueryInterface

я хочу получить wlan_intf_opcode_bss_type с помощью WlanQueryInterface функция.

Мой код:

PDOT11_BSS_TYPE wlanInterfaceState = NULL;
DWORD wlanInterfaceStateSize = sizeof(wlanInterfaceState);
DWORD interfaceStateResult;
interfaceStateResult = WlanQueryInterface(hClient, &pIfInfo->InterfaceGuid, wlan_intf_opcode_bss_type, NULL, &wlanInterfaceStateSize, (PVOID *)&wlanInterfaceState, NULL);

if (interfaceStateResult != ERROR_SUCCESS) {
qDebug() << "Error";
} else {
qDebug() << wlanInterfaceState;
}

Я получаю шестнадцатеричные значения. Когда я использую переключатель для перечисления на wlanInterfaceState Я получаю ошибку:

error: C2450: switch expression of type 'PDOT11_BSS_TYPE' is illegal

Обновить:
DOT11_BSS_TYPE Синтаксис перечисления из MSDN:

typedef enum _DOT11_BSS_TYPE {
dot11_BSS_type_infrastructure  = 1,
dot11_BSS_type_independent     = 2,
dot11_BSS_type_any             = 3
} DOT11_BSS_TYPE, *PDOT11_BSS_TYPE;

Как использовать эти перечисления на wlanInterfaceState?
Благодарю.

0

Решение

Проблема была в том, что я использую указатель wlanInterfaceState версия, поэтому использование его с ключом не считается правильным выражением.

Переключатель (условие) заявление

условие — любое выражение целочисленного или перечислимого типа, или типа класса, контекстуально неявно преобразуемого в целочисленный или перечислимый тип, или объявление единственной переменной, не являющейся массивом, такого типа с инициализатором скобки или равенства.

Поскольку он указывает на enum, мне нужно разыменовать его.

Таким образом, оператор switch должен выглядеть так:

 switch (*wlanInterfaceState) {
case dot11_BSS_type_infrastructure:
qDebug() << "Infastructure";
break;

case dot11_BSS_type_independent:
qDebug() << "Independent";
break;

case dot11_BSS_type_any:
qDebug() << "Any";
break;

default:
qDebug() << "Unknown";
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]