0

我想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;
}

我得到十六进制值。当我使用 switch 枚举时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?谢谢。

4

1 回答 1

0

问题是我使用的是指针wlanInterfaceState版本,所以将它与 switch 一起使用不被认为是正确的表达式。

切换(条件)语句

条件 - 整数或枚举类型的任何表达式,或上下文隐式可转换为整数或枚举类型的类类型,或使用大括号或等号初始化器声明此类类型的单个非数组变量。

既然它指向枚举,那么我需要取消引用它。

所以 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";
         }
于 2017-03-12T09:09:25.167 回答