WlanQueryInterface 数据枚举

WlanQueryInterface data enumeration

我想使用 WlanQueryInterface 函数获得 wlan_intf_opcode_bss_type

我的代码:

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 上使用这些枚举? 谢谢。

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

切换(条件)语句

condition - 整数或枚举类型的任何表达式,或 class 类型的表达式,可根据上下文隐式转换为整数或枚举类型,或此类类型的单个非数组变量的声明,带有大括号- 或等于初始值设定项。

因为它指向枚举,所以我需要取消引用它。

所以 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";
         }