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