//! NOTE: this file is autogenerated, DO NOT MODIFY
//--------------------------------------------------------------------------------
// Section: Constants (796)
//--------------------------------------------------------------------------------
pub const L2_REASON_CODE_DOT11_AC_BASE = @as(u32, 131072);
pub const L2_REASON_CODE_DOT11_MSM_BASE = @as(u32, 196608);
pub const L2_REASON_CODE_DOT11_SECURITY_BASE = @as(u32, 262144);
pub const L2_REASON_CODE_ONEX_BASE = @as(u32, 327680);
pub const L2_REASON_CODE_DOT3_AC_BASE = @as(u32, 393216);
pub const L2_REASON_CODE_DOT3_MSM_BASE = @as(u32, 458752);
pub const L2_REASON_CODE_PROFILE_BASE = @as(u32, 524288);
pub const L2_REASON_CODE_IHV_BASE = @as(u32, 589824);
pub const L2_REASON_CODE_WIMAX_BASE = @as(u32, 655360);
pub const L2_REASON_CODE_RESERVED_BASE = @as(u32, 720896);
pub const WLAN_REASON_CODE_SUCCESS = @as(u32, 0);
pub const WLAN_REASON_CODE_UNKNOWN = @as(u32, 65537);
pub const WLAN_REASON_CODE_RANGE_SIZE = @as(u32, 65536);
pub const WLAN_REASON_CODE_BASE = @as(u32, 131072);
pub const WLAN_REASON_CODE_AC_BASE = @as(u32, 131072);
pub const WLAN_REASON_CODE_AC_CONNECT_BASE = @as(u32, 163840);
pub const WLAN_REASON_CODE_AC_END = @as(u32, 196607);
pub const WLAN_REASON_CODE_PROFILE_BASE = @as(u32, 524288);
pub const WLAN_REASON_CODE_PROFILE_CONNECT_BASE = @as(u32, 557056);
pub const WLAN_REASON_CODE_PROFILE_END = @as(u32, 589823);
pub const WLAN_REASON_CODE_MSM_BASE = @as(u32, 196608);
pub const WLAN_REASON_CODE_MSM_CONNECT_BASE = @as(u32, 229376);
pub const WLAN_REASON_CODE_MSM_END = @as(u32, 262143);
pub const WLAN_REASON_CODE_MSMSEC_BASE = @as(u32, 262144);
pub const WLAN_REASON_CODE_MSMSEC_CONNECT_BASE = @as(u32, 294912);
pub const WLAN_REASON_CODE_MSMSEC_END = @as(u32, 327679);
pub const WLAN_REASON_CODE_RESERVED_BASE = @as(u32, 720896);
pub const WLAN_REASON_CODE_RESERVED_END = @as(u32, 786431);
pub const L2_PROFILE_MAX_NAME_LENGTH = @as(u32, 256);
pub const L2_NOTIFICATION_SOURCE_NONE = @as(u32, 0);
pub const L2_NOTIFICATION_SOURCE_DOT3_AUTO_CONFIG = @as(u32, 1);
pub const L2_NOTIFICATION_SOURCE_SECURITY = @as(u32, 2);
pub const L2_NOTIFICATION_SOURCE_ONEX = @as(u32, 4);
pub const L2_NOTIFICATION_SOURCE_WLAN_ACM = @as(u32, 8);
pub const L2_NOTIFICATION_SOURCE_WLAN_MSM = @as(u32, 16);
pub const L2_NOTIFICATION_SOURCE_WLAN_SECURITY = @as(u32, 32);
pub const L2_NOTIFICATION_SOURCE_WLAN_IHV = @as(u32, 64);
pub const L2_NOTIFICATION_SOURCE_WLAN_HNWK = @as(u32, 128);
pub const L2_NOTIFICATION_SOURCE_WCM = @as(u32, 256);
pub const L2_NOTIFICATION_SOURCE_WCM_CSP = @as(u32, 512);
pub const L2_NOTIFICATION_SOURCE_WFD = @as(u32, 1024);
pub const L2_NOTIFICATION_SOURCE_WLAN_DEVICE_SERVICE = @as(u32, 2048);
pub const L2_NOTIFICATION_SOURCE_ALL = @as(u32, 65535);
pub const L2_NOTIFICATION_CODE_PUBLIC_BEGIN = @as(u32, 0);
pub const L2_NOTIFICATION_CODE_GROUP_SIZE = @as(u32, 4096);
pub const L2_REASON_CODE_GROUP_SIZE = @as(u32, 65536);
pub const L2_REASON_CODE_GEN_BASE = @as(u32, 65536);
pub const L2_REASON_CODE_SUCCESS = @as(u32, 0);
pub const L2_REASON_CODE_UNKNOWN = @as(u32, 65537);
pub const L2_REASON_CODE_PROFILE_MISSING = @as(u32, 1);
pub const DOT11_BSSID_LIST_REVISION_1 = @as(u32, 1);
pub const DOT11_HESSID_LENGTH = @as(u32, 6);
pub const DOT11_RATE_SET_MAX_LENGTH = @as(u32, 126);
pub const DOT11_WFD_SERVICE_NAME_MAX_LENGTH = @as(u32, 255);
pub const DOT11_WFD_APS2_SERVICE_TYPE_MAX_LENGTH = @as(u32, 21);
pub const DOT11_WFD_ASP2_INSTANCE_NAME_MAX_LENGTH = @as(u32, 63);
pub const DOT11_WFD_SERVICE_INFORMATION_MAX_LENGTH = @as(u32, 65535);
pub const DOT11_MAX_REQUESTED_SERVICE_INFORMATION_LENGTH = @as(u32, 255);
pub const DOT11_WFD_SESSION_INFO_MAX_LENGTH = @as(u32, 144);
pub const NDIS_PACKET_TYPE_802_11_DIRECTED_DATA = @as(u32, 1);
pub const NDIS_PACKET_TYPE_802_11_BROADCAST_DATA = @as(u32, 8);
pub const NDIS_PACKET_TYPE_802_11_MULTICAST_DATA = @as(u32, 2);
pub const NDIS_PACKET_TYPE_802_11_ALL_MULTICAST_DATA = @as(u32, 4);
pub const NDIS_PACKET_TYPE_802_11_PROMISCUOUS_DATA = @as(u32, 32);
pub const DOT11_MAX_PDU_SIZE = @as(u32, 2346);
pub const DOT11_MIN_PDU_SIZE = @as(u32, 256);
pub const DOT11_MAX_NUM_DEFAULT_KEY = @as(u32, 4);
pub const DOT11_MAX_NUM_DEFAULT_KEY_MFP = @as(u32, 6);
pub const OID_DOT11_NDIS_START = @as(u32, 218170112);
pub const OID_DOT11_OFFLOAD_CAPABILITY = @as(u32, 218170112);
pub const DOT11_HW_WEP_SUPPORTED_TX = @as(u32, 1);
pub const DOT11_HW_WEP_SUPPORTED_RX = @as(u32, 2);
pub const DOT11_HW_FRAGMENTATION_SUPPORTED = @as(u32, 4);
pub const DOT11_HW_DEFRAGMENTATION_SUPPORTED = @as(u32, 8);
pub const DOT11_HW_MSDU_AUTH_SUPPORTED_TX = @as(u32, 16);
pub const DOT11_HW_MSDU_AUTH_SUPPORTED_RX = @as(u32, 32);
pub const DOT11_CONF_ALGO_WEP_RC4 = @as(u32, 1);
pub const DOT11_CONF_ALGO_TKIP = @as(u32, 2);
pub const DOT11_AUTH_ALGO_MICHAEL = @as(u32, 1);
pub const OID_DOT11_CURRENT_OFFLOAD_CAPABILITY = @as(u32, 218170113);
pub const OID_DOT11_WEP_OFFLOAD = @as(u32, 218170114);
pub const OID_DOT11_WEP_UPLOAD = @as(u32, 218170115);
pub const OID_DOT11_DEFAULT_WEP_OFFLOAD = @as(u32, 218170116);
pub const OID_DOT11_DEFAULT_WEP_UPLOAD = @as(u32, 218170117);
pub const OID_DOT11_MPDU_MAX_LENGTH = @as(u32, 218170118);
pub const OID_DOT11_OPERATION_MODE_CAPABILITY = @as(u32, 218170119);
pub const DOT11_OPERATION_MODE_UNKNOWN = @as(u32, 0);
pub const DOT11_OPERATION_MODE_STATION = @as(u32, 1);
pub const DOT11_OPERATION_MODE_AP = @as(u32, 2);
pub const DOT11_OPERATION_MODE_EXTENSIBLE_STATION = @as(u32, 4);
pub const DOT11_OPERATION_MODE_EXTENSIBLE_AP = @as(u32, 8);
pub const DOT11_OPERATION_MODE_WFD_DEVICE = @as(u32, 16);
pub const DOT11_OPERATION_MODE_WFD_GROUP_OWNER = @as(u32, 32);
pub const DOT11_OPERATION_MODE_WFD_CLIENT = @as(u32, 64);
pub const DOT11_OPERATION_MODE_MANUFACTURING = @as(u32, 1073741824);
pub const DOT11_OPERATION_MODE_NETWORK_MONITOR = @as(u32, 2147483648);
pub const OID_DOT11_CURRENT_OPERATION_MODE = @as(u32, 218170120);
pub const OID_DOT11_CURRENT_PACKET_FILTER = @as(u32, 218170121);
pub const DOT11_PACKET_TYPE_DIRECTED_CTRL = @as(u32, 1);
pub const DOT11_PACKET_TYPE_DIRECTED_MGMT = @as(u32, 2);
pub const DOT11_PACKET_TYPE_DIRECTED_DATA = @as(u32, 4);
pub const DOT11_PACKET_TYPE_MULTICAST_CTRL = @as(u32, 8);
pub const DOT11_PACKET_TYPE_MULTICAST_MGMT = @as(u32, 16);
pub const DOT11_PACKET_TYPE_MULTICAST_DATA = @as(u32, 32);
pub const DOT11_PACKET_TYPE_BROADCAST_CTRL = @as(u32, 64);
pub const DOT11_PACKET_TYPE_BROADCAST_MGMT = @as(u32, 128);
pub const DOT11_PACKET_TYPE_BROADCAST_DATA = @as(u32, 256);
pub const DOT11_PACKET_TYPE_PROMISCUOUS_CTRL = @as(u32, 512);
pub const DOT11_PACKET_TYPE_PROMISCUOUS_MGMT = @as(u32, 1024);
pub const DOT11_PACKET_TYPE_PROMISCUOUS_DATA = @as(u32, 2048);
pub const DOT11_PACKET_TYPE_ALL_MULTICAST_CTRL = @as(u32, 4096);
pub const DOT11_PACKET_TYPE_ALL_MULTICAST_MGMT = @as(u32, 8192);
pub const DOT11_PACKET_TYPE_ALL_MULTICAST_DATA = @as(u32, 16384);
pub const OID_DOT11_ATIM_WINDOW = @as(u32, 218170122);
pub const OID_DOT11_SCAN_REQUEST = @as(u32, 218170123);
pub const OID_DOT11_CURRENT_PHY_TYPE = @as(u32, 218170124);
pub const DOT11_PHY_TYPE_LIST_REVISION_1 = @as(u32, 1);
pub const OID_DOT11_JOIN_REQUEST = @as(u32, 218170125);
pub const DOT11_CAPABILITY_INFO_ESS = @as(u32, 1);
pub const DOT11_CAPABILITY_INFO_IBSS = @as(u32, 2);
pub const DOT11_CAPABILITY_INFO_CF_POLLABLE = @as(u32, 4);
pub const DOT11_CAPABILITY_INFO_CF_POLL_REQ = @as(u32, 8);
pub const DOT11_CAPABILITY_INFO_PRIVACY = @as(u32, 16);
pub const DOT11_CAPABILITY_SHORT_PREAMBLE = @as(u32, 32);
pub const DOT11_CAPABILITY_PBCC = @as(u32, 64);
pub const DOT11_CAPABILITY_CHANNEL_AGILITY = @as(u32, 128);
pub const DOT11_CAPABILITY_SHORT_SLOT_TIME = @as(u32, 1024);
pub const DOT11_CAPABILITY_DSSSOFDM = @as(u32, 8192);
pub const OID_DOT11_START_REQUEST = @as(u32, 218170126);
pub const OID_DOT11_UPDATE_IE = @as(u32, 218170127);
pub const OID_DOT11_RESET_REQUEST = @as(u32, 218170128);
pub const OID_DOT11_NIC_POWER_STATE = @as(u32, 218170129);
pub const OID_DOT11_OPTIONAL_CAPABILITY = @as(u32, 218170130);
pub const OID_DOT11_CURRENT_OPTIONAL_CAPABILITY = @as(u32, 218170131);
pub const OID_DOT11_STATION_ID = @as(u32, 218170132);
pub const OID_DOT11_MEDIUM_OCCUPANCY_LIMIT = @as(u32, 218170133);
pub const OID_DOT11_CF_POLLABLE = @as(u32, 218170134);
pub const OID_DOT11_CFP_PERIOD = @as(u32, 218170135);
pub const OID_DOT11_CFP_MAX_DURATION = @as(u32, 218170136);
pub const OID_DOT11_POWER_MGMT_MODE = @as(u32, 218170137);
pub const DOT11_POWER_SAVE_LEVEL_MAX_PSP = @as(u32, 1);
pub const DOT11_POWER_SAVE_LEVEL_FAST_PSP = @as(u32, 2);
pub const OID_DOT11_OPERATIONAL_RATE_SET = @as(u32, 218170138);
pub const OID_DOT11_BEACON_PERIOD = @as(u32, 218170139);
pub const OID_DOT11_DTIM_PERIOD = @as(u32, 218170140);
pub const OID_DOT11_WEP_ICV_ERROR_COUNT = @as(u32, 218170141);
pub const OID_DOT11_MAC_ADDRESS = @as(u32, 218170142);
pub const OID_DOT11_RTS_THRESHOLD = @as(u32, 218170143);
pub const OID_DOT11_SHORT_RETRY_LIMIT = @as(u32, 218170144);
pub const OID_DOT11_LONG_RETRY_LIMIT = @as(u32, 218170145);
pub const OID_DOT11_FRAGMENTATION_THRESHOLD = @as(u32, 218170146);
pub const OID_DOT11_MAX_TRANSMIT_MSDU_LIFETIME = @as(u32, 218170147);
pub const OID_DOT11_MAX_RECEIVE_LIFETIME = @as(u32, 218170148);
pub const OID_DOT11_COUNTERS_ENTRY = @as(u32, 218170149);
pub const OID_DOT11_SUPPORTED_PHY_TYPES = @as(u32, 218170150);
pub const OID_DOT11_CURRENT_REG_DOMAIN = @as(u32, 218170151);
pub const DOT11_REG_DOMAIN_OTHER = @as(u32, 0);
pub const DOT11_REG_DOMAIN_FCC = @as(u32, 16);
pub const DOT11_REG_DOMAIN_DOC = @as(u32, 32);
pub const DOT11_REG_DOMAIN_ETSI = @as(u32, 48);
pub const DOT11_REG_DOMAIN_SPAIN = @as(u32, 49);
pub const DOT11_REG_DOMAIN_FRANCE = @as(u32, 50);
pub const DOT11_REG_DOMAIN_MKK = @as(u32, 64);
pub const OID_DOT11_TEMP_TYPE = @as(u32, 218170152);
pub const OID_DOT11_CURRENT_TX_ANTENNA = @as(u32, 218170153);
pub const OID_DOT11_DIVERSITY_SUPPORT = @as(u32, 218170154);
pub const OID_DOT11_CURRENT_RX_ANTENNA = @as(u32, 218170155);
pub const OID_DOT11_SUPPORTED_POWER_LEVELS = @as(u32, 218170156);
pub const OID_DOT11_CURRENT_TX_POWER_LEVEL = @as(u32, 218170157);
pub const OID_DOT11_HOP_TIME = @as(u32, 218170158);
pub const OID_DOT11_CURRENT_CHANNEL_NUMBER = @as(u32, 218170159);
pub const OID_DOT11_MAX_DWELL_TIME = @as(u32, 218170160);
pub const OID_DOT11_CURRENT_DWELL_TIME = @as(u32, 218170161);
pub const OID_DOT11_CURRENT_SET = @as(u32, 218170162);
pub const OID_DOT11_CURRENT_PATTERN = @as(u32, 218170163);
pub const OID_DOT11_CURRENT_INDEX = @as(u32, 218170164);
pub const OID_DOT11_CURRENT_CHANNEL = @as(u32, 218170165);
pub const OID_DOT11_CCA_MODE_SUPPORTED = @as(u32, 218170166);
pub const DOT11_CCA_MODE_ED_ONLY = @as(u32, 1);
pub const DOT11_CCA_MODE_CS_ONLY = @as(u32, 2);
pub const DOT11_CCA_MODE_ED_and_CS = @as(u32, 4);
pub const DOT11_CCA_MODE_CS_WITH_TIMER = @as(u32, 8);
pub const DOT11_CCA_MODE_HRCS_AND_ED = @as(u32, 16);
pub const OID_DOT11_CURRENT_CCA_MODE = @as(u32, 218170167);
pub const OID_DOT11_ED_THRESHOLD = @as(u32, 218170168);
pub const OID_DOT11_CCA_WATCHDOG_TIMER_MAX = @as(u32, 218170169);
pub const OID_DOT11_CCA_WATCHDOG_COUNT_MAX = @as(u32, 218170170);
pub const OID_DOT11_CCA_WATCHDOG_TIMER_MIN = @as(u32, 218170171);
pub const OID_DOT11_CCA_WATCHDOG_COUNT_MIN = @as(u32, 218170172);
pub const OID_DOT11_REG_DOMAINS_SUPPORT_VALUE = @as(u32, 218170173);
pub const OID_DOT11_SUPPORTED_TX_ANTENNA = @as(u32, 218170174);
pub const OID_DOT11_SUPPORTED_RX_ANTENNA = @as(u32, 218170175);
pub const OID_DOT11_DIVERSITY_SELECTION_RX = @as(u32, 218170176);
pub const OID_DOT11_SUPPORTED_DATA_RATES_VALUE = @as(u32, 218170177);
pub const MAX_NUM_SUPPORTED_RATES = @as(u32, 8);
pub const MAX_NUM_SUPPORTED_RATES_V2 = @as(u32, 255);
pub const OID_DOT11_CURRENT_FREQUENCY = @as(u32, 218170178);
pub const OID_DOT11_TI_THRESHOLD = @as(u32, 218170179);
pub const OID_DOT11_FREQUENCY_BANDS_SUPPORTED = @as(u32, 218170180);
pub const DOT11_FREQUENCY_BANDS_LOWER = @as(u32, 1);
pub const DOT11_FREQUENCY_BANDS_MIDDLE = @as(u32, 2);
pub const DOT11_FREQUENCY_BANDS_UPPER = @as(u32, 4);
pub const OID_DOT11_SHORT_PREAMBLE_OPTION_IMPLEMENTED = @as(u32, 218170181);
pub const OID_DOT11_PBCC_OPTION_IMPLEMENTED = @as(u32, 218170182);
pub const OID_DOT11_CHANNEL_AGILITY_PRESENT = @as(u32, 218170183);
pub const OID_DOT11_CHANNEL_AGILITY_ENABLED = @as(u32, 218170184);
pub const OID_DOT11_HR_CCA_MODE_SUPPORTED = @as(u32, 218170185);
pub const DOT11_HR_CCA_MODE_ED_ONLY = @as(u32, 1);
pub const DOT11_HR_CCA_MODE_CS_ONLY = @as(u32, 2);
pub const DOT11_HR_CCA_MODE_CS_AND_ED = @as(u32, 4);
pub const DOT11_HR_CCA_MODE_CS_WITH_TIMER = @as(u32, 8);
pub const DOT11_HR_CCA_MODE_HRCS_AND_ED = @as(u32, 16);
pub const OID_DOT11_MULTI_DOMAIN_CAPABILITY_IMPLEMENTED = @as(u32, 218170186);
pub const OID_DOT11_MULTI_DOMAIN_CAPABILITY_ENABLED = @as(u32, 218170187);
pub const OID_DOT11_COUNTRY_STRING = @as(u32, 218170188);
pub const OID_DOT11_MULTI_DOMAIN_CAPABILITY = @as(u32, 218170189);
pub const OID_DOT11_EHCC_PRIME_RADIX = @as(u32, 218170190);
pub const OID_DOT11_EHCC_NUMBER_OF_CHANNELS_FAMILY_INDEX = @as(u32, 218170191);
pub const OID_DOT11_EHCC_CAPABILITY_IMPLEMENTED = @as(u32, 218170192);
pub const OID_DOT11_EHCC_CAPABILITY_ENABLED = @as(u32, 218170193);
pub const OID_DOT11_HOP_ALGORITHM_ADOPTED = @as(u32, 218170194);
pub const OID_DOT11_RANDOM_TABLE_FLAG = @as(u32, 218170195);
pub const OID_DOT11_NUMBER_OF_HOPPING_SETS = @as(u32, 218170196);
pub const OID_DOT11_HOP_MODULUS = @as(u32, 218170197);
pub const OID_DOT11_HOP_OFFSET = @as(u32, 218170198);
pub const OID_DOT11_HOPPING_PATTERN = @as(u32, 218170199);
pub const OID_DOT11_RANDOM_TABLE_FIELD_NUMBER = @as(u32, 218170200);
pub const OID_DOT11_WPA_TSC = @as(u32, 218170201);
pub const OID_DOT11_RSSI_RANGE = @as(u32, 218170202);
pub const OID_DOT11_RF_USAGE = @as(u32, 218170203);
pub const OID_DOT11_NIC_SPECIFIC_EXTENSION = @as(u32, 218170204);
pub const OID_DOT11_AP_JOIN_REQUEST = @as(u32, 218170205);
pub const OID_DOT11_ERP_PBCC_OPTION_IMPLEMENTED = @as(u32, 218170206);
pub const OID_DOT11_ERP_PBCC_OPTION_ENABLED = @as(u32, 218170207);
pub const OID_DOT11_DSSS_OFDM_OPTION_IMPLEMENTED = @as(u32, 218170208);
pub const OID_DOT11_DSSS_OFDM_OPTION_ENABLED = @as(u32, 218170209);
pub const OID_DOT11_SHORT_SLOT_TIME_OPTION_IMPLEMENTED = @as(u32, 218170210);
pub const OID_DOT11_SHORT_SLOT_TIME_OPTION_ENABLED = @as(u32, 218170211);
pub const OID_DOT11_MAX_MAC_ADDRESS_STATES = @as(u32, 218170212);
pub const OID_DOT11_RECV_SENSITIVITY_LIST = @as(u32, 218170213);
pub const OID_DOT11_WME_IMPLEMENTED = @as(u32, 218170214);
pub const OID_DOT11_WME_ENABLED = @as(u32, 218170215);
pub const OID_DOT11_WME_AC_PARAMETERS = @as(u32, 218170216);
pub const OID_DOT11_WME_UPDATE_IE = @as(u32, 218170217);
pub const OID_DOT11_QOS_TX_QUEUES_SUPPORTED = @as(u32, 218170218);
pub const OID_DOT11_QOS_TX_DURATION = @as(u32, 218170219);
pub const OID_DOT11_QOS_TX_MEDIUM_TIME = @as(u32, 218170220);
pub const OID_DOT11_SUPPORTED_OFDM_FREQUENCY_LIST = @as(u32, 218170221);
pub const OID_DOT11_SUPPORTED_DSSS_CHANNEL_LIST = @as(u32, 218170222);
pub const DOT11_BSS_ENTRY_BYTE_ARRAY_REVISION_1 = @as(u32, 1);
pub const DOT11_POWER_SAVING_NO_POWER_SAVING = @as(u32, 0);
pub const DOT11_POWER_SAVING_FAST_PSP = @as(u32, 8);
pub const DOT11_POWER_SAVING_MAX_PSP = @as(u32, 16);
pub const DOT11_POWER_SAVING_MAXIMUM_LEVEL = @as(u32, 24);
pub const DOT11_SSID_LIST_REVISION_1 = @as(u32, 1);
pub const DOT11_MAC_ADDRESS_LIST_REVISION_1 = @as(u32, 1);
pub const DOT11_PMKID_LIST_REVISION_1 = @as(u32, 1);
pub const DOT11_STATISTICS_REVISION_1 = @as(u32, 1);
pub const DOT11_EXEMPT_NO_EXEMPTION = @as(u32, 0);
pub const DOT11_EXEMPT_ALWAYS = @as(u32, 1);
pub const DOT11_EXEMPT_ON_KEY_MAPPING_KEY_UNAVAILABLE = @as(u32, 2);
pub const DOT11_EXEMPT_UNICAST = @as(u32, 1);
pub const DOT11_EXEMPT_MULTICAST = @as(u32, 2);
pub const DOT11_EXEMPT_BOTH = @as(u32, 3);
pub const DOT11_PRIVACY_EXEMPTION_LIST_REVISION_1 = @as(u32, 1);
pub const DOT11_AUTH_ALGORITHM_LIST_REVISION_1 = @as(u32, 1);
pub const DOT11_AUTH_CIPHER_PAIR_LIST_REVISION_1 = @as(u32, 1);
pub const DOT11_CIPHER_ALGORITHM_LIST_REVISION_1 = @as(u32, 1);
pub const DOT11_CIPHER_DEFAULT_KEY_VALUE_REVISION_1 = @as(u32, 1);
pub const DOT11_CIPHER_KEY_MAPPING_KEY_VALUE_BYTE_ARRAY_REVISION_1 = @as(u32, 1);
pub const DOT11_ASSOCIATION_INFO_LIST_REVISION_1 = @as(u32, 1);
pub const DOT11_PHY_ID_LIST_REVISION_1 = @as(u32, 1);
pub const DOT11_EXTSTA_CAPABILITY_REVISION_1 = @as(u32, 1);
pub const DOT11_DATA_RATE_MAPPING_TABLE_REVISION_1 = @as(u32, 1);
pub const DOT11_COUNTRY_OR_REGION_STRING_LIST_REVISION_1 = @as(u32, 1);
pub const DOT11_PORT_STATE_NOTIFICATION_REVISION_1 = @as(u32, 1);
pub const DOT11_IBSS_PARAMS_REVISION_1 = @as(u32, 1);
pub const DOT11_QOS_PARAMS_REVISION_1 = @as(u32, 1);
pub const DOT11_ASSOCIATION_PARAMS_REVISION_1 = @as(u32, 1);
pub const DOT11_MAX_NUM_OF_FRAGMENTS = @as(u32, 16);
pub const DOT11_PRIORITY_CONTENTION = @as(u32, 0);
pub const DOT11_PRIORITY_CONTENTION_FREE = @as(u32, 1);
pub const DOT11_SERVICE_CLASS_REORDERABLE_MULTICAST = @as(u32, 0);
pub const DOT11_SERVICE_CLASS_STRICTLY_ORDERED = @as(u32, 1);
pub const DOT11_FLAGS_80211B_SHORT_PREAMBLE = @as(u32, 1);
pub const DOT11_FLAGS_80211B_PBCC = @as(u32, 2);
pub const DOT11_FLAGS_80211B_CHANNEL_AGILITY = @as(u32, 4);
pub const DOT11_FLAGS_PS_ON = @as(u32, 8);
pub const DOT11_FLAGS_80211G_DSSS_OFDM = @as(u32, 16);
pub const DOT11_FLAGS_80211G_USE_PROTECTION = @as(u32, 32);
pub const DOT11_FLAGS_80211G_NON_ERP_PRESENT = @as(u32, 64);
pub const DOT11_FLAGS_80211G_BARKER_PREAMBLE_MODE = @as(u32, 128);
pub const DOT11_WME_PACKET = @as(u32, 256);
pub const DOT11_PHY_ATTRIBUTES_REVISION_1 = @as(u32, 1);
pub const DOT11_EXTSTA_ATTRIBUTES_SAFEMODE_OID_SUPPORTED = @as(u32, 1);
pub const DOT11_EXTSTA_ATTRIBUTES_SAFEMODE_CERTIFIED = @as(u32, 2);
pub const DOT11_EXTSTA_ATTRIBUTES_SAFEMODE_RESERVED = @as(u32, 12);
pub const DOT11_EXTSTA_ATTRIBUTES_REVISION_1 = @as(u32, 1);
pub const DOT11_EXTSTA_ATTRIBUTES_REVISION_2 = @as(u32, 2);
pub const DOT11_EXTSTA_ATTRIBUTES_REVISION_3 = @as(u32, 3);
pub const DOT11_EXTSTA_ATTRIBUTES_REVISION_4 = @as(u32, 4);
pub const DOT11_SEND_CONTEXT_REVISION_1 = @as(u32, 1);
pub const DOT11_RECV_CONTEXT_REVISION_1 = @as(u32, 1);
pub const DOT11_STATUS_SUCCESS = @as(u32, 1);
pub const DOT11_STATUS_RETRY_LIMIT_EXCEEDED = @as(u32, 2);
pub const DOT11_STATUS_UNSUPPORTED_PRIORITY = @as(u32, 4);
pub const DOT11_STATUS_UNSUPPORTED_SERVICE_CLASS = @as(u32, 8);
pub const DOT11_STATUS_UNAVAILABLE_PRIORITY = @as(u32, 16);
pub const DOT11_STATUS_UNAVAILABLE_SERVICE_CLASS = @as(u32, 32);
pub const DOT11_STATUS_XMIT_MSDU_TIMER_EXPIRED = @as(u32, 64);
pub const DOT11_STATUS_UNAVAILABLE_BSS = @as(u32, 128);
pub const DOT11_STATUS_EXCESSIVE_DATA_LENGTH = @as(u32, 256);
pub const DOT11_STATUS_ENCRYPTION_FAILED = @as(u32, 512);
pub const DOT11_STATUS_WEP_KEY_UNAVAILABLE = @as(u32, 1024);
pub const DOT11_STATUS_ICV_VERIFIED = @as(u32, 2048);
pub const DOT11_STATUS_PACKET_REASSEMBLED = @as(u32, 4096);
pub const DOT11_STATUS_PACKET_NOT_REASSEMBLED = @as(u32, 8192);
pub const DOT11_STATUS_GENERATE_AUTH_FAILED = @as(u32, 16384);
pub const DOT11_STATUS_AUTH_NOT_VERIFIED = @as(u32, 32768);
pub const DOT11_STATUS_AUTH_VERIFIED = @as(u32, 65536);
pub const DOT11_STATUS_AUTH_FAILED = @as(u32, 131072);
pub const DOT11_STATUS_PS_LIFETIME_EXPIRED = @as(u32, 262144);
pub const DOT11_STATUS_RESET_CONFIRM = @as(u32, 4);
pub const DOT11_STATUS_SCAN_CONFIRM = @as(u32, 1);
pub const DOT11_STATUS_JOIN_CONFIRM = @as(u32, 2);
pub const DOT11_STATUS_START_CONFIRM = @as(u32, 3);
pub const DOT11_STATUS_AP_JOIN_CONFIRM = @as(u32, 5);
pub const DOT11_STATUS_MPDU_MAX_LENGTH_CHANGED = @as(u32, 6);
pub const DOT11_MPDU_MAX_LENGTH_INDICATION_REVISION_1 = @as(u32, 1);
pub const DOT11_ASSOCIATION_START_PARAMETERS_REVISION_1 = @as(u32, 1);
pub const DOT11_ENCAP_RFC_1042 = @as(u32, 1);
pub const DOT11_ENCAP_802_1H = @as(u32, 2);
pub const DOT11_ASSOC_STATUS_SUCCESS = @as(u32, 0);
pub const DOT11_ASSOCIATION_COMPLETION_PARAMETERS_REVISION_1 = @as(u32, 1);
pub const DOT11_ASSOCIATION_COMPLETION_PARAMETERS_REVISION_2 = @as(u32, 2);
pub const DOT11_CONNECTION_START_PARAMETERS_REVISION_1 = @as(u32, 1);
pub const DOT11_CONNECTION_STATUS_SUCCESS = @as(u32, 0);
pub const DOT11_CONNECTION_COMPLETION_PARAMETERS_REVISION_1 = @as(u32, 1);
pub const DOT11_ROAMING_START_PARAMETERS_REVISION_1 = @as(u32, 1);
pub const DOT11_ROAMING_COMPLETION_PARAMETERS_REVISION_1 = @as(u32, 1);
pub const DOT11_DISASSOCIATION_PARAMETERS_REVISION_1 = @as(u32, 1);
pub const DOT11_TKIPMIC_FAILURE_PARAMETERS_REVISION_1 = @as(u32, 1);
pub const DOT11_PMKID_CANDIDATE_LIST_PARAMETERS_REVISION_1 = @as(u32, 1);
pub const DOT11_PHY_STATE_PARAMETERS_REVISION_1 = @as(u32, 1);
pub const DOT11_LINK_QUALITY_PARAMETERS_REVISION_1 = @as(u32, 1);
pub const DOT11_EXTSTA_SEND_CONTEXT_REVISION_1 = @as(u32, 1);
pub const DOT11_EXTSTA_RECV_CONTEXT_REVISION_1 = @as(u32, 1);
pub const OID_DOT11_PRIVATE_OIDS_START = @as(u32, 218171136);
pub const OID_DOT11_CURRENT_ADDRESS = @as(u32, 218171138);
pub const OID_DOT11_PERMANENT_ADDRESS = @as(u32, 218171139);
pub const OID_DOT11_MULTICAST_LIST = @as(u32, 218171140);
pub const OID_DOT11_MAXIMUM_LIST_SIZE = @as(u32, 218171141);
pub const DOT11_EXTAP_ATTRIBUTES_REVISION_1 = @as(u32, 1);
pub const DOT11_INCOMING_ASSOC_STARTED_PARAMETERS_REVISION_1 = @as(u32, 1);
pub const DOT11_INCOMING_ASSOC_REQUEST_RECEIVED_PARAMETERS_REVISION_1 = @as(u32, 1);
pub const DOT11_ASSOC_ERROR_SOURCE_OS = @as(u32, 0);
pub const DOT11_ASSOC_ERROR_SOURCE_REMOTE = @as(u32, 1);
pub const DOT11_ASSOC_ERROR_SOURCE_OTHER = @as(u32, 255);
pub const DOT11_INCOMING_ASSOC_COMPLETION_PARAMETERS_REVISION_1 = @as(u32, 1);
pub const DOT11_STOP_AP_PARAMETERS_REVISION_1 = @as(u32, 1);
pub const DOT11_STOP_AP_REASON_FREQUENCY_NOT_AVAILABLE = @as(u32, 1);
pub const DOT11_STOP_AP_REASON_CHANNEL_NOT_AVAILABLE = @as(u32, 2);
pub const DOT11_STOP_AP_REASON_AP_ACTIVE = @as(u32, 3);
pub const DOT11_STOP_AP_REASON_IHV_START = @as(u32, 4278190080);
pub const DOT11_STOP_AP_REASON_IHV_END = @as(u32, 4294967295);
pub const DOT11_PHY_FREQUENCY_ADOPTED_PARAMETERS_REVISION_1 = @as(u32, 1);
pub const DOT11_CAN_SUSTAIN_AP_PARAMETERS_REVISION_1 = @as(u32, 1);
pub const DOT11_CAN_SUSTAIN_AP_REASON_IHV_START = @as(u32, 4278190080);
pub const DOT11_CAN_SUSTAIN_AP_REASON_IHV_END = @as(u32, 4294967295);
pub const DOT11_AVAILABLE_CHANNEL_LIST_REVISION_1 = @as(u32, 1);
pub const DOT11_AVAILABLE_FREQUENCY_LIST_REVISION_1 = @as(u32, 1);
pub const DOT11_DISASSOCIATE_PEER_REQUEST_REVISION_1 = @as(u32, 1);
pub const DOT11_INCOMING_ASSOC_DECISION_REVISION_1 = @as(u32, 1);
pub const DOT11_INCOMING_ASSOC_DECISION_REVISION_2 = @as(u32, 2);
pub const DOT11_ADDITIONAL_IE_REVISION_1 = @as(u32, 1);
pub const DOT11_EXTAP_SEND_CONTEXT_REVISION_1 = @as(u32, 1);
pub const DOT11_EXTAP_RECV_CONTEXT_REVISION_1 = @as(u32, 1);
pub const DOT11_PEER_INFO_LIST_REVISION_1 = @as(u32, 1);
pub const DOT11_VWIFI_COMBINATION_REVISION_1 = @as(u32, 1);
pub const DOT11_VWIFI_COMBINATION_REVISION_2 = @as(u32, 2);
pub const DOT11_VWIFI_COMBINATION_REVISION_3 = @as(u32, 3);
pub const DOT11_VWIFI_ATTRIBUTES_REVISION_1 = @as(u32, 1);
pub const DOT11_MAC_PARAMETERS_REVISION_1 = @as(u32, 1);
pub const DOT11_WFD_ATTRIBUTES_REVISION_1 = @as(u32, 1);
pub const DOT11_WFD_STATUS_SUCCESS = @as(u32, 0);
pub const DOT11_WFD_STATUS_FAILED_INFORMATION_IS_UNAVAILABLE = @as(u32, 1);
pub const DOT11_WFD_STATUS_FAILED_INCOMPATIBLE_PARAMETERS = @as(u32, 2);
pub const DOT11_WFD_STATUS_FAILED_LIMIT_REACHED = @as(u32, 3);
pub const DOT11_WFD_STATUS_FAILED_INVALID_PARAMETERS = @as(u32, 4);
pub const DOT11_WFD_STATUS_FAILED_UNABLE_TO_ACCOMODATE_REQUEST = @as(u32, 5);
pub const DOT11_WFD_STATUS_FAILED_PREVIOUS_PROTOCOL_ERROR = @as(u32, 6);
pub const DOT11_WFD_STATUS_FAILED_NO_COMMON_CHANNELS = @as(u32, 7);
pub const DOT11_WFD_STATUS_FAILED_UNKNOWN_WFD_GROUP = @as(u32, 8);
pub const DOT11_WFD_STATUS_FAILED_MATCHING_MAX_INTENT = @as(u32, 9);
pub const DOT11_WFD_STATUS_FAILED_INCOMPATIBLE_PROVISIONING_METHOD = @as(u32, 10);
pub const DOT11_WFD_STATUS_FAILED_REJECTED_BY_USER = @as(u32, 11);
pub const DOT11_WFD_STATUS_SUCCESS_ACCEPTED_BY_USER = @as(u32, 12);
pub const DOT11_WFD_MINOR_REASON_SUCCESS = @as(u32, 0);
pub const DOT11_WFD_MINOR_REASON_DISASSOCIATED_FROM_WLAN_CROSS_CONNECTION_POLICY = @as(u32, 1);
pub const DOT11_WFD_MINOR_REASON_DISASSOCIATED_NOT_MANAGED_INFRASTRUCTURE_CAPABLE = @as(u32, 2);
pub const DOT11_WFD_MINOR_REASON_DISASSOCIATED_WFD_COEXISTENCE_POLICY = @as(u32, 3);
pub const DOT11_WFD_MINOR_REASON_DISASSOCIATED_INFRASTRUCTURE_MANAGED_POLICY = @as(u32, 4);
pub const DOT11_WPS_VERSION_1_0 = @as(u32, 1);
pub const DOT11_WPS_VERSION_2_0 = @as(u32, 2);
pub const DOT11_WFD_DEVICE_CAPABILITY_SERVICE_DISCOVERY = @as(u32, 1);
pub const DOT11_WFD_DEVICE_CAPABILITY_P2P_CLIENT_DISCOVERABILITY = @as(u32, 2);
pub const DOT11_WFD_DEVICE_CAPABILITY_CONCURRENT_OPERATION = @as(u32, 4);
pub const DOT11_WFD_DEVICE_CAPABILITY_P2P_INFRASTRUCTURE_MANAGED = @as(u32, 8);
pub const DOT11_WFD_DEVICE_CAPABILITY_P2P_DEVICE_LIMIT = @as(u32, 16);
pub const DOT11_WFD_DEVICE_CAPABILITY_P2P_INVITATION_PROCEDURE = @as(u32, 32);
pub const DOT11_WFD_DEVICE_CAPABILITY_RESERVED_6 = @as(u32, 64);
pub const DOT11_WFD_DEVICE_CAPABILITY_RESERVED_7 = @as(u32, 128);
pub const DOT11_WFD_GROUP_CAPABILITY_NONE = @as(u32, 0);
pub const DOT11_WFD_GROUP_CAPABILITY_GROUP_OWNER = @as(u32, 1);
pub const DOT11_WFD_GROUP_CAPABILITY_PERSISTENT_GROUP = @as(u32, 2);
pub const DOT11_WFD_GROUP_CAPABILITY_GROUP_LIMIT_REACHED = @as(u32, 4);
pub const DOT11_WFD_GROUP_CAPABILITY_INTRABSS_DISTRIBUTION_SUPPORTED = @as(u32, 8);
pub const DOT11_WFD_GROUP_CAPABILITY_CROSS_CONNECTION_SUPPORTED = @as(u32, 16);
pub const DOT11_WFD_GROUP_CAPABILITY_PERSISTENT_RECONNECT_SUPPORTED = @as(u32, 32);
pub const DOT11_WFD_GROUP_CAPABILITY_IN_GROUP_FORMATION = @as(u32, 64);
pub const DOT11_WFD_GROUP_CAPABILITY_RESERVED_7 = @as(u32, 128);
pub const DOT11_WFD_GROUP_CAPABILITY_EAPOL_KEY_IP_ADDRESS_ALLOCATION_SUPPORTED = @as(u32, 128);
pub const DOT11_WPS_DEVICE_NAME_MAX_LENGTH = @as(u32, 32);
pub const DOT11_WPS_MAX_PASSKEY_LENGTH = @as(u32, 8);
pub const DOT11_WPS_MAX_MODEL_NAME_LENGTH = @as(u32, 32);
pub const DOT11_WPS_MAX_MODEL_NUMBER_LENGTH = @as(u32, 32);
pub const WFDSVC_CONNECTION_CAPABILITY_NEW = @as(u32, 1);
pub const WFDSVC_CONNECTION_CAPABILITY_CLIENT = @as(u32, 2);
pub const WFDSVC_CONNECTION_CAPABILITY_GO = @as(u32, 4);
pub const DOT11_WFD_DISCOVER_COMPLETE_PARAMETERS_REVISION_1 = @as(u32, 1);
pub const DOT11_WFD_DISCOVER_COMPLETE_MAX_LIST_SIZE = @as(u32, 128);
pub const DOT11_GO_NEGOTIATION_REQUEST_SEND_COMPLETE_PARAMETERS_REVISION_1 = @as(u32, 1);
pub const DOT11_RECEIVED_GO_NEGOTIATION_REQUEST_PARAMETERS_REVISION_1 = @as(u32, 1);
pub const DOT11_GO_NEGOTIATION_RESPONSE_SEND_COMPLETE_PARAMETERS_REVISION_1 = @as(u32, 1);
pub const DOT11_RECEIVED_GO_NEGOTIATION_RESPONSE_PARAMETERS_REVISION_1 = @as(u32, 1);
pub const DOT11_GO_NEGOTIATION_CONFIRMATION_SEND_COMPLETE_PARAMETERS_REVISION_1 = @as(u32, 1);
pub const DOT11_RECEIVED_GO_NEGOTIATION_CONFIRMATION_PARAMETERS_REVISION_1 = @as(u32, 1);
pub const DOT11_INVITATION_REQUEST_SEND_COMPLETE_PARAMETERS_REVISION_1 = @as(u32, 1);
pub const DOT11_RECEIVED_INVITATION_REQUEST_PARAMETERS_REVISION_1 = @as(u32, 1);
pub const DOT11_INVITATION_RESPONSE_SEND_COMPLETE_PARAMETERS_REVISION_1 = @as(u32, 1);
pub const DOT11_RECEIVED_INVITATION_RESPONSE_PARAMETERS_REVISION_1 = @as(u32, 1);
pub const DOT11_PROVISION_DISCOVERY_REQUEST_SEND_COMPLETE_PARAMETERS_REVISION_1 = @as(u32, 1);
pub const DOT11_RECEIVED_PROVISION_DISCOVERY_REQUEST_PARAMETERS_REVISION_1 = @as(u32, 1);
pub const DOT11_PROVISION_DISCOVERY_RESPONSE_SEND_COMPLETE_PARAMETERS_REVISION_1 = @as(u32, 1);
pub const DOT11_RECEIVED_PROVISION_DISCOVERY_RESPONSE_PARAMETERS_REVISION_1 = @as(u32, 1);
pub const DOT11_ANQP_QUERY_COMPLETE_PARAMETERS_REVISION_1 = @as(u32, 1);
pub const DOT11_WFD_DEVICE_CAPABILITY_CONFIG_REVISION_1 = @as(u32, 1);
pub const DOT11_WFD_GROUP_OWNER_CAPABILITY_CONFIG_REVISION_1 = @as(u32, 1);
pub const DOT11_WFD_GROUP_OWNER_CAPABILITY_CONFIG_REVISION_2 = @as(u32, 2);
pub const DOT11_WFD_DEVICE_INFO_REVISION_1 = @as(u32, 1);
pub const DOT11_WFD_SECONDARY_DEVICE_TYPE_LIST_REVISION_1 = @as(u32, 1);
pub const DISCOVERY_FILTER_BITMASK_DEVICE = @as(u32, 1);
pub const DISCOVERY_FILTER_BITMASK_GO = @as(u32, 2);
pub const DISCOVERY_FILTER_BITMASK_ANY = @as(u32, 15);
pub const DOT11_WFD_DISCOVER_REQUEST_REVISION_1 = @as(u32, 1);
pub const DOT11_DEVICE_ENTRY_BYTE_ARRAY_REVISION_1 = @as(u32, 1);
pub const DOT11_WFD_DEVICE_NOT_DISCOVERABLE = @as(u32, 0);
pub const DOT11_WFD_DEVICE_AUTO_AVAILABILITY = @as(u32, 16);
pub const DOT11_WFD_DEVICE_HIGH_AVAILABILITY = @as(u32, 24);
pub const DOT11_WFD_ADDITIONAL_IE_REVISION_1 = @as(u32, 1);
pub const DOT11_SEND_GO_NEGOTIATION_REQUEST_PARAMETERS_REVISION_1 = @as(u32, 1);
pub const DOT11_SEND_GO_NEGOTIATION_RESPONSE_PARAMETERS_REVISION_1 = @as(u32, 1);
pub const DOT11_SEND_GO_NEGOTIATION_CONFIRMATION_PARAMETERS_REVISION_1 = @as(u32, 1);
pub const DOT11_SEND_INVITATION_REQUEST_PARAMETERS_REVISION_1 = @as(u32, 1);
pub const DOT11_SEND_INVITATION_RESPONSE_PARAMETERS_REVISION_1 = @as(u32, 1);
pub const DOT11_SEND_PROVISION_DISCOVERY_REQUEST_PARAMETERS_REVISION_1 = @as(u32, 1);
pub const DOT11_SEND_PROVISION_DISCOVERY_RESPONSE_PARAMETERS_REVISION_1 = @as(u32, 1);
pub const DOT11_WFD_DEVICE_LISTEN_CHANNEL_REVISION_1 = @as(u32, 1);
pub const DOT11_WFD_GROUP_START_PARAMETERS_REVISION_1 = @as(u32, 1);
pub const DOT11_WFD_GROUP_JOIN_PARAMETERS_REVISION_1 = @as(u32, 1);
pub const DOT11_POWER_MGMT_AUTO_MODE_ENABLED_REVISION_1 = @as(u32, 1);
pub const DOT11_POWER_MGMT_MODE_STATUS_INFO_REVISION_1 = @as(u32, 1);
pub const DOT11_MAX_CHANNEL_HINTS = @as(u32, 4);
pub const DOT11_INVALID_CHANNEL_NUMBER = @as(u32, 0);
pub const DOT11_NLO_FLAG_STOP_NLO_INDICATION = @as(u32, 1);
pub const DOT11_NLO_FLAG_SCAN_ON_AOAC_PLATFORM = @as(u32, 2);
pub const DOT11_NLO_FLAG_SCAN_AT_SYSTEM_RESUME = @as(u32, 4);
pub const DOT11_OFFLOAD_NETWORK_LIST_REVISION_1 = @as(u32, 1);
pub const DOT11_OFFLOAD_NETWORK_STATUS_PARAMETERS_REVISION_1 = @as(u32, 1);
pub const DOT11_MANUFACTURING_TEST_REVISION_1 = @as(u32, 1);
pub const DOT11_MANUFACTURING_CALLBACK_REVISION_1 = @as(u32, 1);
pub const DOT11_SSID_MAX_LENGTH = @as(u32, 32);
pub const DOT11_OI_MAX_LENGTH = @as(u32, 5);
pub const DOT11_OI_MIN_LENGTH = @as(u32, 3);
pub const DevProp_PciRootBus_SecondaryInterface_PciConventional = @as(u32, 0);
pub const DevProp_PciRootBus_SecondaryInterface_PciXMode1 = @as(u32, 1);
pub const DevProp_PciRootBus_SecondaryInterface_PciXMode2 = @as(u32, 2);
pub const DevProp_PciRootBus_SecondaryInterface_PciExpress = @as(u32, 3);
pub const DevProp_PciRootBus_CurrentSpeedAndMode_Pci_Conventional_33Mhz = @as(u32, 0);
pub const DevProp_PciRootBus_CurrentSpeedAndMode_Pci_Conventional_66Mhz = @as(u32, 1);
pub const DevProp_PciRootBus_CurrentSpeedAndMode_Pci_X_Mode1_66Mhz = @as(u32, 2);
pub const DevProp_PciRootBus_CurrentSpeedAndMode_Pci_X_Mode1_100Mhz = @as(u32, 3);
pub const DevProp_PciRootBus_CurrentSpeedAndMode_Pci_X_Mode1_133Mhz = @as(u32, 4);
pub const DevProp_PciRootBus_CurrentSpeedAndMode_Pci_X_Mode1_ECC_66Mhz = @as(u32, 5);
pub const DevProp_PciRootBus_CurrentSpeedAndMode_Pci_X_Mode1_ECC_100Mhz = @as(u32, 6);
pub const DevProp_PciRootBus_CurrentSpeedAndMode_Pci_X_Mode1_ECC_133Mhz = @as(u32, 7);
pub const DevProp_PciRootBus_CurrentSpeedAndMode_Pci_X_266_Mode2_66Mhz = @as(u32, 8);
pub const DevProp_PciRootBus_CurrentSpeedAndMode_Pci_X_266_Mode2_100Mhz = @as(u32, 9);
pub const DevProp_PciRootBus_CurrentSpeedAndMode_Pci_X_266_Mode2_133Mhz = @as(u32, 10);
pub const DevProp_PciRootBus_CurrentSpeedAndMode_Pci_X_533_Mode2_66Mhz = @as(u32, 11);
pub const DevProp_PciRootBus_CurrentSpeedAndMode_Pci_X_533_Mode2_100Mhz = @as(u32, 12);
pub const DevProp_PciRootBus_CurrentSpeedAndMode_Pci_X_533_Mode2_133Mhz = @as(u32, 13);
pub const DevProp_PciRootBus_SupportedSpeedsAndModes_Pci_Conventional_33Mhz = @as(u32, 1);
pub const DevProp_PciRootBus_SupportedSpeedsAndModes_Pci_Conventional_66Mhz = @as(u32, 2);
pub const DevProp_PciRootBus_SupportedSpeedsAndModes_Pci_X_66Mhz = @as(u32, 4);
pub const DevProp_PciRootBus_SupportedSpeedsAndModes_Pci_X_133Mhz = @as(u32, 8);
pub const DevProp_PciRootBus_SupportedSpeedsAndModes_Pci_X_266Mhz = @as(u32, 16);
pub const DevProp_PciRootBus_SupportedSpeedsAndModes_Pci_X_533Mhz = @as(u32, 32);
pub const DevProp_PciRootBus_BusWidth_32Bits = @as(u32, 0);
pub const DevProp_PciRootBus_BusWidth_64Bits = @as(u32, 1);
pub const DevProp_PciDevice_DeviceType_PciConventional = @as(u32, 0);
pub const DevProp_PciDevice_DeviceType_PciX = @as(u32, 1);
pub const DevProp_PciDevice_DeviceType_PciExpressEndpoint = @as(u32, 2);
pub const DevProp_PciDevice_DeviceType_PciExpressLegacyEndpoint = @as(u32, 3);
pub const DevProp_PciDevice_DeviceType_PciExpressRootComplexIntegratedEndpoint = @as(u32, 4);
pub const DevProp_PciDevice_DeviceType_PciExpressTreatedAsPci = @as(u32, 5);
pub const DevProp_PciDevice_BridgeType_PciConventional = @as(u32, 6);
pub const DevProp_PciDevice_BridgeType_PciX = @as(u32, 7);
pub const DevProp_PciDevice_BridgeType_PciExpressRootPort = @as(u32, 8);
pub const DevProp_PciDevice_BridgeType_PciExpressUpstreamSwitchPort = @as(u32, 9);
pub const DevProp_PciDevice_BridgeType_PciExpressDownstreamSwitchPort = @as(u32, 10);
pub const DevProp_PciDevice_BridgeType_PciExpressToPciXBridge = @as(u32, 11);
pub const DevProp_PciDevice_BridgeType_PciXToExpressBridge = @as(u32, 12);
pub const DevProp_PciDevice_BridgeType_PciExpressTreatedAsPci = @as(u32, 13);
pub const DevProp_PciDevice_BridgeType_PciExpressEventCollector = @as(u32, 14);
pub const DevProp_PciDevice_CurrentSpeedAndMode_Pci_Conventional_33MHz = @as(u32, 0);
pub const DevProp_PciDevice_CurrentSpeedAndMode_Pci_Conventional_66MHz = @as(u32, 1);
pub const DevProp_PciDevice_CurrentSpeedAndMode_PciX_Mode_Conventional_Pci = @as(u32, 0);
pub const DevProp_PciDevice_CurrentSpeedAndMode_PciX_Mode1_66Mhz = @as(u32, 1);
pub const DevProp_PciDevice_CurrentSpeedAndMode_PciX_Mode1_100Mhz = @as(u32, 2);
pub const DevProp_PciDevice_CurrentSpeedAndMode_PciX_Mode1_133MHZ = @as(u32, 3);
pub const DevProp_PciDevice_CurrentSpeedAndMode_PciX_Mode1_ECC_66Mhz = @as(u32, 5);
pub const DevProp_PciDevice_CurrentSpeedAndMode_PciX_Mode1_ECC_100Mhz = @as(u32, 6);
pub const DevProp_PciDevice_CurrentSpeedAndMode_PciX_Mode1_ECC_133Mhz = @as(u32, 7);
pub const DevProp_PciDevice_CurrentSpeedAndMode_PciX_Mode2_266_66MHz = @as(u32, 9);
pub const DevProp_PciDevice_CurrentSpeedAndMode_PciX_Mode2_266_100MHz = @as(u32, 10);
pub const DevProp_PciDevice_CurrentSpeedAndMode_PciX_Mode2_266_133MHz = @as(u32, 11);
pub const DevProp_PciDevice_CurrentSpeedAndMode_PciX_Mode2_533_66MHz = @as(u32, 13);
pub const DevProp_PciDevice_CurrentSpeedAndMode_PciX_Mode2_533_100MHz = @as(u32, 14);
pub const DevProp_PciDevice_CurrentSpeedAndMode_PciX_Mode2_533_133MHz = @as(u32, 15);
pub const DevProp_PciExpressDevice_PayloadOrRequestSize_128Bytes = @as(u32, 0);
pub const DevProp_PciExpressDevice_PayloadOrRequestSize_256Bytes = @as(u32, 1);
pub const DevProp_PciExpressDevice_PayloadOrRequestSize_512Bytes = @as(u32, 2);
pub const DevProp_PciExpressDevice_PayloadOrRequestSize_1024Bytes = @as(u32, 3);
pub const DevProp_PciExpressDevice_PayloadOrRequestSize_2048Bytes = @as(u32, 4);
pub const DevProp_PciExpressDevice_PayloadOrRequestSize_4096Bytes = @as(u32, 5);
pub const DevProp_PciExpressDevice_LinkSpeed_TwoAndHalf_Gbps = @as(u32, 1);
pub const DevProp_PciExpressDevice_LinkSpeed_Five_Gbps = @as(u32, 2);
pub const DevProp_PciExpressDevice_LinkWidth_By_1 = @as(u32, 1);
pub const DevProp_PciExpressDevice_LinkWidth_By_2 = @as(u32, 2);
pub const DevProp_PciExpressDevice_LinkWidth_By_4 = @as(u32, 4);
pub const DevProp_PciExpressDevice_LinkWidth_By_8 = @as(u32, 8);
pub const DevProp_PciExpressDevice_LinkWidth_By_12 = @as(u32, 12);
pub const DevProp_PciExpressDevice_LinkWidth_By_16 = @as(u32, 16);
pub const DevProp_PciExpressDevice_LinkWidth_By_32 = @as(u32, 32);
pub const DevProp_PciExpressDevice_Spec_Version_10 = @as(u32, 1);
pub const DevProp_PciExpressDevice_Spec_Version_11 = @as(u32, 2);
pub const DevProp_PciDevice_InterruptType_LineBased = @as(u32, 1);
pub const DevProp_PciDevice_InterruptType_Msi = @as(u32, 2);
pub const DevProp_PciDevice_InterruptType_MsiX = @as(u32, 4);
pub const DevProp_PciDevice_SriovSupport_Ok = @as(u32, 0);
pub const DevProp_PciDevice_SriovSupport_MissingAcs = @as(u32, 1);
pub const DevProp_PciDevice_SriovSupport_MissingPfDriver = @as(u32, 2);
pub const DevProp_PciDevice_SriovSupport_NoBusResource = @as(u32, 3);
pub const DevProp_PciDevice_SriovSupport_DidntGetVfBarSpace = @as(u32, 4);
pub const DevProp_PciDevice_AcsSupport_Present = @as(u32, 0);
pub const DevProp_PciDevice_AcsSupport_NotNeeded = @as(u32, 1);
pub const DevProp_PciDevice_AcsSupport_Missing = @as(u32, 2);
pub const DevProp_PciDevice_AcsCompatibleUpHierarchy_NotSupported = @as(u32, 0);
pub const DevProp_PciDevice_AcsCompatibleUpHierarchy_SingleFunctionSupported = @as(u32, 1);
pub const DevProp_PciDevice_AcsCompatibleUpHierarchy_NoP2PSupported = @as(u32, 2);
pub const DevProp_PciDevice_AcsCompatibleUpHierarchy_Supported = @as(u32, 3);
pub const DevProp_PciDevice_AcsCompatibleUpHierarchy_Enhanced = @as(u32, 4);
pub const WLAN_API_VERSION_1_0 = @as(u32, 1);
pub const WLAN_API_VERSION_2_0 = @as(u32, 2);
pub const WLAN_API_VERSION = @as(u32, 2);
pub const WLAN_MAX_NAME_LENGTH = @as(u32, 256);
pub const WLAN_PROFILE_GROUP_POLICY = @as(u32, 1);
pub const WLAN_PROFILE_USER = @as(u32, 2);
pub const WLAN_PROFILE_GET_PLAINTEXT_KEY = @as(u32, 4);
pub const WLAN_PROFILE_CONNECTION_MODE_SET_BY_CLIENT = @as(u32, 65536);
pub const WLAN_PROFILE_CONNECTION_MODE_AUTO = @as(u32, 131072);
pub const DOT11_PSD_IE_MAX_DATA_SIZE = @as(u32, 240);
pub const DOT11_PSD_IE_MAX_ENTRY_NUMBER = @as(u32, 5);
pub const WLAN_REASON_CODE_NETWORK_NOT_COMPATIBLE = @as(u32, 131073);
pub const WLAN_REASON_CODE_PROFILE_NOT_COMPATIBLE = @as(u32, 131074);
pub const WLAN_REASON_CODE_NO_AUTO_CONNECTION = @as(u32, 163841);
pub const WLAN_REASON_CODE_NOT_VISIBLE = @as(u32, 163842);
pub const WLAN_REASON_CODE_GP_DENIED = @as(u32, 163843);
pub const WLAN_REASON_CODE_USER_DENIED = @as(u32, 163844);
pub const WLAN_REASON_CODE_BSS_TYPE_NOT_ALLOWED = @as(u32, 163845);
pub const WLAN_REASON_CODE_IN_FAILED_LIST = @as(u32, 163846);
pub const WLAN_REASON_CODE_IN_BLOCKED_LIST = @as(u32, 163847);
pub const WLAN_REASON_CODE_SSID_LIST_TOO_LONG = @as(u32, 163848);
pub const WLAN_REASON_CODE_CONNECT_CALL_FAIL = @as(u32, 163849);
pub const WLAN_REASON_CODE_SCAN_CALL_FAIL = @as(u32, 163850);
pub const WLAN_REASON_CODE_NETWORK_NOT_AVAILABLE = @as(u32, 163851);
pub const WLAN_REASON_CODE_PROFILE_CHANGED_OR_DELETED = @as(u32, 163852);
pub const WLAN_REASON_CODE_KEY_MISMATCH = @as(u32, 163853);
pub const WLAN_REASON_CODE_USER_NOT_RESPOND = @as(u32, 163854);
pub const WLAN_REASON_CODE_AP_PROFILE_NOT_ALLOWED_FOR_CLIENT = @as(u32, 163855);
pub const WLAN_REASON_CODE_AP_PROFILE_NOT_ALLOWED = @as(u32, 163856);
pub const WLAN_REASON_CODE_HOTSPOT2_PROFILE_DENIED = @as(u32, 163857);
pub const WLAN_REASON_CODE_INVALID_PROFILE_SCHEMA = @as(u32, 524289);
pub const WLAN_REASON_CODE_PROFILE_MISSING = @as(u32, 524290);
pub const WLAN_REASON_CODE_INVALID_PROFILE_NAME = @as(u32, 524291);
pub const WLAN_REASON_CODE_INVALID_PROFILE_TYPE = @as(u32, 524292);
pub const WLAN_REASON_CODE_INVALID_PHY_TYPE = @as(u32, 524293);
pub const WLAN_REASON_CODE_MSM_SECURITY_MISSING = @as(u32, 524294);
pub const WLAN_REASON_CODE_IHV_SECURITY_NOT_SUPPORTED = @as(u32, 524295);
pub const WLAN_REASON_CODE_IHV_OUI_MISMATCH = @as(u32, 524296);
pub const WLAN_REASON_CODE_IHV_OUI_MISSING = @as(u32, 524297);
pub const WLAN_REASON_CODE_IHV_SETTINGS_MISSING = @as(u32, 524298);
pub const WLAN_REASON_CODE_CONFLICT_SECURITY = @as(u32, 524299);
pub const WLAN_REASON_CODE_SECURITY_MISSING = @as(u32, 524300);
pub const WLAN_REASON_CODE_INVALID_BSS_TYPE = @as(u32, 524301);
pub const WLAN_REASON_CODE_INVALID_ADHOC_CONNECTION_MODE = @as(u32, 524302);
pub const WLAN_REASON_CODE_NON_BROADCAST_SET_FOR_ADHOC = @as(u32, 524303);
pub const WLAN_REASON_CODE_AUTO_SWITCH_SET_FOR_ADHOC = @as(u32, 524304);
pub const WLAN_REASON_CODE_AUTO_SWITCH_SET_FOR_MANUAL_CONNECTION = @as(u32, 524305);
pub const WLAN_REASON_CODE_IHV_SECURITY_ONEX_MISSING = @as(u32, 524306);
pub const WLAN_REASON_CODE_PROFILE_SSID_INVALID = @as(u32, 524307);
pub const WLAN_REASON_CODE_TOO_MANY_SSID = @as(u32, 524308);
pub const WLAN_REASON_CODE_IHV_CONNECTIVITY_NOT_SUPPORTED = @as(u32, 524309);
pub const WLAN_REASON_CODE_BAD_MAX_NUMBER_OF_CLIENTS_FOR_AP = @as(u32, 524310);
pub const WLAN_REASON_CODE_INVALID_CHANNEL = @as(u32, 524311);
pub const WLAN_REASON_CODE_OPERATION_MODE_NOT_SUPPORTED = @as(u32, 524312);
pub const WLAN_REASON_CODE_AUTO_AP_PROFILE_NOT_ALLOWED = @as(u32, 524313);
pub const WLAN_REASON_CODE_AUTO_CONNECTION_NOT_ALLOWED = @as(u32, 524314);
pub const WLAN_REASON_CODE_HOTSPOT2_PROFILE_NOT_ALLOWED = @as(u32, 524315);
pub const WLAN_REASON_CODE_UNSUPPORTED_SECURITY_SET_BY_OS = @as(u32, 196609);
pub const WLAN_REASON_CODE_UNSUPPORTED_SECURITY_SET = @as(u32, 196610);
pub const WLAN_REASON_CODE_BSS_TYPE_UNMATCH = @as(u32, 196611);
pub const WLAN_REASON_CODE_PHY_TYPE_UNMATCH = @as(u32, 196612);
pub const WLAN_REASON_CODE_DATARATE_UNMATCH = @as(u32, 196613);
pub const WLAN_REASON_CODE_USER_CANCELLED = @as(u32, 229377);
pub const WLAN_REASON_CODE_ASSOCIATION_FAILURE = @as(u32, 229378);
pub const WLAN_REASON_CODE_ASSOCIATION_TIMEOUT = @as(u32, 229379);
pub const WLAN_REASON_CODE_PRE_SECURITY_FAILURE = @as(u32, 229380);
pub const WLAN_REASON_CODE_START_SECURITY_FAILURE = @as(u32, 229381);
pub const WLAN_REASON_CODE_SECURITY_FAILURE = @as(u32, 229382);
pub const WLAN_REASON_CODE_SECURITY_TIMEOUT = @as(u32, 229383);
pub const WLAN_REASON_CODE_ROAMING_FAILURE = @as(u32, 229384);
pub const WLAN_REASON_CODE_ROAMING_SECURITY_FAILURE = @as(u32, 229385);
pub const WLAN_REASON_CODE_ADHOC_SECURITY_FAILURE = @as(u32, 229386);
pub const WLAN_REASON_CODE_DRIVER_DISCONNECTED = @as(u32, 229387);
pub const WLAN_REASON_CODE_DRIVER_OPERATION_FAILURE = @as(u32, 229388);
pub const WLAN_REASON_CODE_IHV_NOT_AVAILABLE = @as(u32, 229389);
pub const WLAN_REASON_CODE_IHV_NOT_RESPONDING = @as(u32, 229390);
pub const WLAN_REASON_CODE_DISCONNECT_TIMEOUT = @as(u32, 229391);
pub const WLAN_REASON_CODE_INTERNAL_FAILURE = @as(u32, 229392);
pub const WLAN_REASON_CODE_UI_REQUEST_TIMEOUT = @as(u32, 229393);
pub const WLAN_REASON_CODE_TOO_MANY_SECURITY_ATTEMPTS = @as(u32, 229394);
pub const WLAN_REASON_CODE_AP_STARTING_FAILURE = @as(u32, 229395);
pub const WLAN_REASON_CODE_NO_VISIBLE_AP = @as(u32, 229396);
pub const WLAN_REASON_CODE_MSMSEC_MIN = @as(u32, 262144);
pub const WLAN_REASON_CODE_MSMSEC_PROFILE_INVALID_KEY_INDEX = @as(u32, 262145);
pub const WLAN_REASON_CODE_MSMSEC_PROFILE_PSK_PRESENT = @as(u32, 262146);
pub const WLAN_REASON_CODE_MSMSEC_PROFILE_KEY_LENGTH = @as(u32, 262147);
pub const WLAN_REASON_CODE_MSMSEC_PROFILE_PSK_LENGTH = @as(u32, 262148);
pub const WLAN_REASON_CODE_MSMSEC_PROFILE_NO_AUTH_CIPHER_SPECIFIED = @as(u32, 262149);
pub const WLAN_REASON_CODE_MSMSEC_PROFILE_TOO_MANY_AUTH_CIPHER_SPECIFIED = @as(u32, 262150);
pub const WLAN_REASON_CODE_MSMSEC_PROFILE_DUPLICATE_AUTH_CIPHER = @as(u32, 262151);
pub const WLAN_REASON_CODE_MSMSEC_PROFILE_RAWDATA_INVALID = @as(u32, 262152);
pub const WLAN_REASON_CODE_MSMSEC_PROFILE_INVALID_AUTH_CIPHER = @as(u32, 262153);
pub const WLAN_REASON_CODE_MSMSEC_PROFILE_ONEX_DISABLED = @as(u32, 262154);
pub const WLAN_REASON_CODE_MSMSEC_PROFILE_ONEX_ENABLED = @as(u32, 262155);
pub const WLAN_REASON_CODE_MSMSEC_PROFILE_INVALID_PMKCACHE_MODE = @as(u32, 262156);
pub const WLAN_REASON_CODE_MSMSEC_PROFILE_INVALID_PMKCACHE_SIZE = @as(u32, 262157);
pub const WLAN_REASON_CODE_MSMSEC_PROFILE_INVALID_PMKCACHE_TTL = @as(u32, 262158);
pub const WLAN_REASON_CODE_MSMSEC_PROFILE_INVALID_PREAUTH_MODE = @as(u32, 262159);
pub const WLAN_REASON_CODE_MSMSEC_PROFILE_INVALID_PREAUTH_THROTTLE = @as(u32, 262160);
pub const WLAN_REASON_CODE_MSMSEC_PROFILE_PREAUTH_ONLY_ENABLED = @as(u32, 262161);
pub const WLAN_REASON_CODE_MSMSEC_CAPABILITY_NETWORK = @as(u32, 262162);
pub const WLAN_REASON_CODE_MSMSEC_CAPABILITY_NIC = @as(u32, 262163);
pub const WLAN_REASON_CODE_MSMSEC_CAPABILITY_PROFILE = @as(u32, 262164);
pub const WLAN_REASON_CODE_MSMSEC_CAPABILITY_DISCOVERY = @as(u32, 262165);
pub const WLAN_REASON_CODE_MSMSEC_PROFILE_PASSPHRASE_CHAR = @as(u32, 262166);
pub const WLAN_REASON_CODE_MSMSEC_PROFILE_KEYMATERIAL_CHAR = @as(u32, 262167);
pub const WLAN_REASON_CODE_MSMSEC_PROFILE_WRONG_KEYTYPE = @as(u32, 262168);
pub const WLAN_REASON_CODE_MSMSEC_MIXED_CELL = @as(u32, 262169);
pub const WLAN_REASON_CODE_MSMSEC_PROFILE_AUTH_TIMERS_INVALID = @as(u32, 262170);
pub const WLAN_REASON_CODE_MSMSEC_PROFILE_INVALID_GKEY_INTV = @as(u32, 262171);
pub const WLAN_REASON_CODE_MSMSEC_TRANSITION_NETWORK = @as(u32, 262172);
pub const WLAN_REASON_CODE_MSMSEC_PROFILE_KEY_UNMAPPED_CHAR = @as(u32, 262173);
pub const WLAN_REASON_CODE_MSMSEC_CAPABILITY_PROFILE_AUTH = @as(u32, 262174);
pub const WLAN_REASON_CODE_MSMSEC_CAPABILITY_PROFILE_CIPHER = @as(u32, 262175);
pub const WLAN_REASON_CODE_MSMSEC_PROFILE_SAFE_MODE = @as(u32, 262176);
pub const WLAN_REASON_CODE_MSMSEC_CAPABILITY_PROFILE_SAFE_MODE_NIC = @as(u32, 262177);
pub const WLAN_REASON_CODE_MSMSEC_CAPABILITY_PROFILE_SAFE_MODE_NW = @as(u32, 262178);
pub const WLAN_REASON_CODE_MSMSEC_PROFILE_UNSUPPORTED_AUTH = @as(u32, 262179);
pub const WLAN_REASON_CODE_MSMSEC_PROFILE_UNSUPPORTED_CIPHER = @as(u32, 262180);
pub const WLAN_REASON_CODE_MSMSEC_CAPABILITY_MFP_NW_NIC = @as(u32, 262181);
pub const WLAN_REASON_CODE_MSMSEC_UI_REQUEST_FAILURE = @as(u32, 294913);
pub const WLAN_REASON_CODE_MSMSEC_AUTH_START_TIMEOUT = @as(u32, 294914);
pub const WLAN_REASON_CODE_MSMSEC_AUTH_SUCCESS_TIMEOUT = @as(u32, 294915);
pub const WLAN_REASON_CODE_MSMSEC_KEY_START_TIMEOUT = @as(u32, 294916);
pub const WLAN_REASON_CODE_MSMSEC_KEY_SUCCESS_TIMEOUT = @as(u32, 294917);
pub const WLAN_REASON_CODE_MSMSEC_M3_MISSING_KEY_DATA = @as(u32, 294918);
pub const WLAN_REASON_CODE_MSMSEC_M3_MISSING_IE = @as(u32, 294919);
pub const WLAN_REASON_CODE_MSMSEC_M3_MISSING_GRP_KEY = @as(u32, 294920);
pub const WLAN_REASON_CODE_MSMSEC_PR_IE_MATCHING = @as(u32, 294921);
pub const WLAN_REASON_CODE_MSMSEC_SEC_IE_MATCHING = @as(u32, 294922);
pub const WLAN_REASON_CODE_MSMSEC_NO_PAIRWISE_KEY = @as(u32, 294923);
pub const WLAN_REASON_CODE_MSMSEC_G1_MISSING_KEY_DATA = @as(u32, 294924);
pub const WLAN_REASON_CODE_MSMSEC_G1_MISSING_GRP_KEY = @as(u32, 294925);
pub const WLAN_REASON_CODE_MSMSEC_PEER_INDICATED_INSECURE = @as(u32, 294926);
pub const WLAN_REASON_CODE_MSMSEC_NO_AUTHENTICATOR = @as(u32, 294927);
pub const WLAN_REASON_CODE_MSMSEC_NIC_FAILURE = @as(u32, 294928);
pub const WLAN_REASON_CODE_MSMSEC_CANCELLED = @as(u32, 294929);
pub const WLAN_REASON_CODE_MSMSEC_KEY_FORMAT = @as(u32, 294930);
pub const WLAN_REASON_CODE_MSMSEC_DOWNGRADE_DETECTED = @as(u32, 294931);
pub const WLAN_REASON_CODE_MSMSEC_PSK_MISMATCH_SUSPECTED = @as(u32, 294932);
pub const WLAN_REASON_CODE_MSMSEC_FORCED_FAILURE = @as(u32, 294933);
pub const WLAN_REASON_CODE_MSMSEC_M3_TOO_MANY_RSNIE = @as(u32, 294934);
pub const WLAN_REASON_CODE_MSMSEC_M2_MISSING_KEY_DATA = @as(u32, 294935);
pub const WLAN_REASON_CODE_MSMSEC_M2_MISSING_IE = @as(u32, 294936);
pub const WLAN_REASON_CODE_MSMSEC_AUTH_WCN_COMPLETED = @as(u32, 294937);
pub const WLAN_REASON_CODE_MSMSEC_M3_MISSING_MGMT_GRP_KEY = @as(u32, 294938);
pub const WLAN_REASON_CODE_MSMSEC_G1_MISSING_MGMT_GRP_KEY = @as(u32, 294939);
pub const WLAN_REASON_CODE_MSMSEC_MAX = @as(u32, 327679);
pub const WLAN_AVAILABLE_NETWORK_CONNECTED = @as(u32, 1);
pub const WLAN_AVAILABLE_NETWORK_HAS_PROFILE = @as(u32, 2);
pub const WLAN_AVAILABLE_NETWORK_CONSOLE_USER_PROFILE = @as(u32, 4);
pub const WLAN_AVAILABLE_NETWORK_INTERWORKING_SUPPORTED = @as(u32, 8);
pub const WLAN_AVAILABLE_NETWORK_HOTSPOT2_ENABLED = @as(u32, 16);
pub const WLAN_AVAILABLE_NETWORK_ANQP_SUPPORTED = @as(u32, 32);
pub const WLAN_AVAILABLE_NETWORK_HOTSPOT2_DOMAIN = @as(u32, 64);
pub const WLAN_AVAILABLE_NETWORK_HOTSPOT2_ROAMING = @as(u32, 128);
pub const WLAN_AVAILABLE_NETWORK_AUTO_CONNECT_FAILED = @as(u32, 256);
pub const WLAN_AVAILABLE_NETWORK_INCLUDE_ALL_ADHOC_PROFILES = @as(u32, 1);
pub const WLAN_AVAILABLE_NETWORK_INCLUDE_ALL_MANUAL_HIDDEN_PROFILES = @as(u32, 2);
pub const WLAN_MAX_PHY_TYPE_NUMBER = @as(u32, 8);
pub const WLAN_MAX_PHY_INDEX = @as(u32, 64);
pub const WLAN_CONNECTION_HIDDEN_NETWORK = @as(u32, 1);
pub const WLAN_CONNECTION_ADHOC_JOIN_ONLY = @as(u32, 2);
pub const WLAN_CONNECTION_IGNORE_PRIVACY_BIT = @as(u32, 4);
pub const WLAN_CONNECTION_EAPOL_PASSTHROUGH = @as(u32, 8);
pub const WLAN_CONNECTION_PERSIST_DISCOVERY_PROFILE = @as(u32, 16);
pub const WLAN_CONNECTION_PERSIST_DISCOVERY_PROFILE_CONNECTION_MODE_AUTO = @as(u32, 32);
pub const WLAN_CONNECTION_PERSIST_DISCOVERY_PROFILE_OVERWRITE_EXISTING = @as(u32, 64);
pub const WLAN_NOTIFICATION_SOURCE_NONE = @as(u32, 0);
pub const WLAN_NOTIFICATION_SOURCE_ALL = @as(u32, 65535);
pub const WLAN_NOTIFICATION_SOURCE_ACM = @as(u32, 8);
pub const WLAN_NOTIFICATION_SOURCE_MSM = @as(u32, 16);
pub const WLAN_NOTIFICATION_SOURCE_SECURITY = @as(u32, 32);
pub const WLAN_NOTIFICATION_SOURCE_IHV = @as(u32, 64);
pub const WLAN_NOTIFICATION_SOURCE_HNWK = @as(u32, 128);
pub const WLAN_NOTIFICATION_SOURCE_ONEX = @as(u32, 4);
pub const WLAN_NOTIFICATION_SOURCE_DEVICE_SERVICE = @as(u32, 2048);
pub const WFD_API_VERSION_1_0 = @as(u32, 1);
pub const WFD_API_VERSION = @as(u32, 1);
pub const WLAN_UI_API_VERSION = @as(u32, 1);
pub const WLAN_UI_API_INITIAL_VERSION = @as(u32, 1);
pub const GUID_DEVINTERFACE_WIFIDIRECT_DEVICE = Guid.initString("439b20af-8955-405b-99f0-a62af0c68d43");
pub const GUID_AEPSERVICE_WIFIDIRECT_DEVICE = Guid.initString("cc29827c-9caf-4928-99a9-18f7c2381389");
pub const GUID_DEVINTERFACE_ASP_INFRA_DEVICE = Guid.initString("ff823995-7a72-4c80-8757-c67ee13d1a49");
pub const DEVPKEY_WiFiDirect_DeviceAddress = PROPERTYKEY{ .fmtid = Guid.initString("1506935d-e3e7-450f-8637-82233ebe5f6e"), .pid = 1 };
pub const DEVPKEY_WiFiDirect_InterfaceAddress = PROPERTYKEY{ .fmtid = Guid.initString("1506935d-e3e7-450f-8637-82233ebe5f6e"), .pid = 2 };
pub const DEVPKEY_WiFiDirect_InterfaceGuid = PROPERTYKEY{ .fmtid = Guid.initString("1506935d-e3e7-450f-8637-82233ebe5f6e"), .pid = 3 };
pub const DEVPKEY_WiFiDirect_GroupId = PROPERTYKEY{ .fmtid = Guid.initString("1506935d-e3e7-450f-8637-82233ebe5f6e"), .pid = 4 };
pub const DEVPKEY_WiFiDirect_IsConnected = PROPERTYKEY{ .fmtid = Guid.initString("1506935d-e3e7-450f-8637-82233ebe5f6e"), .pid = 5 };
pub const DEVPKEY_WiFiDirect_IsVisible = PROPERTYKEY{ .fmtid = Guid.initString("1506935d-e3e7-450f-8637-82233ebe5f6e"), .pid = 6 };
pub const DEVPKEY_WiFiDirect_IsLegacyDevice = PROPERTYKEY{ .fmtid = Guid.initString("1506935d-e3e7-450f-8637-82233ebe5f6e"), .pid = 7 };
pub const DEVPKEY_WiFiDirect_MiracastVersion = PROPERTYKEY{ .fmtid = Guid.initString("1506935d-e3e7-450f-8637-82233ebe5f6e"), .pid = 8 };
pub const DEVPKEY_WiFiDirect_IsMiracastLCPSupported = PROPERTYKEY{ .fmtid = Guid.initString("1506935d-e3e7-450f-8637-82233ebe5f6e"), .pid = 9 };
pub const DEVPKEY_WiFiDirect_Services = PROPERTYKEY{ .fmtid = Guid.initString("1506935d-e3e7-450f-8637-82233ebe5f6e"), .pid = 10 };
pub const DEVPKEY_WiFiDirect_SupportedChannelList = PROPERTYKEY{ .fmtid = Guid.initString("1506935d-e3e7-450f-8637-82233ebe5f6e"), .pid = 11 };
pub const DEVPKEY_WiFiDirect_InformationElements = PROPERTYKEY{ .fmtid = Guid.initString("1506935d-e3e7-450f-8637-82233ebe5f6e"), .pid = 12 };
pub const DEVPKEY_WiFiDirect_DeviceAddressCopy = PROPERTYKEY{ .fmtid = Guid.initString("1506935d-e3e7-450f-8637-82233ebe5f6e"), .pid = 13 };
pub const DEVPKEY_WiFiDirect_IsRecentlyAssociated = PROPERTYKEY{ .fmtid = Guid.initString("1506935d-e3e7-450f-8637-82233ebe5f6e"), .pid = 14 };
pub const DEVPKEY_WiFiDirect_Service_Aeps = PROPERTYKEY{ .fmtid = Guid.initString("1506935d-e3e7-450f-8637-82233ebe5f6e"), .pid = 15 };
pub const DEVPKEY_WiFiDirect_NoMiracastAutoProject = PROPERTYKEY{ .fmtid = Guid.initString("1506935d-e3e7-450f-8637-82233ebe5f6e"), .pid = 16 };
pub const DEVPKEY_InfraCast_Supported = PROPERTYKEY{ .fmtid = Guid.initString("1506935d-e3e7-450f-8637-82233ebe5f6e"), .pid = 17 };
pub const DEVPKEY_InfraCast_StreamSecuritySupported = PROPERTYKEY{ .fmtid = Guid.initString("1506935d-e3e7-450f-8637-82233ebe5f6e"), .pid = 18 };
pub const DEVPKEY_InfraCast_AccessPointBssid = PROPERTYKEY{ .fmtid = Guid.initString("1506935d-e3e7-450f-8637-82233ebe5f6e"), .pid = 19 };
pub const DEVPKEY_InfraCast_SinkHostName = PROPERTYKEY{ .fmtid = Guid.initString("1506935d-e3e7-450f-8637-82233ebe5f6e"), .pid = 20 };
pub const DEVPKEY_InfraCast_ChallengeAep = PROPERTYKEY{ .fmtid = Guid.initString("1506935d-e3e7-450f-8637-82233ebe5f6e"), .pid = 21 };
pub const DEVPKEY_WiFiDirect_IsDMGCapable = PROPERTYKEY{ .fmtid = Guid.initString("1506935d-e3e7-450f-8637-82233ebe5f6e"), .pid = 22 };
pub const DEVPKEY_InfraCast_DevnodeAep = PROPERTYKEY{ .fmtid = Guid.initString("1506935d-e3e7-450f-8637-82233ebe5f6e"), .pid = 23 };
pub const DEVPKEY_WiFiDirect_FoundWsbService = PROPERTYKEY{ .fmtid = Guid.initString("1506935d-e3e7-450f-8637-82233ebe5f6e"), .pid = 24 };
pub const DEVPKEY_InfraCast_HostName_ResolutionMode = PROPERTYKEY{ .fmtid = Guid.initString("1506935d-e3e7-450f-8637-82233ebe5f6e"), .pid = 25 };
pub const DEVPKEY_InfraCast_SinkIpAddress = PROPERTYKEY{ .fmtid = Guid.initString("1506935d-e3e7-450f-8637-82233ebe5f6e"), .pid = 26 };
pub const DEVPKEY_WiFiDirect_TransientAssociation = PROPERTYKEY{ .fmtid = Guid.initString("1506935d-e3e7-450f-8637-82233ebe5f6e"), .pid = 27 };
pub const DEVPKEY_WiFiDirect_LinkQuality = PROPERTYKEY{ .fmtid = Guid.initString("1506935d-e3e7-450f-8637-82233ebe5f6e"), .pid = 28 };
pub const DEVPKEY_InfraCast_PinSupported = PROPERTYKEY{ .fmtid = Guid.initString("1506935d-e3e7-450f-8637-82233ebe5f6e"), .pid = 29 };
pub const DEVPKEY_InfraCast_RtspTcpConnectionParametersSupported = PROPERTYKEY{ .fmtid = Guid.initString("1506935d-e3e7-450f-8637-82233ebe5f6e"), .pid = 30 };
pub const DEVPKEY_WiFiDirect_Miracast_SessionMgmtControlPort = PROPERTYKEY{ .fmtid = Guid.initString("1506935d-e3e7-450f-8637-82233ebe5f6e"), .pid = 31 };
pub const DEVPKEY_WiFiDirect_RtspTcpConnectionParametersSupported = PROPERTYKEY{ .fmtid = Guid.initString("1506935d-e3e7-450f-8637-82233ebe5f6e"), .pid = 32 };
pub const DEVPKEY_WiFiDirectServices_ServiceAddress = PROPERTYKEY{ .fmtid = Guid.initString("31b37743-7c5e-4005-93e6-e953f92b82e9"), .pid = 2 };
pub const DEVPKEY_WiFiDirectServices_ServiceName = PROPERTYKEY{ .fmtid = Guid.initString("31b37743-7c5e-4005-93e6-e953f92b82e9"), .pid = 3 };
pub const DEVPKEY_WiFiDirectServices_ServiceInformation = PROPERTYKEY{ .fmtid = Guid.initString("31b37743-7c5e-4005-93e6-e953f92b82e9"), .pid = 4 };
pub const DEVPKEY_WiFiDirectServices_AdvertisementId = PROPERTYKEY{ .fmtid = Guid.initString("31b37743-7c5e-4005-93e6-e953f92b82e9"), .pid = 5 };
pub const DEVPKEY_WiFiDirectServices_ServiceConfigMethods = PROPERTYKEY{ .fmtid = Guid.initString("31b37743-7c5e-4005-93e6-e953f92b82e9"), .pid = 6 };
pub const DEVPKEY_WiFiDirectServices_RequestServiceInformation = PROPERTYKEY{ .fmtid = Guid.initString("31b37743-7c5e-4005-93e6-e953f92b82e9"), .pid = 7 };
pub const DEVPKEY_WiFi_InterfaceGuid = PROPERTYKEY{ .fmtid = Guid.initString("ef1167eb-cbfc-4341-a568-a7c91a68982c"), .pid = 2 };

//--------------------------------------------------------------------------------
// Section: Types (330)
//--------------------------------------------------------------------------------
pub const WLAN_SET_EAPHOST_FLAGS = enum(u32) {
    S = 1,
};
pub const WLAN_SET_EAPHOST_DATA_ALL_USERS = WLAN_SET_EAPHOST_FLAGS.S;

pub const WLAN_CONNECTION_NOTIFICATION_FLAGS = enum(u32) {
    ADHOC_NETWORK_FORMED = 1,
    CONSOLE_USER_PROFILE = 4,
};
pub const WLAN_CONNECTION_NOTIFICATION_ADHOC_NETWORK_FORMED = WLAN_CONNECTION_NOTIFICATION_FLAGS.ADHOC_NETWORK_FORMED;
pub const WLAN_CONNECTION_NOTIFICATION_CONSOLE_USER_PROFILE = WLAN_CONNECTION_NOTIFICATION_FLAGS.CONSOLE_USER_PROFILE;

pub const DOT11_BSS_TYPE = enum(i32) {
    infrastructure = 1,
    independent = 2,
    any = 3,
};
pub const dot11_BSS_type_infrastructure = DOT11_BSS_TYPE.infrastructure;
pub const dot11_BSS_type_independent = DOT11_BSS_TYPE.independent;
pub const dot11_BSS_type_any = DOT11_BSS_TYPE.any;

pub const DOT11_SSID = extern struct {
    uSSIDLength: u32,
    ucSSID: [32]u8,
};

pub const DOT11_AUTH_ALGORITHM = enum(i32) {
    @"80211_OPEN" = 1,
    @"80211_SHARED_KEY" = 2,
    WPA = 3,
    WPA_PSK = 4,
    WPA_NONE = 5,
    RSNA = 6,
    RSNA_PSK = 7,
    WPA3 = 8,
    // WPA3_ENT_192 = 8, this enum value conflicts with WPA3
    WPA3_SAE = 9,
    OWE = 10,
    WPA3_ENT = 11,
    IHV_START = -2147483648,
    IHV_END = -1,
};
pub const DOT11_AUTH_ALGO_80211_OPEN = DOT11_AUTH_ALGORITHM.@"80211_OPEN";
pub const DOT11_AUTH_ALGO_80211_SHARED_KEY = DOT11_AUTH_ALGORITHM.@"80211_SHARED_KEY";
pub const DOT11_AUTH_ALGO_WPA = DOT11_AUTH_ALGORITHM.WPA;
pub const DOT11_AUTH_ALGO_WPA_PSK = DOT11_AUTH_ALGORITHM.WPA_PSK;
pub const DOT11_AUTH_ALGO_WPA_NONE = DOT11_AUTH_ALGORITHM.WPA_NONE;
pub const DOT11_AUTH_ALGO_RSNA = DOT11_AUTH_ALGORITHM.RSNA;
pub const DOT11_AUTH_ALGO_RSNA_PSK = DOT11_AUTH_ALGORITHM.RSNA_PSK;
pub const DOT11_AUTH_ALGO_WPA3 = DOT11_AUTH_ALGORITHM.WPA3;
pub const DOT11_AUTH_ALGO_WPA3_ENT_192 = DOT11_AUTH_ALGORITHM.WPA3;
pub const DOT11_AUTH_ALGO_WPA3_SAE = DOT11_AUTH_ALGORITHM.WPA3_SAE;
pub const DOT11_AUTH_ALGO_OWE = DOT11_AUTH_ALGORITHM.OWE;
pub const DOT11_AUTH_ALGO_WPA3_ENT = DOT11_AUTH_ALGORITHM.WPA3_ENT;
pub const DOT11_AUTH_ALGO_IHV_START = DOT11_AUTH_ALGORITHM.IHV_START;
pub const DOT11_AUTH_ALGO_IHV_END = DOT11_AUTH_ALGORITHM.IHV_END;

pub const DOT11_CIPHER_ALGORITHM = enum(i32) {
    NONE = 0,
    WEP40 = 1,
    TKIP = 2,
    CCMP = 4,
    WEP104 = 5,
    BIP = 6,
    GCMP = 8,
    GCMP_256 = 9,
    CCMP_256 = 10,
    BIP_GMAC_128 = 11,
    BIP_GMAC_256 = 12,
    BIP_CMAC_256 = 13,
    WPA_USE_GROUP = 256,
    // RSN_USE_GROUP = 256, this enum value conflicts with WPA_USE_GROUP
    WEP = 257,
    IHV_START = -2147483648,
    IHV_END = -1,
};
pub const DOT11_CIPHER_ALGO_NONE = DOT11_CIPHER_ALGORITHM.NONE;
pub const DOT11_CIPHER_ALGO_WEP40 = DOT11_CIPHER_ALGORITHM.WEP40;
pub const DOT11_CIPHER_ALGO_TKIP = DOT11_CIPHER_ALGORITHM.TKIP;
pub const DOT11_CIPHER_ALGO_CCMP = DOT11_CIPHER_ALGORITHM.CCMP;
pub const DOT11_CIPHER_ALGO_WEP104 = DOT11_CIPHER_ALGORITHM.WEP104;
pub const DOT11_CIPHER_ALGO_BIP = DOT11_CIPHER_ALGORITHM.BIP;
pub const DOT11_CIPHER_ALGO_GCMP = DOT11_CIPHER_ALGORITHM.GCMP;
pub const DOT11_CIPHER_ALGO_GCMP_256 = DOT11_CIPHER_ALGORITHM.GCMP_256;
pub const DOT11_CIPHER_ALGO_CCMP_256 = DOT11_CIPHER_ALGORITHM.CCMP_256;
pub const DOT11_CIPHER_ALGO_BIP_GMAC_128 = DOT11_CIPHER_ALGORITHM.BIP_GMAC_128;
pub const DOT11_CIPHER_ALGO_BIP_GMAC_256 = DOT11_CIPHER_ALGORITHM.BIP_GMAC_256;
pub const DOT11_CIPHER_ALGO_BIP_CMAC_256 = DOT11_CIPHER_ALGORITHM.BIP_CMAC_256;
pub const DOT11_CIPHER_ALGO_WPA_USE_GROUP = DOT11_CIPHER_ALGORITHM.WPA_USE_GROUP;
pub const DOT11_CIPHER_ALGO_RSN_USE_GROUP = DOT11_CIPHER_ALGORITHM.WPA_USE_GROUP;
pub const DOT11_CIPHER_ALGO_WEP = DOT11_CIPHER_ALGORITHM.WEP;
pub const DOT11_CIPHER_ALGO_IHV_START = DOT11_CIPHER_ALGORITHM.IHV_START;
pub const DOT11_CIPHER_ALGO_IHV_END = DOT11_CIPHER_ALGORITHM.IHV_END;

pub const DOT11_AUTH_CIPHER_PAIR = extern struct {
    AuthAlgoId: DOT11_AUTH_ALGORITHM,
    CipherAlgoId: DOT11_CIPHER_ALGORITHM,
};

pub const DOT11_OI = extern struct {
    OILength: u16,
    OI: [5]u8,
};

pub const DOT11_ACCESSNETWORKOPTIONS = extern struct {
    AccessNetworkType: u8,
    Internet: u8,
    ASRA: u8,
    ESR: u8,
    UESA: u8,
};

pub const DOT11_VENUEINFO = extern struct {
    VenueGroup: u8,
    VenueType: u8,
};

pub const DOT11_BSSID_LIST = extern struct {
    Header: NDIS_OBJECT_HEADER,
    uNumOfEntries: u32,
    uTotalNumOfEntries: u32,
    BSSIDs: [6]u8,
};

pub const DOT11_PHY_TYPE = enum(i32) {
    unknown = 0,
    // any = 0, this enum value conflicts with unknown
    fhss = 1,
    dsss = 2,
    irbaseband = 3,
    ofdm = 4,
    hrdsss = 5,
    erp = 6,
    ht = 7,
    vht = 8,
    dmg = 9,
    he = 10,
    IHV_start = -2147483648,
    IHV_end = -1,
};
pub const dot11_phy_type_unknown = DOT11_PHY_TYPE.unknown;
pub const dot11_phy_type_any = DOT11_PHY_TYPE.unknown;
pub const dot11_phy_type_fhss = DOT11_PHY_TYPE.fhss;
pub const dot11_phy_type_dsss = DOT11_PHY_TYPE.dsss;
pub const dot11_phy_type_irbaseband = DOT11_PHY_TYPE.irbaseband;
pub const dot11_phy_type_ofdm = DOT11_PHY_TYPE.ofdm;
pub const dot11_phy_type_hrdsss = DOT11_PHY_TYPE.hrdsss;
pub const dot11_phy_type_erp = DOT11_PHY_TYPE.erp;
pub const dot11_phy_type_ht = DOT11_PHY_TYPE.ht;
pub const dot11_phy_type_vht = DOT11_PHY_TYPE.vht;
pub const dot11_phy_type_dmg = DOT11_PHY_TYPE.dmg;
pub const dot11_phy_type_he = DOT11_PHY_TYPE.he;
pub const dot11_phy_type_IHV_start = DOT11_PHY_TYPE.IHV_start;
pub const dot11_phy_type_IHV_end = DOT11_PHY_TYPE.IHV_end;

pub const DOT11_RATE_SET = extern struct {
    uRateSetLength: u32,
    ucRateSet: [126]u8,
};

pub const DOT11_WFD_SESSION_INFO = extern struct {
    uSessionInfoLength: u16,
    ucSessionInfo: [144]u8,
};

pub const DOT11_OFFLOAD_CAPABILITY = extern struct {
    uReserved: u32,
    uFlags: u32,
    uSupportedWEPAlgorithms: u32,
    uNumOfReplayWindows: u32,
    uMaxWEPKeyMappingLength: u32,
    uSupportedAuthAlgorithms: u32,
    uMaxAuthKeyMappingLength: u32,
};

pub const DOT11_CURRENT_OFFLOAD_CAPABILITY = extern struct {
    uReserved: u32,
    uFlags: u32,
};

pub const DOT11_OFFLOAD_TYPE = enum(i32) {
    wep = 1,
    auth = 2,
};
pub const dot11_offload_type_wep = DOT11_OFFLOAD_TYPE.wep;
pub const dot11_offload_type_auth = DOT11_OFFLOAD_TYPE.auth;

pub const DOT11_IV48_COUNTER = extern struct {
    uIV32Counter: u32,
    usIV16Counter: u16,
};

pub const DOT11_WEP_OFFLOAD = extern struct {
    uReserved: u32,
    hOffloadContext: ?HANDLE,
    hOffload: ?HANDLE,
    dot11OffloadType: DOT11_OFFLOAD_TYPE,
    dwAlgorithm: u32,
    bRowIsOutbound: BOOLEAN,
    bUseDefault: BOOLEAN,
    uFlags: u32,
    ucMacAddress: [6]u8,
    uNumOfRWsOnPeer: u32,
    uNumOfRWsOnMe: u32,
    dot11IV48Counters: [16]DOT11_IV48_COUNTER,
    usDot11RWBitMaps: [16]u16,
    usKeyLength: u16,
    ucKey: [1]u8,
};

pub const DOT11_WEP_UPLOAD = extern struct {
    uReserved: u32,
    dot11OffloadType: DOT11_OFFLOAD_TYPE,
    hOffload: ?HANDLE,
    uNumOfRWsUsed: u32,
    dot11IV48Counters: [16]DOT11_IV48_COUNTER,
    usDot11RWBitMaps: [16]u16,
};

pub const DOT11_KEY_DIRECTION = enum(i32) {
    both = 1,
    inbound = 2,
    outbound = 3,
};
pub const dot11_key_direction_both = DOT11_KEY_DIRECTION.both;
pub const dot11_key_direction_inbound = DOT11_KEY_DIRECTION.inbound;
pub const dot11_key_direction_outbound = DOT11_KEY_DIRECTION.outbound;

pub const DOT11_DEFAULT_WEP_OFFLOAD = extern struct {
    uReserved: u32,
    hOffloadContext: ?HANDLE,
    hOffload: ?HANDLE,
    dwIndex: u32,
    dot11OffloadType: DOT11_OFFLOAD_TYPE,
    dwAlgorithm: u32,
    uFlags: u32,
    dot11KeyDirection: DOT11_KEY_DIRECTION,
    ucMacAddress: [6]u8,
    uNumOfRWsOnMe: u32,
    dot11IV48Counters: [16]DOT11_IV48_COUNTER,
    usDot11RWBitMaps: [16]u16,
    usKeyLength: u16,
    ucKey: [1]u8,
};

pub const DOT11_DEFAULT_WEP_UPLOAD = extern struct {
    uReserved: u32,
    dot11OffloadType: DOT11_OFFLOAD_TYPE,
    hOffload: ?HANDLE,
    uNumOfRWsUsed: u32,
    dot11IV48Counters: [16]DOT11_IV48_COUNTER,
    usDot11RWBitMaps: [16]u16,
};

pub const DOT11_OPERATION_MODE_CAPABILITY = extern struct {
    uReserved: u32,
    uMajorVersion: u32,
    uMinorVersion: u32,
    uNumOfTXBuffers: u32,
    uNumOfRXBuffers: u32,
    uOpModeCapability: u32,
};

pub const DOT11_CURRENT_OPERATION_MODE = extern struct {
    uReserved: u32,
    uCurrentOpMode: u32,
};

pub const DOT11_SCAN_TYPE = enum(i32) {
    active = 1,
    passive = 2,
    auto = 3,
    forced = -2147483648,
};
pub const dot11_scan_type_active = DOT11_SCAN_TYPE.active;
pub const dot11_scan_type_passive = DOT11_SCAN_TYPE.passive;
pub const dot11_scan_type_auto = DOT11_SCAN_TYPE.auto;
pub const dot11_scan_type_forced = DOT11_SCAN_TYPE.forced;

pub const DOT11_SCAN_REQUEST = extern struct {
    dot11BSSType: DOT11_BSS_TYPE,
    dot11BSSID: [6]u8,
    dot11SSID: DOT11_SSID,
    dot11ScanType: DOT11_SCAN_TYPE,
    bRestrictedScan: BOOLEAN,
    bUseRequestIE: BOOLEAN,
    uRequestIDsOffset: u32,
    uNumOfRequestIDs: u32,
    uPhyTypesOffset: u32,
    uNumOfPhyTypes: u32,
    uIEsOffset: u32,
    uIEsLength: u32,
    ucBuffer: [1]u8,
};

pub const CH_DESCRIPTION_TYPE = enum(i32) {
    logical = 1,
    center_frequency = 2,
    phy_specific = 3,
};
pub const ch_description_type_logical = CH_DESCRIPTION_TYPE.logical;
pub const ch_description_type_center_frequency = CH_DESCRIPTION_TYPE.center_frequency;
pub const ch_description_type_phy_specific = CH_DESCRIPTION_TYPE.phy_specific;

pub const DOT11_PHY_TYPE_INFO = extern struct {
    dot11PhyType: DOT11_PHY_TYPE,
    bUseParameters: BOOLEAN,
    uProbeDelay: u32,
    uMinChannelTime: u32,
    uMaxChannelTime: u32,
    ChDescriptionType: CH_DESCRIPTION_TYPE,
    uChannelListSize: u32,
    ucChannelListBuffer: [1]u8,
};

pub const DOT11_SCAN_REQUEST_V2 = extern struct {
    dot11BSSType: DOT11_BSS_TYPE,
    dot11BSSID: [6]u8,
    dot11ScanType: DOT11_SCAN_TYPE,
    bRestrictedScan: BOOLEAN,
    udot11SSIDsOffset: u32,
    uNumOfdot11SSIDs: u32,
    bUseRequestIE: BOOLEAN,
    uRequestIDsOffset: u32,
    uNumOfRequestIDs: u32,
    uPhyTypeInfosOffset: u32,
    uNumOfPhyTypeInfos: u32,
    uIEsOffset: u32,
    uIEsLength: u32,
    ucBuffer: [1]u8,
};

pub const DOT11_PHY_TYPE_LIST = extern struct {
    Header: NDIS_OBJECT_HEADER,
    uNumOfEntries: u32,
    uTotalNumOfEntries: u32,
    dot11PhyType: [1]DOT11_PHY_TYPE,
};

pub const DOT11_BSS_DESCRIPTION = extern struct {
    uReserved: u32,
    dot11BSSID: [6]u8,
    dot11BSSType: DOT11_BSS_TYPE,
    usBeaconPeriod: u16,
    ullTimestamp: u64,
    usCapabilityInformation: u16,
    uBufferLength: u32,
    ucBuffer: [1]u8,
};

pub const DOT11_JOIN_REQUEST = extern struct {
    uJoinFailureTimeout: u32,
    OperationalRateSet: DOT11_RATE_SET,
    uChCenterFrequency: u32,
    dot11BSSDescription: DOT11_BSS_DESCRIPTION,
};

pub const DOT11_START_REQUEST = extern struct {
    uStartFailureTimeout: u32,
    OperationalRateSet: DOT11_RATE_SET,
    uChCenterFrequency: u32,
    dot11BSSDescription: DOT11_BSS_DESCRIPTION,
};

pub const DOT11_UPDATE_IE_OP = enum(i32) {
    create_replace = 1,
    delete = 2,
};
pub const dot11_update_ie_op_create_replace = DOT11_UPDATE_IE_OP.create_replace;
pub const dot11_update_ie_op_delete = DOT11_UPDATE_IE_OP.delete;

pub const DOT11_UPDATE_IE = extern struct {
    dot11UpdateIEOp: DOT11_UPDATE_IE_OP,
    uBufferLength: u32,
    ucBuffer: [1]u8,
};

pub const DOT11_RESET_TYPE = enum(i32) {
    phy = 1,
    mac = 2,
    phy_and_mac = 3,
};
pub const dot11_reset_type_phy = DOT11_RESET_TYPE.phy;
pub const dot11_reset_type_mac = DOT11_RESET_TYPE.mac;
pub const dot11_reset_type_phy_and_mac = DOT11_RESET_TYPE.phy_and_mac;

pub const DOT11_RESET_REQUEST = extern struct {
    dot11ResetType: DOT11_RESET_TYPE,
    dot11MacAddress: [6]u8,
    bSetDefaultMIB: BOOLEAN,
};

pub const DOT11_OPTIONAL_CAPABILITY = extern struct {
    uReserved: u32,
    bDot11PCF: BOOLEAN,
    bDot11PCFMPDUTransferToPC: BOOLEAN,
    bStrictlyOrderedServiceClass: BOOLEAN,
};

pub const DOT11_CURRENT_OPTIONAL_CAPABILITY = extern struct {
    uReserved: u32,
    bDot11CFPollable: BOOLEAN,
    bDot11PCF: BOOLEAN,
    bDot11PCFMPDUTransferToPC: BOOLEAN,
    bStrictlyOrderedServiceClass: BOOLEAN,
};

pub const DOT11_POWER_MODE = enum(i32) {
    unknown = 0,
    active = 1,
    powersave = 2,
};
pub const dot11_power_mode_unknown = DOT11_POWER_MODE.unknown;
pub const dot11_power_mode_active = DOT11_POWER_MODE.active;
pub const dot11_power_mode_powersave = DOT11_POWER_MODE.powersave;

pub const DOT11_POWER_MGMT_MODE = extern struct {
    dot11PowerMode: DOT11_POWER_MODE,
    uPowerSaveLevel: u32,
    usListenInterval: u16,
    usAID: u16,
    bReceiveDTIMs: BOOLEAN,
};

pub const DOT11_COUNTERS_ENTRY = extern struct {
    uTransmittedFragmentCount: u32,
    uMulticastTransmittedFrameCount: u32,
    uFailedCount: u32,
    uRetryCount: u32,
    uMultipleRetryCount: u32,
    uFrameDuplicateCount: u32,
    uRTSSuccessCount: u32,
    uRTSFailureCount: u32,
    uACKFailureCount: u32,
    uReceivedFragmentCount: u32,
    uMulticastReceivedFrameCount: u32,
    uFCSErrorCount: u32,
    uTransmittedFrameCount: u32,
};

pub const DOT11_SUPPORTED_PHY_TYPES = extern struct {
    uNumOfEntries: u32,
    uTotalNumOfEntries: u32,
    dot11PHYType: [1]DOT11_PHY_TYPE,
};

pub const DOT11_TEMP_TYPE = enum(i32) {
    unknown = 0,
    @"1" = 1,
    @"2" = 2,
};
pub const dot11_temp_type_unknown = DOT11_TEMP_TYPE.unknown;
pub const dot11_temp_type_1 = DOT11_TEMP_TYPE.@"1";
pub const dot11_temp_type_2 = DOT11_TEMP_TYPE.@"2";

pub const DOT11_DIVERSITY_SUPPORT = enum(i32) {
    unknown = 0,
    fixedlist = 1,
    notsupported = 2,
    dynamic = 3,
};
pub const dot11_diversity_support_unknown = DOT11_DIVERSITY_SUPPORT.unknown;
pub const dot11_diversity_support_fixedlist = DOT11_DIVERSITY_SUPPORT.fixedlist;
pub const dot11_diversity_support_notsupported = DOT11_DIVERSITY_SUPPORT.notsupported;
pub const dot11_diversity_support_dynamic = DOT11_DIVERSITY_SUPPORT.dynamic;

pub const DOT11_SUPPORTED_POWER_LEVELS = extern struct {
    uNumOfSupportedPowerLevels: u32,
    uTxPowerLevelValues: [8]u32,
};

pub const DOT11_REG_DOMAIN_VALUE = extern struct {
    uRegDomainsSupportIndex: u32,
    uRegDomainsSupportValue: u32,
};

pub const DOT11_REG_DOMAINS_SUPPORT_VALUE = extern struct {
    uNumOfEntries: u32,
    uTotalNumOfEntries: u32,
    dot11RegDomainValue: [1]DOT11_REG_DOMAIN_VALUE,
};

pub const DOT11_SUPPORTED_ANTENNA = extern struct {
    uAntennaListIndex: u32,
    bSupportedAntenna: BOOLEAN,
};

pub const DOT11_SUPPORTED_ANTENNA_LIST = extern struct {
    uNumOfEntries: u32,
    uTotalNumOfEntries: u32,
    dot11SupportedAntenna: [1]DOT11_SUPPORTED_ANTENNA,
};

pub const DOT11_DIVERSITY_SELECTION_RX = extern struct {
    uAntennaListIndex: u32,
    bDiversitySelectionRX: BOOLEAN,
};

pub const DOT11_DIVERSITY_SELECTION_RX_LIST = extern struct {
    uNumOfEntries: u32,
    uTotalNumOfEntries: u32,
    dot11DiversitySelectionRx: [1]DOT11_DIVERSITY_SELECTION_RX,
};

pub const DOT11_SUPPORTED_DATA_RATES_VALUE = extern struct {
    ucSupportedTxDataRatesValue: [8]u8,
    ucSupportedRxDataRatesValue: [8]u8,
};

pub const DOT11_SUPPORTED_DATA_RATES_VALUE_V2 = extern struct {
    ucSupportedTxDataRatesValue: [255]u8,
    ucSupportedRxDataRatesValue: [255]u8,
};

pub const DOT11_MULTI_DOMAIN_CAPABILITY_ENTRY = extern struct {
    uMultiDomainCapabilityIndex: u32,
    uFirstChannelNumber: u32,
    uNumberOfChannels: u32,
    lMaximumTransmitPowerLevel: i32,
};

pub const DOT11_MD_CAPABILITY_ENTRY_LIST = extern struct {
    uNumOfEntries: u32,
    uTotalNumOfEntries: u32,
    dot11MDCapabilityEntry: [1]DOT11_MULTI_DOMAIN_CAPABILITY_ENTRY,
};

pub const DOT11_HOP_ALGO_ADOPTED = enum(i32) {
    current = 0,
    hop_index = 1,
    hcc = 2,
};
pub const dot11_hop_algo_current = DOT11_HOP_ALGO_ADOPTED.current;
pub const dot11_hop_algo_hop_index = DOT11_HOP_ALGO_ADOPTED.hop_index;
pub const dot11_hop_algo_hcc = DOT11_HOP_ALGO_ADOPTED.hcc;

pub const DOT11_HOPPING_PATTERN_ENTRY = extern struct {
    uHoppingPatternIndex: u32,
    uRandomTableFieldNumber: u32,
};

pub const DOT11_HOPPING_PATTERN_ENTRY_LIST = extern struct {
    uNumOfEntries: u32,
    uTotalNumOfEntries: u32,
    dot11HoppingPatternEntry: [1]DOT11_HOPPING_PATTERN_ENTRY,
};

pub const DOT11_WPA_TSC = extern struct {
    uReserved: u32,
    dot11OffloadType: DOT11_OFFLOAD_TYPE,
    hOffload: ?HANDLE,
    dot11IV48Counter: DOT11_IV48_COUNTER,
};

pub const DOT11_RSSI_RANGE = extern struct {
    dot11PhyType: DOT11_PHY_TYPE,
    uRSSIMin: u32,
    uRSSIMax: u32,
};

pub const DOT11_NIC_SPECIFIC_EXTENSION = extern struct {
    uBufferLength: u32,
    uTotalBufferLength: u32,
    ucBuffer: [1]u8,
};

pub const DOT11_AP_JOIN_REQUEST = extern struct {
    uJoinFailureTimeout: u32,
    OperationalRateSet: DOT11_RATE_SET,
    uChCenterFrequency: u32,
    dot11BSSDescription: DOT11_BSS_DESCRIPTION,
};

pub const DOT11_RECV_SENSITIVITY = extern struct {
    ucDataRate: u8,
    lRSSIMin: i32,
    lRSSIMax: i32,
};

pub const DOT11_RECV_SENSITIVITY_LIST = extern struct {
    Anonymous: extern union {
        dot11PhyType: DOT11_PHY_TYPE,
        uPhyId: u32,
    },
    uNumOfEntries: u32,
    uTotalNumOfEntries: u32,
    dot11RecvSensitivity: [1]DOT11_RECV_SENSITIVITY,
};

pub const DOT11_AC_PARAM = enum(i32) {
    BE = 0,
    BK = 1,
    VI = 2,
    VO = 3,
    max = 4,
};
pub const dot11_AC_param_BE = DOT11_AC_PARAM.BE;
pub const dot11_AC_param_BK = DOT11_AC_PARAM.BK;
pub const dot11_AC_param_VI = DOT11_AC_PARAM.VI;
pub const dot11_AC_param_VO = DOT11_AC_PARAM.VO;
pub const dot11_AC_param_max = DOT11_AC_PARAM.max;

pub const DOT11_WME_AC_PARAMETERS = extern struct {
    ucAccessCategoryIndex: u8,
    ucAIFSN: u8,
    ucECWmin: u8,
    ucECWmax: u8,
    usTXOPLimit: u16,
};

pub const _DOT11_WME_AC_PARAMTERS_LIST = extern struct {
    uNumOfEntries: u32,
    uTotalNumOfEntries: u32,
    dot11WMEACParameters: [1]DOT11_WME_AC_PARAMETERS,
};

pub const DOT11_WME_UPDATE_IE = extern struct {
    uParamElemMinBeaconIntervals: u32,
    uWMEInfoElemOffset: u32,
    uWMEInfoElemLength: u32,
    uWMEParamElemOffset: u32,
    uWMEParamElemLength: u32,
    ucBuffer: [1]u8,
};

pub const DOT11_QOS_TX_DURATION = extern struct {
    uNominalMSDUSize: u32,
    uMinPHYRate: u32,
    uDuration: u32,
};

pub const DOT11_QOS_TX_MEDIUM_TIME = extern struct {
    dot11PeerAddress: [6]u8,
    ucQoSPriority: u8,
    uMediumTimeAdmited: u32,
};

pub const DOT11_SUPPORTED_OFDM_FREQUENCY = extern struct {
    uCenterFrequency: u32,
};

pub const DOT11_SUPPORTED_OFDM_FREQUENCY_LIST = extern struct {
    uNumOfEntries: u32,
    uTotalNumOfEntries: u32,
    dot11SupportedOFDMFrequency: [1]DOT11_SUPPORTED_OFDM_FREQUENCY,
};

pub const DOT11_SUPPORTED_DSSS_CHANNEL = extern struct {
    uChannel: u32,
};

pub const DOT11_SUPPORTED_DSSS_CHANNEL_LIST = extern struct {
    uNumOfEntries: u32,
    uTotalNumOfEntries: u32,
    dot11SupportedDSSSChannel: [1]DOT11_SUPPORTED_DSSS_CHANNEL,
};

pub const DOT11_BYTE_ARRAY = extern struct {
    Header: NDIS_OBJECT_HEADER,
    uNumOfBytes: u32,
    uTotalNumOfBytes: u32,
    ucBuffer: [1]u8,
};

pub const DOT11_BSS_ENTRY_PHY_SPECIFIC_INFO = extern union {
    uChCenterFrequency: u32,
    FHSS: extern struct {
        uHopPattern: u32,
        uHopSet: u32,
        uDwellTime: u32,
    },
};

pub const DOT11_BSS_ENTRY = extern struct {
    uPhyId: u32,
    PhySpecificInfo: DOT11_BSS_ENTRY_PHY_SPECIFIC_INFO,
    dot11BSSID: [6]u8,
    dot11BSSType: DOT11_BSS_TYPE,
    lRSSI: i32,
    uLinkQuality: u32,
    bInRegDomain: BOOLEAN,
    usBeaconPeriod: u16,
    ullTimestamp: u64,
    ullHostTimestamp: u64,
    usCapabilityInformation: u16,
    uBufferLength: u32,
    ucBuffer: [1]u8,
};

pub const DOT11_SSID_LIST = extern struct {
    Header: NDIS_OBJECT_HEADER,
    uNumOfEntries: u32,
    uTotalNumOfEntries: u32,
    SSIDs: [1]DOT11_SSID,
};

pub const DOT11_MAC_ADDRESS_LIST = extern struct {
    Header: NDIS_OBJECT_HEADER,
    uNumOfEntries: u32,
    uTotalNumOfEntries: u32,
    MacAddrs: [6]u8,
};

pub const DOT11_PMKID_ENTRY = extern struct {
    BSSID: [6]u8,
    PMKID: [16]u8,
    uFlags: u32,
};

pub const DOT11_PMKID_LIST = extern struct {
    Header: NDIS_OBJECT_HEADER,
    uNumOfEntries: u32,
    uTotalNumOfEntries: u32,
    PMKIDs: [1]DOT11_PMKID_ENTRY,
};

pub const DOT11_PHY_FRAME_STATISTICS = extern struct {
    ullTransmittedFrameCount: u64,
    ullMulticastTransmittedFrameCount: u64,
    ullFailedCount: u64,
    ullRetryCount: u64,
    ullMultipleRetryCount: u64,
    ullMaxTXLifetimeExceededCount: u64,
    ullTransmittedFragmentCount: u64,
    ullRTSSuccessCount: u64,
    ullRTSFailureCount: u64,
    ullACKFailureCount: u64,
    ullReceivedFrameCount: u64,
    ullMulticastReceivedFrameCount: u64,
    ullPromiscuousReceivedFrameCount: u64,
    ullMaxRXLifetimeExceededCount: u64,
    ullFrameDuplicateCount: u64,
    ullReceivedFragmentCount: u64,
    ullPromiscuousReceivedFragmentCount: u64,
    ullFCSErrorCount: u64,
};

pub const DOT11_MAC_FRAME_STATISTICS = extern struct {
    ullTransmittedFrameCount: u64,
    ullReceivedFrameCount: u64,
    ullTransmittedFailureFrameCount: u64,
    ullReceivedFailureFrameCount: u64,
    ullWEPExcludedCount: u64,
    ullTKIPLocalMICFailures: u64,
    ullTKIPReplays: u64,
    ullTKIPICVErrorCount: u64,
    ullCCMPReplays: u64,
    ullCCMPDecryptErrors: u64,
    ullWEPUndecryptableCount: u64,
    ullWEPICVErrorCount: u64,
    ullDecryptSuccessCount: u64,
    ullDecryptFailureCount: u64,
};

pub const DOT11_STATISTICS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    ullFourWayHandshakeFailures: u64,
    ullTKIPCounterMeasuresInvoked: u64,
    ullReserved: u64,
    MacUcastCounters: DOT11_MAC_FRAME_STATISTICS,
    MacMcastCounters: DOT11_MAC_FRAME_STATISTICS,
    PhyCounters: [1]DOT11_PHY_FRAME_STATISTICS,
};

pub const DOT11_PRIVACY_EXEMPTION = extern struct {
    usEtherType: u16,
    usExemptionActionType: u16,
    usExemptionPacketType: u16,
};

pub const DOT11_PRIVACY_EXEMPTION_LIST = extern struct {
    Header: NDIS_OBJECT_HEADER,
    uNumOfEntries: u32,
    uTotalNumOfEntries: u32,
    PrivacyExemptionEntries: [1]DOT11_PRIVACY_EXEMPTION,
};

pub const DOT11_AUTH_ALGORITHM_LIST = extern struct {
    Header: NDIS_OBJECT_HEADER,
    uNumOfEntries: u32,
    uTotalNumOfEntries: u32,
    AlgorithmIds: [1]DOT11_AUTH_ALGORITHM,
};

pub const DOT11_AUTH_CIPHER_PAIR_LIST = extern struct {
    Header: NDIS_OBJECT_HEADER,
    uNumOfEntries: u32,
    uTotalNumOfEntries: u32,
    AuthCipherPairs: [1]DOT11_AUTH_CIPHER_PAIR,
};

pub const DOT11_CIPHER_ALGORITHM_LIST = extern struct {
    Header: NDIS_OBJECT_HEADER,
    uNumOfEntries: u32,
    uTotalNumOfEntries: u32,
    AlgorithmIds: [1]DOT11_CIPHER_ALGORITHM,
};

pub const DOT11_CIPHER_DEFAULT_KEY_VALUE = extern struct {
    Header: NDIS_OBJECT_HEADER,
    uKeyIndex: u32,
    AlgorithmId: DOT11_CIPHER_ALGORITHM,
    MacAddr: [6]u8,
    bDelete: BOOLEAN,
    bStatic: BOOLEAN,
    usKeyLength: u16,
    ucKey: [1]u8,
};

pub const DOT11_KEY_ALGO_TKIP_MIC = extern struct {
    ucIV48Counter: [6]u8,
    ulTKIPKeyLength: u32,
    ulMICKeyLength: u32,
    ucTKIPMICKeys: [1]u8,
};

pub const DOT11_KEY_ALGO_CCMP = extern struct {
    ucIV48Counter: [6]u8,
    ulCCMPKeyLength: u32,
    ucCCMPKey: [1]u8,
};

pub const DOT11_KEY_ALGO_GCMP = extern struct {
    ucIV48Counter: [6]u8,
    ulGCMPKeyLength: u32,
    ucGCMPKey: [1]u8,
};

pub const DOT11_KEY_ALGO_GCMP_256 = extern struct {
    ucIV48Counter: [6]u8,
    ulGCMP256KeyLength: u32,
    ucGCMP256Key: [1]u8,
};

pub const DOT11_KEY_ALGO_BIP = extern struct {
    ucIPN: [6]u8,
    ulBIPKeyLength: u32,
    ucBIPKey: [1]u8,
};

pub const DOT11_KEY_ALGO_BIP_GMAC_256 = extern struct {
    ucIPN: [6]u8,
    ulBIPGmac256KeyLength: u32,
    ucBIPGmac256Key: [1]u8,
};

pub const DOT11_DIRECTION = enum(i32) {
    INBOUND = 1,
    OUTBOUND = 2,
    BOTH = 3,
};
pub const DOT11_DIR_INBOUND = DOT11_DIRECTION.INBOUND;
pub const DOT11_DIR_OUTBOUND = DOT11_DIRECTION.OUTBOUND;
pub const DOT11_DIR_BOTH = DOT11_DIRECTION.BOTH;

pub const DOT11_CIPHER_KEY_MAPPING_KEY_VALUE = extern struct {
    PeerMacAddr: [6]u8,
    AlgorithmId: DOT11_CIPHER_ALGORITHM,
    Direction: DOT11_DIRECTION,
    bDelete: BOOLEAN,
    bStatic: BOOLEAN,
    usKeyLength: u16,
    ucKey: [1]u8,
};

pub const DOT11_ASSOCIATION_STATE = enum(i32) {
    zero = 0,
    unauth_unassoc = 1,
    auth_unassoc = 2,
    auth_assoc = 3,
};
pub const dot11_assoc_state_zero = DOT11_ASSOCIATION_STATE.zero;
pub const dot11_assoc_state_unauth_unassoc = DOT11_ASSOCIATION_STATE.unauth_unassoc;
pub const dot11_assoc_state_auth_unassoc = DOT11_ASSOCIATION_STATE.auth_unassoc;
pub const dot11_assoc_state_auth_assoc = DOT11_ASSOCIATION_STATE.auth_assoc;

pub const DOT11_ASSOCIATION_INFO_EX = extern struct {
    PeerMacAddress: [6]u8,
    BSSID: [6]u8,
    usCapabilityInformation: u16,
    usListenInterval: u16,
    ucPeerSupportedRates: [255]u8,
    usAssociationID: u16,
    dot11AssociationState: DOT11_ASSOCIATION_STATE,
    dot11PowerMode: DOT11_POWER_MODE,
    liAssociationUpTime: LARGE_INTEGER,
    ullNumOfTxPacketSuccesses: u64,
    ullNumOfTxPacketFailures: u64,
    ullNumOfRxPacketSuccesses: u64,
    ullNumOfRxPacketFailures: u64,
};

pub const DOT11_ASSOCIATION_INFO_LIST = extern struct {
    Header: NDIS_OBJECT_HEADER,
    uNumOfEntries: u32,
    uTotalNumOfEntries: u32,
    dot11AssocInfo: [1]DOT11_ASSOCIATION_INFO_EX,
};

pub const DOT11_PHY_ID_LIST = extern struct {
    Header: NDIS_OBJECT_HEADER,
    uNumOfEntries: u32,
    uTotalNumOfEntries: u32,
    dot11PhyId: [1]u32,
};

pub const DOT11_EXTSTA_CAPABILITY = extern struct {
    Header: NDIS_OBJECT_HEADER,
    uScanSSIDListSize: u32,
    uDesiredBSSIDListSize: u32,
    uDesiredSSIDListSize: u32,
    uExcludedMacAddressListSize: u32,
    uPrivacyExemptionListSize: u32,
    uKeyMappingTableSize: u32,
    uDefaultKeyTableSize: u32,
    uWEPKeyValueMaxLength: u32,
    uPMKIDCacheSize: u32,
    uMaxNumPerSTADefaultKeyTables: u32,
};

pub const DOT11_DATA_RATE_MAPPING_ENTRY = extern struct {
    ucDataRateIndex: u8,
    ucDataRateFlag: u8,
    usDataRateValue: u16,
};

pub const DOT11_DATA_RATE_MAPPING_TABLE = extern struct {
    Header: NDIS_OBJECT_HEADER,
    uDataRateMappingLength: u32,
    DataRateMappingEntries: [126]DOT11_DATA_RATE_MAPPING_ENTRY,
};

pub const DOT11_COUNTRY_OR_REGION_STRING_LIST = extern struct {
    Header: NDIS_OBJECT_HEADER,
    uNumOfEntries: u32,
    uTotalNumOfEntries: u32,
    CountryOrRegionStrings: [3]u8,
};

pub const DOT11_PORT_STATE_NOTIFICATION = extern struct {
    Header: NDIS_OBJECT_HEADER,
    PeerMac: [6]u8,
    bOpen: BOOLEAN,
};

pub const DOT11_IBSS_PARAMS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    bJoinOnly: BOOLEAN,
    uIEsOffset: u32,
    uIEsLength: u32,
};

pub const DOT11_QOS_PARAMS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    ucEnabledQoSProtocolFlags: u8,
};

pub const DOT11_ASSOCIATION_PARAMS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    BSSID: [6]u8,
    uAssocRequestIEsOffset: u32,
    uAssocRequestIEsLength: u32,
};

pub const DOT11_FRAGMENT_DESCRIPTOR = extern struct {
    uOffset: u32,
    uLength: u32,
};

pub const DOT11_PER_MSDU_COUNTERS = extern struct {
    uTransmittedFragmentCount: u32,
    uRetryCount: u32,
    uRTSSuccessCount: u32,
    uRTSFailureCount: u32,
    uACKFailureCount: u32,
};

pub const DOT11_HRDSSS_PHY_ATTRIBUTES = extern struct {
    bShortPreambleOptionImplemented: BOOLEAN,
    bPBCCOptionImplemented: BOOLEAN,
    bChannelAgilityPresent: BOOLEAN,
    uHRCCAModeSupported: u32,
};

pub const DOT11_OFDM_PHY_ATTRIBUTES = extern struct {
    uFrequencyBandsSupported: u32,
};

pub const DOT11_ERP_PHY_ATTRIBUTES = extern struct {
    HRDSSSAttributes: DOT11_HRDSSS_PHY_ATTRIBUTES,
    bERPPBCCOptionImplemented: BOOLEAN,
    bDSSSOFDMOptionImplemented: BOOLEAN,
    bShortSlotTimeOptionImplemented: BOOLEAN,
};

pub const DOT11_PHY_ATTRIBUTES = extern struct {
    Header: NDIS_OBJECT_HEADER,
    PhyType: DOT11_PHY_TYPE,
    bHardwarePhyState: BOOLEAN,
    bSoftwarePhyState: BOOLEAN,
    bCFPollable: BOOLEAN,
    uMPDUMaxLength: u32,
    TempType: DOT11_TEMP_TYPE,
    DiversitySupport: DOT11_DIVERSITY_SUPPORT,
    PhySpecificAttributes: extern union {
        HRDSSSAttributes: DOT11_HRDSSS_PHY_ATTRIBUTES,
        OFDMAttributes: DOT11_OFDM_PHY_ATTRIBUTES,
        ERPAttributes: DOT11_ERP_PHY_ATTRIBUTES,
    },
    uNumberSupportedPowerLevels: u32,
    TxPowerLevels: [8]u32,
    uNumDataRateMappingEntries: u32,
    DataRateMappingEntries: [126]DOT11_DATA_RATE_MAPPING_ENTRY,
    SupportedDataRatesValue: DOT11_SUPPORTED_DATA_RATES_VALUE_V2,
};

pub const DOT11_EXTSTA_ATTRIBUTES = extern struct {
    Header: NDIS_OBJECT_HEADER,
    uScanSSIDListSize: u32,
    uDesiredBSSIDListSize: u32,
    uDesiredSSIDListSize: u32,
    uExcludedMacAddressListSize: u32,
    uPrivacyExemptionListSize: u32,
    uKeyMappingTableSize: u32,
    uDefaultKeyTableSize: u32,
    uWEPKeyValueMaxLength: u32,
    uPMKIDCacheSize: u32,
    uMaxNumPerSTADefaultKeyTables: u32,
    bStrictlyOrderedServiceClassImplemented: BOOLEAN,
    ucSupportedQoSProtocolFlags: u8,
    bSafeModeImplemented: BOOLEAN,
    uNumSupportedCountryOrRegionStrings: u32,
    pSupportedCountryOrRegionStrings: ?*u8,
    uInfraNumSupportedUcastAlgoPairs: u32,
    pInfraSupportedUcastAlgoPairs: ?*DOT11_AUTH_CIPHER_PAIR,
    uInfraNumSupportedMcastAlgoPairs: u32,
    pInfraSupportedMcastAlgoPairs: ?*DOT11_AUTH_CIPHER_PAIR,
    uAdhocNumSupportedUcastAlgoPairs: u32,
    pAdhocSupportedUcastAlgoPairs: ?*DOT11_AUTH_CIPHER_PAIR,
    uAdhocNumSupportedMcastAlgoPairs: u32,
    pAdhocSupportedMcastAlgoPairs: ?*DOT11_AUTH_CIPHER_PAIR,
    bAutoPowerSaveMode: BOOLEAN,
    uMaxNetworkOffloadListSize: u32,
    bMFPCapable: BOOLEAN,
    uInfraNumSupportedMcastMgmtAlgoPairs: u32,
    pInfraSupportedMcastMgmtAlgoPairs: ?*DOT11_AUTH_CIPHER_PAIR,
    bNeighborReportSupported: BOOLEAN,
    bAPChannelReportSupported: BOOLEAN,
    bActionFramesSupported: BOOLEAN,
    bANQPQueryOffloadSupported: BOOLEAN,
    bHESSIDConnectionSupported: BOOLEAN,
};

pub const DOT11_RECV_EXTENSION_INFO = extern struct {
    uVersion: u32,
    pvReserved: ?*anyopaque,
    dot11PhyType: DOT11_PHY_TYPE,
    uChCenterFrequency: u32,
    lRSSI: i32,
    lRSSIMin: i32,
    lRSSIMax: i32,
    uRSSI: u32,
    ucPriority: u8,
    ucDataRate: u8,
    ucPeerMacAddress: [6]u8,
    dwExtendedStatus: u32,
    hWEPOffloadContext: ?HANDLE,
    hAuthOffloadContext: ?HANDLE,
    usWEPAppliedMask: u16,
    usWPAMSDUPriority: u16,
    dot11LowestIV48Counter: DOT11_IV48_COUNTER,
    usDot11LeftRWBitMap: u16,
    dot11HighestIV48Counter: DOT11_IV48_COUNTER,
    usDot11RightRWBitMap: u16,
    usNumberOfMPDUsReceived: u16,
    usNumberOfFragments: u16,
    pNdisPackets: [1]?*anyopaque,
};

pub const DOT11_RECV_EXTENSION_INFO_V2 = extern struct {
    uVersion: u32,
    pvReserved: ?*anyopaque,
    dot11PhyType: DOT11_PHY_TYPE,
    uChCenterFrequency: u32,
    lRSSI: i32,
    uRSSI: u32,
    ucPriority: u8,
    ucDataRate: u8,
    ucPeerMacAddress: [6]u8,
    dwExtendedStatus: u32,
    hWEPOffloadContext: ?HANDLE,
    hAuthOffloadContext: ?HANDLE,
    usWEPAppliedMask: u16,
    usWPAMSDUPriority: u16,
    dot11LowestIV48Counter: DOT11_IV48_COUNTER,
    usDot11LeftRWBitMap: u16,
    dot11HighestIV48Counter: DOT11_IV48_COUNTER,
    usDot11RightRWBitMap: u16,
    usNumberOfMPDUsReceived: u16,
    usNumberOfFragments: u16,
    pNdisPackets: [1]?*anyopaque,
};

pub const DOT11_STATUS_INDICATION = extern struct {
    uStatusType: u32,
    ndisStatus: i32,
};

pub const DOT11_MPDU_MAX_LENGTH_INDICATION = extern struct {
    Header: NDIS_OBJECT_HEADER,
    uPhyId: u32,
    uMPDUMaxLength: u32,
};

pub const DOT11_ASSOCIATION_START_PARAMETERS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    MacAddr: [6]u8,
    SSID: DOT11_SSID,
    uIHVDataOffset: u32,
    uIHVDataSize: u32,
};

pub const DOT11_ENCAP_ENTRY = extern struct {
    usEtherType: u16,
    usEncapType: u16,
};

pub const DOT11_DS_INFO = enum(i32) {
    CHANGED = 0,
    UNCHANGED = 1,
    UNKNOWN = 2,
};
pub const DOT11_DS_CHANGED = DOT11_DS_INFO.CHANGED;
pub const DOT11_DS_UNCHANGED = DOT11_DS_INFO.UNCHANGED;
pub const DOT11_DS_UNKNOWN = DOT11_DS_INFO.UNKNOWN;

pub const DOT11_ASSOCIATION_COMPLETION_PARAMETERS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    MacAddr: [6]u8,
    uStatus: u32,
    bReAssocReq: BOOLEAN,
    bReAssocResp: BOOLEAN,
    uAssocReqOffset: u32,
    uAssocReqSize: u32,
    uAssocRespOffset: u32,
    uAssocRespSize: u32,
    uBeaconOffset: u32,
    uBeaconSize: u32,
    uIHVDataOffset: u32,
    uIHVDataSize: u32,
    AuthAlgo: DOT11_AUTH_ALGORITHM,
    UnicastCipher: DOT11_CIPHER_ALGORITHM,
    MulticastCipher: DOT11_CIPHER_ALGORITHM,
    uActivePhyListOffset: u32,
    uActivePhyListSize: u32,
    bFourAddressSupported: BOOLEAN,
    bPortAuthorized: BOOLEAN,
    ucActiveQoSProtocol: u8,
    DSInfo: DOT11_DS_INFO,
    uEncapTableOffset: u32,
    uEncapTableSize: u32,
    MulticastMgmtCipher: DOT11_CIPHER_ALGORITHM,
    uAssocComebackTime: u32,
};

pub const DOT11_CONNECTION_START_PARAMETERS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    BSSType: DOT11_BSS_TYPE,
    AdhocBSSID: [6]u8,
    AdhocSSID: DOT11_SSID,
};

pub const DOT11_CONNECTION_COMPLETION_PARAMETERS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    uStatus: u32,
};

pub const DOT11_ROAMING_START_PARAMETERS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    AdhocBSSID: [6]u8,
    AdhocSSID: DOT11_SSID,
    uRoamingReason: u32,
};

pub const DOT11_ROAMING_COMPLETION_PARAMETERS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    uStatus: u32,
};

pub const DOT11_DISASSOCIATION_PARAMETERS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    MacAddr: [6]u8,
    uReason: u32,
    uIHVDataOffset: u32,
    uIHVDataSize: u32,
};

pub const DOT11_TKIPMIC_FAILURE_PARAMETERS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    bDefaultKeyFailure: BOOLEAN,
    uKeyIndex: u32,
    PeerMac: [6]u8,
};

pub const DOT11_PMKID_CANDIDATE_LIST_PARAMETERS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    uCandidateListSize: u32,
    uCandidateListOffset: u32,
};

pub const DOT11_BSSID_CANDIDATE = extern struct {
    BSSID: [6]u8,
    uFlags: u32,
};

pub const DOT11_PHY_STATE_PARAMETERS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    uPhyId: u32,
    bHardwarePhyState: BOOLEAN,
    bSoftwarePhyState: BOOLEAN,
};

pub const DOT11_LINK_QUALITY_ENTRY = extern struct {
    PeerMacAddr: [6]u8,
    ucLinkQuality: u8,
};

pub const DOT11_LINK_QUALITY_PARAMETERS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    uLinkQualityListSize: u32,
    uLinkQualityListOffset: u32,
};

pub const DOT11_EXTSTA_SEND_CONTEXT = extern struct {
    Header: NDIS_OBJECT_HEADER,
    usExemptionActionType: u16,
    uPhyId: u32,
    uDelayedSleepValue: u32,
    pvMediaSpecificInfo: ?*anyopaque,
    uSendFlags: u32,
};

pub const DOT11_EXTSTA_RECV_CONTEXT = extern struct {
    Header: NDIS_OBJECT_HEADER,
    uReceiveFlags: u32,
    uPhyId: u32,
    uChCenterFrequency: u32,
    usNumberOfMPDUsReceived: u16,
    lRSSI: i32,
    ucDataRate: u8,
    uSizeMediaSpecificInfo: u32,
    pvMediaSpecificInfo: ?*anyopaque,
    ullTimestamp: u64,
};

pub const DOT11_EXTAP_ATTRIBUTES = extern struct {
    Header: NDIS_OBJECT_HEADER,
    uScanSSIDListSize: u32,
    uDesiredSSIDListSize: u32,
    uPrivacyExemptionListSize: u32,
    uAssociationTableSize: u32,
    uDefaultKeyTableSize: u32,
    uWEPKeyValueMaxLength: u32,
    bStrictlyOrderedServiceClassImplemented: BOOLEAN,
    uNumSupportedCountryOrRegionStrings: u32,
    pSupportedCountryOrRegionStrings: ?*u8,
    uInfraNumSupportedUcastAlgoPairs: u32,
    pInfraSupportedUcastAlgoPairs: ?*DOT11_AUTH_CIPHER_PAIR,
    uInfraNumSupportedMcastAlgoPairs: u32,
    pInfraSupportedMcastAlgoPairs: ?*DOT11_AUTH_CIPHER_PAIR,
};

pub const DOT11_INCOMING_ASSOC_STARTED_PARAMETERS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    PeerMacAddr: [6]u8,
};

pub const DOT11_INCOMING_ASSOC_REQUEST_RECEIVED_PARAMETERS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    PeerMacAddr: [6]u8,
    bReAssocReq: BOOLEAN,
    uAssocReqOffset: u32,
    uAssocReqSize: u32,
};

pub const DOT11_INCOMING_ASSOC_COMPLETION_PARAMETERS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    PeerMacAddr: [6]u8,
    uStatus: u32,
    ucErrorSource: u8,
    bReAssocReq: BOOLEAN,
    bReAssocResp: BOOLEAN,
    uAssocReqOffset: u32,
    uAssocReqSize: u32,
    uAssocRespOffset: u32,
    uAssocRespSize: u32,
    AuthAlgo: DOT11_AUTH_ALGORITHM,
    UnicastCipher: DOT11_CIPHER_ALGORITHM,
    MulticastCipher: DOT11_CIPHER_ALGORITHM,
    uActivePhyListOffset: u32,
    uActivePhyListSize: u32,
    uBeaconOffset: u32,
    uBeaconSize: u32,
};

pub const DOT11_STOP_AP_PARAMETERS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    ulReason: u32,
};

pub const DOT11_PHY_FREQUENCY_ADOPTED_PARAMETERS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    ulPhyId: u32,
    Anonymous: extern union {
        ulChannel: u32,
        ulFrequency: u32,
    },
};

pub const DOT11_CAN_SUSTAIN_AP_PARAMETERS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    ulReason: u32,
};

pub const DOT11_AVAILABLE_CHANNEL_LIST = extern struct {
    Header: NDIS_OBJECT_HEADER,
    uNumOfEntries: u32,
    uTotalNumOfEntries: u32,
    uChannelNumber: [1]u32,
};

pub const DOT11_AVAILABLE_FREQUENCY_LIST = extern struct {
    Header: NDIS_OBJECT_HEADER,
    uNumOfEntries: u32,
    uTotalNumOfEntries: u32,
    uFrequencyValue: [1]u32,
};

pub const DOT11_DISASSOCIATE_PEER_REQUEST = extern struct {
    Header: NDIS_OBJECT_HEADER,
    PeerMacAddr: [6]u8,
    usReason: u16,
};

pub const DOT11_INCOMING_ASSOC_DECISION = extern struct {
    Header: NDIS_OBJECT_HEADER,
    PeerMacAddr: [6]u8,
    bAccept: BOOLEAN,
    usReasonCode: u16,
    uAssocResponseIEsOffset: u32,
    uAssocResponseIEsLength: u32,
};

pub const DOT11_INCOMING_ASSOC_DECISION_V2 = extern struct {
    Header: NDIS_OBJECT_HEADER,
    PeerMacAddr: [6]u8,
    bAccept: BOOLEAN,
    usReasonCode: u16,
    uAssocResponseIEsOffset: u32,
    uAssocResponseIEsLength: u32,
    WFDStatus: u8,
};

pub const DOT11_ADDITIONAL_IE = extern struct {
    Header: NDIS_OBJECT_HEADER,
    uBeaconIEsOffset: u32,
    uBeaconIEsLength: u32,
    uResponseIEsOffset: u32,
    uResponseIEsLength: u32,
};

pub const DOT11_PEER_STATISTICS = extern struct {
    ullDecryptSuccessCount: u64,
    ullDecryptFailureCount: u64,
    ullTxPacketSuccessCount: u64,
    ullTxPacketFailureCount: u64,
    ullRxPacketSuccessCount: u64,
    ullRxPacketFailureCount: u64,
};

pub const DOT11_PEER_INFO = extern struct {
    MacAddress: [6]u8,
    usCapabilityInformation: u16,
    AuthAlgo: DOT11_AUTH_ALGORITHM,
    UnicastCipherAlgo: DOT11_CIPHER_ALGORITHM,
    MulticastCipherAlgo: DOT11_CIPHER_ALGORITHM,
    bWpsEnabled: BOOLEAN,
    usListenInterval: u16,
    ucSupportedRates: [255]u8,
    usAssociationID: u16,
    AssociationState: DOT11_ASSOCIATION_STATE,
    PowerMode: DOT11_POWER_MODE,
    liAssociationUpTime: LARGE_INTEGER,
    Statistics: DOT11_PEER_STATISTICS,
};

pub const DOT11_PEER_INFO_LIST = extern struct {
    Header: NDIS_OBJECT_HEADER,
    uNumOfEntries: u32,
    uTotalNumOfEntries: u32,
    PeerInfo: [1]DOT11_PEER_INFO,
};

pub const DOT11_VWIFI_COMBINATION = extern struct {
    Header: NDIS_OBJECT_HEADER,
    uNumInfrastructure: u32,
    uNumAdhoc: u32,
    uNumSoftAP: u32,
};

pub const DOT11_VWIFI_COMBINATION_V2 = extern struct {
    Header: NDIS_OBJECT_HEADER,
    uNumInfrastructure: u32,
    uNumAdhoc: u32,
    uNumSoftAP: u32,
    uNumVirtualStation: u32,
};

pub const DOT11_VWIFI_COMBINATION_V3 = extern struct {
    Header: NDIS_OBJECT_HEADER,
    uNumInfrastructure: u32,
    uNumAdhoc: u32,
    uNumSoftAP: u32,
    uNumVirtualStation: u32,
    uNumWFDGroup: u32,
};

pub const DOT11_VWIFI_ATTRIBUTES = extern struct {
    Header: NDIS_OBJECT_HEADER,
    uTotalNumOfEntries: u32,
    Combinations: [1]DOT11_VWIFI_COMBINATION,
};

pub const DOT11_MAC_PARAMETERS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    uOpmodeMask: u32,
};

pub const DOT11_MAC_INFO = extern struct {
    uReserved: u32,
    uNdisPortNumber: u32,
    MacAddr: [6]u8,
};

pub const DOT11_WFD_ATTRIBUTES = extern struct {
    Header: NDIS_OBJECT_HEADER,
    uNumConcurrentGORole: u32,
    uNumConcurrentClientRole: u32,
    WPSVersionsSupported: u32,
    bServiceDiscoverySupported: BOOLEAN,
    bClientDiscoverabilitySupported: BOOLEAN,
    bInfrastructureManagementSupported: BOOLEAN,
    uMaxSecondaryDeviceTypeListSize: u32,
    DeviceAddress: [6]u8,
    uInterfaceAddressListCount: u32,
    pInterfaceAddressList: ?*u8,
    uNumSupportedCountryOrRegionStrings: u32,
    pSupportedCountryOrRegionStrings: ?*u8,
    uDiscoveryFilterListSize: u32,
    uGORoleClientTableSize: u32,
};

pub const DOT11_WFD_DEVICE_TYPE = extern struct {
    CategoryID: u16,
    SubCategoryID: u16,
    OUI: [4]u8,
};

pub const DOT11_WPS_DEVICE_NAME = extern struct {
    uDeviceNameLength: u32,
    ucDeviceName: [32]u8,
};

pub const DOT11_WFD_CONFIGURATION_TIMEOUT = extern struct {
    GOTimeout: u8,
    ClientTimeout: u8,
};

pub const DOT11_WFD_GROUP_ID = extern struct {
    DeviceAddress: [6]u8,
    SSID: DOT11_SSID,
};

pub const DOT11_WFD_GO_INTENT = extern struct {
    _bitfield: u8,
};

pub const DOT11_WFD_CHANNEL = extern struct {
    CountryRegionString: [3]u8,
    OperatingClass: u8,
    ChannelNumber: u8,
};

pub const DOT11_WPS_CONFIG_METHOD = enum(i32) {
    NULL = 0,
    DISPLAY = 8,
    NFC_TAG = 32,
    NFC_INTERFACE = 64,
    PUSHBUTTON = 128,
    KEYPAD = 256,
    WFDS_DEFAULT = 4096,
};
pub const DOT11_WPS_CONFIG_METHOD_NULL = DOT11_WPS_CONFIG_METHOD.NULL;
pub const DOT11_WPS_CONFIG_METHOD_DISPLAY = DOT11_WPS_CONFIG_METHOD.DISPLAY;
pub const DOT11_WPS_CONFIG_METHOD_NFC_TAG = DOT11_WPS_CONFIG_METHOD.NFC_TAG;
pub const DOT11_WPS_CONFIG_METHOD_NFC_INTERFACE = DOT11_WPS_CONFIG_METHOD.NFC_INTERFACE;
pub const DOT11_WPS_CONFIG_METHOD_PUSHBUTTON = DOT11_WPS_CONFIG_METHOD.PUSHBUTTON;
pub const DOT11_WPS_CONFIG_METHOD_KEYPAD = DOT11_WPS_CONFIG_METHOD.KEYPAD;
pub const DOT11_WPS_CONFIG_METHOD_WFDS_DEFAULT = DOT11_WPS_CONFIG_METHOD.WFDS_DEFAULT;

pub const DOT11_WPS_DEVICE_PASSWORD_ID = enum(i32) {
    DEFAULT = 0,
    USER_SPECIFIED = 1,
    MACHINE_SPECIFIED = 2,
    REKEY = 3,
    PUSHBUTTON = 4,
    REGISTRAR_SPECIFIED = 5,
    NFC_CONNECTION_HANDOVER = 7,
    WFD_SERVICES = 8,
    OOB_RANGE_MIN = 16,
    OOB_RANGE_MAX = 65535,
};
pub const DOT11_WPS_PASSWORD_ID_DEFAULT = DOT11_WPS_DEVICE_PASSWORD_ID.DEFAULT;
pub const DOT11_WPS_PASSWORD_ID_USER_SPECIFIED = DOT11_WPS_DEVICE_PASSWORD_ID.USER_SPECIFIED;
pub const DOT11_WPS_PASSWORD_ID_MACHINE_SPECIFIED = DOT11_WPS_DEVICE_PASSWORD_ID.MACHINE_SPECIFIED;
pub const DOT11_WPS_PASSWORD_ID_REKEY = DOT11_WPS_DEVICE_PASSWORD_ID.REKEY;
pub const DOT11_WPS_PASSWORD_ID_PUSHBUTTON = DOT11_WPS_DEVICE_PASSWORD_ID.PUSHBUTTON;
pub const DOT11_WPS_PASSWORD_ID_REGISTRAR_SPECIFIED = DOT11_WPS_DEVICE_PASSWORD_ID.REGISTRAR_SPECIFIED;
pub const DOT11_WPS_PASSWORD_ID_NFC_CONNECTION_HANDOVER = DOT11_WPS_DEVICE_PASSWORD_ID.NFC_CONNECTION_HANDOVER;
pub const DOT11_WPS_PASSWORD_ID_WFD_SERVICES = DOT11_WPS_DEVICE_PASSWORD_ID.WFD_SERVICES;
pub const DOT11_WPS_PASSWORD_ID_OOB_RANGE_MIN = DOT11_WPS_DEVICE_PASSWORD_ID.OOB_RANGE_MIN;
pub const DOT11_WPS_PASSWORD_ID_OOB_RANGE_MAX = DOT11_WPS_DEVICE_PASSWORD_ID.OOB_RANGE_MAX;

pub const WFDSVC_CONNECTION_CAPABILITY = extern struct {
    bNew: BOOLEAN,
    bClient: BOOLEAN,
    bGO: BOOLEAN,
};

pub const DOT11_WFD_SERVICE_HASH_LIST = extern struct {
    ServiceHashCount: u16,
    ServiceHash: [6]u8,
};

pub const DOT11_WFD_ADVERTISEMENT_ID = extern struct {
    AdvertisementID: u32,
    ServiceAddress: [6]u8,
};

pub const DOT11_WFD_SESSION_ID = extern struct {
    SessionID: u32,
    SessionAddress: [6]u8,
};

pub const DOT11_WFD_ADVERTISED_SERVICE_DESCRIPTOR = extern struct {
    AdvertisementID: u32,
    ConfigMethods: u16,
    ServiceNameLength: u8,
    ServiceName: [255]u8,
};

pub const DOT11_WFD_ADVERTISED_SERVICE_LIST = extern struct {
    ServiceCount: u16,
    AdvertisedService: [1]DOT11_WFD_ADVERTISED_SERVICE_DESCRIPTOR,
};

pub const DOT11_WFD_DISCOVER_COMPLETE_PARAMETERS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    Status: i32,
    uNumOfEntries: u32,
    uTotalNumOfEntries: u32,
    uListOffset: u32,
    uListLength: u32,
};

pub const DOT11_GO_NEGOTIATION_REQUEST_SEND_COMPLETE_PARAMETERS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    PeerDeviceAddress: [6]u8,
    DialogToken: u8,
    Status: i32,
    uIEsOffset: u32,
    uIEsLength: u32,
};

pub const DOT11_RECEIVED_GO_NEGOTIATION_REQUEST_PARAMETERS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    PeerDeviceAddress: [6]u8,
    DialogToken: u8,
    RequestContext: ?*anyopaque,
    uIEsOffset: u32,
    uIEsLength: u32,
};

pub const DOT11_GO_NEGOTIATION_RESPONSE_SEND_COMPLETE_PARAMETERS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    PeerDeviceAddress: [6]u8,
    DialogToken: u8,
    Status: i32,
    uIEsOffset: u32,
    uIEsLength: u32,
};

pub const DOT11_RECEIVED_GO_NEGOTIATION_RESPONSE_PARAMETERS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    PeerDeviceAddress: [6]u8,
    DialogToken: u8,
    ResponseContext: ?*anyopaque,
    uIEsOffset: u32,
    uIEsLength: u32,
};

pub const DOT11_GO_NEGOTIATION_CONFIRMATION_SEND_COMPLETE_PARAMETERS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    PeerDeviceAddress: [6]u8,
    DialogToken: u8,
    Status: i32,
    uIEsOffset: u32,
    uIEsLength: u32,
};

pub const DOT11_RECEIVED_GO_NEGOTIATION_CONFIRMATION_PARAMETERS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    PeerDeviceAddress: [6]u8,
    DialogToken: u8,
    uIEsOffset: u32,
    uIEsLength: u32,
};

pub const DOT11_INVITATION_REQUEST_SEND_COMPLETE_PARAMETERS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    PeerDeviceAddress: [6]u8,
    ReceiverAddress: [6]u8,
    DialogToken: u8,
    Status: i32,
    uIEsOffset: u32,
    uIEsLength: u32,
};

pub const DOT11_RECEIVED_INVITATION_REQUEST_PARAMETERS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    TransmitterDeviceAddress: [6]u8,
    BSSID: [6]u8,
    DialogToken: u8,
    RequestContext: ?*anyopaque,
    uIEsOffset: u32,
    uIEsLength: u32,
};

pub const DOT11_INVITATION_RESPONSE_SEND_COMPLETE_PARAMETERS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    ReceiverDeviceAddress: [6]u8,
    DialogToken: u8,
    Status: i32,
    uIEsOffset: u32,
    uIEsLength: u32,
};

pub const DOT11_RECEIVED_INVITATION_RESPONSE_PARAMETERS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    TransmitterDeviceAddress: [6]u8,
    BSSID: [6]u8,
    DialogToken: u8,
    uIEsOffset: u32,
    uIEsLength: u32,
};

pub const DOT11_PROVISION_DISCOVERY_REQUEST_SEND_COMPLETE_PARAMETERS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    PeerDeviceAddress: [6]u8,
    ReceiverAddress: [6]u8,
    DialogToken: u8,
    Status: i32,
    uIEsOffset: u32,
    uIEsLength: u32,
};

pub const DOT11_RECEIVED_PROVISION_DISCOVERY_REQUEST_PARAMETERS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    TransmitterDeviceAddress: [6]u8,
    BSSID: [6]u8,
    DialogToken: u8,
    RequestContext: ?*anyopaque,
    uIEsOffset: u32,
    uIEsLength: u32,
};

pub const DOT11_PROVISION_DISCOVERY_RESPONSE_SEND_COMPLETE_PARAMETERS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    ReceiverDeviceAddress: [6]u8,
    DialogToken: u8,
    Status: i32,
    uIEsOffset: u32,
    uIEsLength: u32,
};

pub const DOT11_RECEIVED_PROVISION_DISCOVERY_RESPONSE_PARAMETERS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    TransmitterDeviceAddress: [6]u8,
    BSSID: [6]u8,
    DialogToken: u8,
    uIEsOffset: u32,
    uIEsLength: u32,
};

pub const DOT11_ANQP_QUERY_RESULT = enum(i32) {
    success = 0,
    failure = 1,
    timed_out = 2,
    resources = 3,
    advertisement_protocol_not_supported_on_remote = 4,
    gas_protocol_failure = 5,
    advertisement_server_not_responding = 6,
    access_issues = 7,
};
pub const dot11_ANQP_query_result_success = DOT11_ANQP_QUERY_RESULT.success;
pub const dot11_ANQP_query_result_failure = DOT11_ANQP_QUERY_RESULT.failure;
pub const dot11_ANQP_query_result_timed_out = DOT11_ANQP_QUERY_RESULT.timed_out;
pub const dot11_ANQP_query_result_resources = DOT11_ANQP_QUERY_RESULT.resources;
pub const dot11_ANQP_query_result_advertisement_protocol_not_supported_on_remote = DOT11_ANQP_QUERY_RESULT.advertisement_protocol_not_supported_on_remote;
pub const dot11_ANQP_query_result_gas_protocol_failure = DOT11_ANQP_QUERY_RESULT.gas_protocol_failure;
pub const dot11_ANQP_query_result_advertisement_server_not_responding = DOT11_ANQP_QUERY_RESULT.advertisement_server_not_responding;
pub const dot11_ANQP_query_result_access_issues = DOT11_ANQP_QUERY_RESULT.access_issues;

pub const DOT11_ANQP_QUERY_COMPLETE_PARAMETERS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    Status: DOT11_ANQP_QUERY_RESULT,
    hContext: ?HANDLE,
    uResponseLength: u32,
};

pub const DOT11_WFD_DEVICE_CAPABILITY_CONFIG = extern struct {
    Header: NDIS_OBJECT_HEADER,
    bServiceDiscoveryEnabled: BOOLEAN,
    bClientDiscoverabilityEnabled: BOOLEAN,
    bConcurrentOperationSupported: BOOLEAN,
    bInfrastructureManagementEnabled: BOOLEAN,
    bDeviceLimitReached: BOOLEAN,
    bInvitationProcedureEnabled: BOOLEAN,
    WPSVersionsEnabled: u32,
};

pub const DOT11_WFD_GROUP_OWNER_CAPABILITY_CONFIG = extern struct {
    Header: NDIS_OBJECT_HEADER,
    bPersistentGroupEnabled: BOOLEAN,
    bIntraBSSDistributionSupported: BOOLEAN,
    bCrossConnectionSupported: BOOLEAN,
    bPersistentReconnectSupported: BOOLEAN,
    bGroupFormationEnabled: BOOLEAN,
    uMaximumGroupLimit: u32,
};

pub const DOT11_WFD_GROUP_OWNER_CAPABILITY_CONFIG_V2 = extern struct {
    Header: NDIS_OBJECT_HEADER,
    bPersistentGroupEnabled: BOOLEAN,
    bIntraBSSDistributionSupported: BOOLEAN,
    bCrossConnectionSupported: BOOLEAN,
    bPersistentReconnectSupported: BOOLEAN,
    bGroupFormationEnabled: BOOLEAN,
    uMaximumGroupLimit: u32,
    bEapolKeyIpAddressAllocationSupported: BOOLEAN,
};

pub const DOT11_WFD_DEVICE_INFO = extern struct {
    Header: NDIS_OBJECT_HEADER,
    DeviceAddress: [6]u8,
    ConfigMethods: u16,
    PrimaryDeviceType: DOT11_WFD_DEVICE_TYPE,
    DeviceName: DOT11_WPS_DEVICE_NAME,
};

pub const DOT11_WFD_SECONDARY_DEVICE_TYPE_LIST = extern struct {
    Header: NDIS_OBJECT_HEADER,
    uNumOfEntries: u32,
    uTotalNumOfEntries: u32,
    SecondaryDeviceTypes: [1]DOT11_WFD_DEVICE_TYPE,
};

pub const DOT11_WFD_DISCOVER_TYPE = enum(i32) {
    scan_only = 1,
    find_only = 2,
    auto = 3,
    scan_social_channels = 4,
    forced = -2147483648,
};
pub const dot11_wfd_discover_type_scan_only = DOT11_WFD_DISCOVER_TYPE.scan_only;
pub const dot11_wfd_discover_type_find_only = DOT11_WFD_DISCOVER_TYPE.find_only;
pub const dot11_wfd_discover_type_auto = DOT11_WFD_DISCOVER_TYPE.auto;
pub const dot11_wfd_discover_type_scan_social_channels = DOT11_WFD_DISCOVER_TYPE.scan_social_channels;
pub const dot11_wfd_discover_type_forced = DOT11_WFD_DISCOVER_TYPE.forced;

pub const DOT11_WFD_SCAN_TYPE = enum(i32) {
    active = 1,
    passive = 2,
    auto = 3,
};
pub const dot11_wfd_scan_type_active = DOT11_WFD_SCAN_TYPE.active;
pub const dot11_wfd_scan_type_passive = DOT11_WFD_SCAN_TYPE.passive;
pub const dot11_wfd_scan_type_auto = DOT11_WFD_SCAN_TYPE.auto;

pub const DOT11_WFD_DISCOVER_DEVICE_FILTER = extern struct {
    DeviceID: [6]u8,
    ucBitmask: u8,
    GroupSSID: DOT11_SSID,
};

pub const DOT11_WFD_DISCOVER_REQUEST = extern struct {
    Header: NDIS_OBJECT_HEADER,
    DiscoverType: DOT11_WFD_DISCOVER_TYPE,
    ScanType: DOT11_WFD_SCAN_TYPE,
    uDiscoverTimeout: u32,
    uDeviceFilterListOffset: u32,
    uNumDeviceFilters: u32,
    uIEsOffset: u32,
    uIEsLength: u32,
    bForceScanLegacyNetworks: BOOLEAN,
};

pub const DOT11_WFD_DEVICE_ENTRY = extern struct {
    uPhyId: u32,
    PhySpecificInfo: DOT11_BSS_ENTRY_PHY_SPECIFIC_INFO,
    dot11BSSID: [6]u8,
    dot11BSSType: DOT11_BSS_TYPE,
    TransmitterAddress: [6]u8,
    lRSSI: i32,
    uLinkQuality: u32,
    usBeaconPeriod: u16,
    ullTimestamp: u64,
    ullBeaconHostTimestamp: u64,
    ullProbeResponseHostTimestamp: u64,
    usCapabilityInformation: u16,
    uBeaconIEsOffset: u32,
    uBeaconIEsLength: u32,
    uProbeResponseIEsOffset: u32,
    uProbeResponseIEsLength: u32,
};

pub const DOT11_WFD_ADDITIONAL_IE = extern struct {
    Header: NDIS_OBJECT_HEADER,
    uBeaconIEsOffset: u32,
    uBeaconIEsLength: u32,
    uProbeResponseIEsOffset: u32,
    uProbeResponseIEsLength: u32,
    uDefaultRequestIEsOffset: u32,
    uDefaultRequestIEsLength: u32,
};

pub const DOT11_SEND_GO_NEGOTIATION_REQUEST_PARAMETERS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    PeerDeviceAddress: [6]u8,
    DialogToken: u8,
    uSendTimeout: u32,
    GroupOwnerIntent: DOT11_WFD_GO_INTENT,
    MinimumConfigTimeout: DOT11_WFD_CONFIGURATION_TIMEOUT,
    IntendedInterfaceAddress: [6]u8,
    GroupCapability: u8,
    uIEsOffset: u32,
    uIEsLength: u32,
};

pub const DOT11_SEND_GO_NEGOTIATION_RESPONSE_PARAMETERS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    PeerDeviceAddress: [6]u8,
    DialogToken: u8,
    RequestContext: ?*anyopaque,
    uSendTimeout: u32,
    Status: u8,
    GroupOwnerIntent: DOT11_WFD_GO_INTENT,
    MinimumConfigTimeout: DOT11_WFD_CONFIGURATION_TIMEOUT,
    IntendedInterfaceAddress: [6]u8,
    GroupCapability: u8,
    GroupID: DOT11_WFD_GROUP_ID,
    bUseGroupID: BOOLEAN,
    uIEsOffset: u32,
    uIEsLength: u32,
};

pub const DOT11_SEND_GO_NEGOTIATION_CONFIRMATION_PARAMETERS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    PeerDeviceAddress: [6]u8,
    DialogToken: u8,
    ResponseContext: ?*anyopaque,
    uSendTimeout: u32,
    Status: u8,
    GroupCapability: u8,
    GroupID: DOT11_WFD_GROUP_ID,
    bUseGroupID: BOOLEAN,
    uIEsOffset: u32,
    uIEsLength: u32,
};

pub const DOT11_WFD_INVITATION_FLAGS = extern struct {
    _bitfield: u8,
};

pub const DOT11_SEND_INVITATION_REQUEST_PARAMETERS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    DialogToken: u8,
    PeerDeviceAddress: [6]u8,
    uSendTimeout: u32,
    MinimumConfigTimeout: DOT11_WFD_CONFIGURATION_TIMEOUT,
    InvitationFlags: DOT11_WFD_INVITATION_FLAGS,
    GroupBSSID: [6]u8,
    bUseGroupBSSID: BOOLEAN,
    OperatingChannel: DOT11_WFD_CHANNEL,
    bUseSpecifiedOperatingChannel: BOOLEAN,
    GroupID: DOT11_WFD_GROUP_ID,
    bLocalGO: BOOLEAN,
    uIEsOffset: u32,
    uIEsLength: u32,
};

pub const DOT11_SEND_INVITATION_RESPONSE_PARAMETERS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    ReceiverDeviceAddress: [6]u8,
    DialogToken: u8,
    RequestContext: ?*anyopaque,
    uSendTimeout: u32,
    Status: u8,
    MinimumConfigTimeout: DOT11_WFD_CONFIGURATION_TIMEOUT,
    GroupBSSID: [6]u8,
    bUseGroupBSSID: BOOLEAN,
    OperatingChannel: DOT11_WFD_CHANNEL,
    bUseSpecifiedOperatingChannel: BOOLEAN,
    uIEsOffset: u32,
    uIEsLength: u32,
};

pub const DOT11_SEND_PROVISION_DISCOVERY_REQUEST_PARAMETERS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    DialogToken: u8,
    PeerDeviceAddress: [6]u8,
    uSendTimeout: u32,
    GroupCapability: u8,
    GroupID: DOT11_WFD_GROUP_ID,
    bUseGroupID: BOOLEAN,
    uIEsOffset: u32,
    uIEsLength: u32,
};

pub const DOT11_SEND_PROVISION_DISCOVERY_RESPONSE_PARAMETERS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    ReceiverDeviceAddress: [6]u8,
    DialogToken: u8,
    RequestContext: ?*anyopaque,
    uSendTimeout: u32,
    uIEsOffset: u32,
    uIEsLength: u32,
};

pub const DOT11_WFD_DEVICE_LISTEN_CHANNEL = extern struct {
    Header: NDIS_OBJECT_HEADER,
    ChannelNumber: u8,
};

pub const DOT11_WFD_GROUP_START_PARAMETERS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    AdvertisedOperatingChannel: DOT11_WFD_CHANNEL,
};

pub const DOT11_WFD_GROUP_JOIN_PARAMETERS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    GOOperatingChannel: DOT11_WFD_CHANNEL,
    GOConfigTime: u32,
    bInGroupFormation: BOOLEAN,
    bWaitForWPSReady: BOOLEAN,
};

pub const DOT11_POWER_MGMT_AUTO_MODE_ENABLED_INFO = extern struct {
    Header: NDIS_OBJECT_HEADER,
    bEnabled: BOOLEAN,
};

pub const DOT11_POWER_MODE_REASON = enum(i32) {
    no_change = 0,
    noncompliant_AP = 1,
    legacy_WFD_device = 2,
    compliant_AP = 3,
    compliant_WFD_device = 4,
    others = 5,
};
pub const dot11_power_mode_reason_no_change = DOT11_POWER_MODE_REASON.no_change;
pub const dot11_power_mode_reason_noncompliant_AP = DOT11_POWER_MODE_REASON.noncompliant_AP;
pub const dot11_power_mode_reason_legacy_WFD_device = DOT11_POWER_MODE_REASON.legacy_WFD_device;
pub const dot11_power_mode_reason_compliant_AP = DOT11_POWER_MODE_REASON.compliant_AP;
pub const dot11_power_mode_reason_compliant_WFD_device = DOT11_POWER_MODE_REASON.compliant_WFD_device;
pub const dot11_power_mode_reason_others = DOT11_POWER_MODE_REASON.others;

pub const DOT11_POWER_MGMT_MODE_STATUS_INFO = extern struct {
    Header: NDIS_OBJECT_HEADER,
    PowerSaveMode: DOT11_POWER_MODE,
    uPowerSaveLevel: u32,
    Reason: DOT11_POWER_MODE_REASON,
};

pub const DOT11_CHANNEL_HINT = extern struct {
    Dot11PhyType: DOT11_PHY_TYPE,
    uChannelNumber: u32,
};

pub const DOT11_OFFLOAD_NETWORK = extern struct {
    Ssid: DOT11_SSID,
    UnicastCipher: DOT11_CIPHER_ALGORITHM,
    AuthAlgo: DOT11_AUTH_ALGORITHM,
    Dot11ChannelHints: [4]DOT11_CHANNEL_HINT,
};

pub const DOT11_OFFLOAD_NETWORK_LIST_INFO = extern struct {
    Header: NDIS_OBJECT_HEADER,
    ulFlags: u32,
    FastScanPeriod: u32,
    FastScanIterations: u32,
    SlowScanPeriod: u32,
    uNumOfEntries: u32,
    offloadNetworkList: [1]DOT11_OFFLOAD_NETWORK,
};

pub const DOT11_OFFLOAD_NETWORK_STATUS_PARAMETERS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    Status: i32,
};

pub const DOT11_MANUFACTURING_TEST_TYPE = enum(i32) {
    unknown = 0,
    self_start = 1,
    self_query_result = 2,
    rx = 3,
    tx = 4,
    query_adc = 5,
    set_data = 6,
    query_data = 7,
    sleep = 8,
    awake = 9,
    IHV_start = -2147483648,
    IHV_end = -1,
};
pub const dot11_manufacturing_test_unknown = DOT11_MANUFACTURING_TEST_TYPE.unknown;
pub const dot11_manufacturing_test_self_start = DOT11_MANUFACTURING_TEST_TYPE.self_start;
pub const dot11_manufacturing_test_self_query_result = DOT11_MANUFACTURING_TEST_TYPE.self_query_result;
pub const dot11_manufacturing_test_rx = DOT11_MANUFACTURING_TEST_TYPE.rx;
pub const dot11_manufacturing_test_tx = DOT11_MANUFACTURING_TEST_TYPE.tx;
pub const dot11_manufacturing_test_query_adc = DOT11_MANUFACTURING_TEST_TYPE.query_adc;
pub const dot11_manufacturing_test_set_data = DOT11_MANUFACTURING_TEST_TYPE.set_data;
pub const dot11_manufacturing_test_query_data = DOT11_MANUFACTURING_TEST_TYPE.query_data;
pub const dot11_manufacturing_test_sleep = DOT11_MANUFACTURING_TEST_TYPE.sleep;
pub const dot11_manufacturing_test_awake = DOT11_MANUFACTURING_TEST_TYPE.awake;
pub const dot11_manufacturing_test_IHV_start = DOT11_MANUFACTURING_TEST_TYPE.IHV_start;
pub const dot11_manufacturing_test_IHV_end = DOT11_MANUFACTURING_TEST_TYPE.IHV_end;

pub const DOT11_MANUFACTURING_TEST = extern struct {
    dot11ManufacturingTestType: DOT11_MANUFACTURING_TEST_TYPE,
    uBufferLength: u32,
    ucBuffer: [1]u8,
};

pub const DOT11_MANUFACTURING_SELF_TEST_TYPE = enum(i32) {
    INTERFACE = 1,
    RF_INTERFACE = 2,
    BT_COEXISTENCE = 3,
};
pub const DOT11_MANUFACTURING_SELF_TEST_TYPE_INTERFACE = DOT11_MANUFACTURING_SELF_TEST_TYPE.INTERFACE;
pub const DOT11_MANUFACTURING_SELF_TEST_TYPE_RF_INTERFACE = DOT11_MANUFACTURING_SELF_TEST_TYPE.RF_INTERFACE;
pub const DOT11_MANUFACTURING_SELF_TEST_TYPE_BT_COEXISTENCE = DOT11_MANUFACTURING_SELF_TEST_TYPE.BT_COEXISTENCE;

pub const DOT11_MANUFACTURING_SELF_TEST_SET_PARAMS = extern struct {
    SelfTestType: DOT11_MANUFACTURING_SELF_TEST_TYPE,
    uTestID: u32,
    uPinBitMask: u32,
    pvContext: ?*anyopaque,
    uBufferLength: u32,
    ucBufferIn: [1]u8,
};

pub const DOT11_MANUFACTURING_SELF_TEST_QUERY_RESULTS = extern struct {
    SelfTestType: DOT11_MANUFACTURING_SELF_TEST_TYPE,
    uTestID: u32,
    bResult: BOOLEAN,
    uPinFailedBitMask: u32,
    pvContext: ?*anyopaque,
    uBytesWrittenOut: u32,
    ucBufferOut: [1]u8,
};

pub const DOT11_BAND = enum(i32) {
    @"2p4g" = 1,
    @"4p9g" = 2,
    @"5g" = 3,
};
pub const dot11_band_2p4g = DOT11_BAND.@"2p4g";
pub const dot11_band_4p9g = DOT11_BAND.@"4p9g";
pub const dot11_band_5g = DOT11_BAND.@"5g";

pub const DOT11_MANUFACTURING_FUNCTIONAL_TEST_RX = extern struct {
    bEnabled: BOOLEAN,
    Dot11Band: DOT11_BAND,
    uChannel: u32,
    PowerLevel: i32,
};

pub const DOT11_MANUFACTURING_FUNCTIONAL_TEST_TX = extern struct {
    bEnable: BOOLEAN,
    bOpenLoop: BOOLEAN,
    Dot11Band: DOT11_BAND,
    uChannel: u32,
    uSetPowerLevel: u32,
    ADCPowerLevel: i32,
};

pub const DOT11_MANUFACTURING_FUNCTIONAL_TEST_QUERY_ADC = extern struct {
    Dot11Band: DOT11_BAND,
    uChannel: u32,
    ADCPowerLevel: i32,
};

pub const DOT11_MANUFACTURING_TEST_SET_DATA = extern struct {
    uKey: u32,
    uOffset: u32,
    uBufferLength: u32,
    ucBufferIn: [1]u8,
};

pub const DOT11_MANUFACTURING_TEST_QUERY_DATA = extern struct {
    uKey: u32,
    uOffset: u32,
    uBufferLength: u32,
    uBytesRead: u32,
    ucBufferOut: [1]u8,
};

pub const DOT11_MANUFACTURING_TEST_SLEEP = extern struct {
    uSleepTime: u32,
    pvContext: ?*anyopaque,
};

pub const DOT11_MANUFACTURING_CALLBACK_TYPE = enum(i32) {
    unknown = 0,
    self_test_complete = 1,
    sleep_complete = 2,
    IHV_start = -2147483648,
    IHV_end = -1,
};
pub const dot11_manufacturing_callback_unknown = DOT11_MANUFACTURING_CALLBACK_TYPE.unknown;
pub const dot11_manufacturing_callback_self_test_complete = DOT11_MANUFACTURING_CALLBACK_TYPE.self_test_complete;
pub const dot11_manufacturing_callback_sleep_complete = DOT11_MANUFACTURING_CALLBACK_TYPE.sleep_complete;
pub const dot11_manufacturing_callback_IHV_start = DOT11_MANUFACTURING_CALLBACK_TYPE.IHV_start;
pub const dot11_manufacturing_callback_IHV_end = DOT11_MANUFACTURING_CALLBACK_TYPE.IHV_end;

pub const DOT11_MANUFACTURING_CALLBACK_PARAMETERS = extern struct {
    Header: NDIS_OBJECT_HEADER,
    dot11ManufacturingCallbackType: DOT11_MANUFACTURING_CALLBACK_TYPE,
    uStatus: u32,
    pvContext: ?*anyopaque,
};

pub const L2_NOTIFICATION_DATA = extern struct {
    NotificationSource: u32,
    NotificationCode: u32,
    InterfaceGuid: Guid,
    dwDataSize: u32,
    pData: ?*anyopaque,
};

pub const WLAN_PROFILE_INFO = extern struct {
    strProfileName: [256]u16,
    dwFlags: u32,
};

pub const DOT11_NETWORK = extern struct {
    dot11Ssid: DOT11_SSID,
    dot11BssType: DOT11_BSS_TYPE,
};

pub const WLAN_RAW_DATA = extern struct {
    dwDataSize: u32,
    DataBlob: [1]u8,
};

pub const WLAN_RAW_DATA_LIST = extern struct {
    dwTotalSize: u32,
    dwNumberOfItems: u32,
    DataList: [1]extern struct {
        dwDataOffset: u32,
        dwDataSize: u32,
    },
};

pub const WLAN_CONNECTION_MODE = enum(i32) {
    profile = 0,
    temporary_profile = 1,
    discovery_secure = 2,
    discovery_unsecure = 3,
    auto = 4,
    invalid = 5,
};
pub const wlan_connection_mode_profile = WLAN_CONNECTION_MODE.profile;
pub const wlan_connection_mode_temporary_profile = WLAN_CONNECTION_MODE.temporary_profile;
pub const wlan_connection_mode_discovery_secure = WLAN_CONNECTION_MODE.discovery_secure;
pub const wlan_connection_mode_discovery_unsecure = WLAN_CONNECTION_MODE.discovery_unsecure;
pub const wlan_connection_mode_auto = WLAN_CONNECTION_MODE.auto;
pub const wlan_connection_mode_invalid = WLAN_CONNECTION_MODE.invalid;

pub const WLAN_RATE_SET = extern struct {
    uRateSetLength: u32,
    usRateSet: [126]u16,
};

pub const WLAN_AVAILABLE_NETWORK = extern struct {
    strProfileName: [256]u16,
    dot11Ssid: DOT11_SSID,
    dot11BssType: DOT11_BSS_TYPE,
    uNumberOfBssids: u32,
    bNetworkConnectable: BOOL,
    wlanNotConnectableReason: u32,
    uNumberOfPhyTypes: u32,
    dot11PhyTypes: [8]DOT11_PHY_TYPE,
    bMorePhyTypes: BOOL,
    wlanSignalQuality: u32,
    bSecurityEnabled: BOOL,
    dot11DefaultAuthAlgorithm: DOT11_AUTH_ALGORITHM,
    dot11DefaultCipherAlgorithm: DOT11_CIPHER_ALGORITHM,
    dwFlags: u32,
    dwReserved: u32,
};

pub const WLAN_AVAILABLE_NETWORK_V2 = extern struct {
    strProfileName: [256]u16,
    dot11Ssid: DOT11_SSID,
    dot11BssType: DOT11_BSS_TYPE,
    uNumberOfBssids: u32,
    bNetworkConnectable: BOOL,
    wlanNotConnectableReason: u32,
    uNumberOfPhyTypes: u32,
    dot11PhyTypes: [8]DOT11_PHY_TYPE,
    bMorePhyTypes: BOOL,
    wlanSignalQuality: u32,
    bSecurityEnabled: BOOL,
    dot11DefaultAuthAlgorithm: DOT11_AUTH_ALGORITHM,
    dot11DefaultCipherAlgorithm: DOT11_CIPHER_ALGORITHM,
    dwFlags: u32,
    AccessNetworkOptions: DOT11_ACCESSNETWORKOPTIONS,
    dot11HESSID: [6]u8,
    VenueInfo: DOT11_VENUEINFO,
    dwReserved: u32,
};

pub const WLAN_BSS_ENTRY = extern struct {
    dot11Ssid: DOT11_SSID,
    uPhyId: u32,
    dot11Bssid: [6]u8,
    dot11BssType: DOT11_BSS_TYPE,
    dot11BssPhyType: DOT11_PHY_TYPE,
    lRssi: i32,
    uLinkQuality: u32,
    bInRegDomain: BOOLEAN,
    usBeaconPeriod: u16,
    ullTimestamp: u64,
    ullHostTimestamp: u64,
    usCapabilityInformation: u16,
    ulChCenterFrequency: u32,
    wlanRateSet: WLAN_RATE_SET,
    ulIeOffset: u32,
    ulIeSize: u32,
};

pub const WLAN_BSS_LIST = extern struct {
    dwTotalSize: u32,
    dwNumberOfItems: u32,
    wlanBssEntries: [1]WLAN_BSS_ENTRY,
};

pub const WLAN_INTERFACE_STATE = enum(i32) {
    not_ready = 0,
    connected = 1,
    ad_hoc_network_formed = 2,
    disconnecting = 3,
    disconnected = 4,
    associating = 5,
    discovering = 6,
    authenticating = 7,
};
pub const wlan_interface_state_not_ready = WLAN_INTERFACE_STATE.not_ready;
pub const wlan_interface_state_connected = WLAN_INTERFACE_STATE.connected;
pub const wlan_interface_state_ad_hoc_network_formed = WLAN_INTERFACE_STATE.ad_hoc_network_formed;
pub const wlan_interface_state_disconnecting = WLAN_INTERFACE_STATE.disconnecting;
pub const wlan_interface_state_disconnected = WLAN_INTERFACE_STATE.disconnected;
pub const wlan_interface_state_associating = WLAN_INTERFACE_STATE.associating;
pub const wlan_interface_state_discovering = WLAN_INTERFACE_STATE.discovering;
pub const wlan_interface_state_authenticating = WLAN_INTERFACE_STATE.authenticating;

pub const WLAN_ADHOC_NETWORK_STATE = enum(i32) {
    formed = 0,
    connected = 1,
};
pub const wlan_adhoc_network_state_formed = WLAN_ADHOC_NETWORK_STATE.formed;
pub const wlan_adhoc_network_state_connected = WLAN_ADHOC_NETWORK_STATE.connected;

pub const WLAN_INTERFACE_INFO = extern struct {
    InterfaceGuid: Guid,
    strInterfaceDescription: [256]u16,
    isState: WLAN_INTERFACE_STATE,
};

pub const WLAN_ASSOCIATION_ATTRIBUTES = extern struct {
    dot11Ssid: DOT11_SSID,
    dot11BssType: DOT11_BSS_TYPE,
    dot11Bssid: [6]u8,
    dot11PhyType: DOT11_PHY_TYPE,
    uDot11PhyIndex: u32,
    wlanSignalQuality: u32,
    ulRxRate: u32,
    ulTxRate: u32,
};

pub const WLAN_SECURITY_ATTRIBUTES = extern struct {
    bSecurityEnabled: BOOL,
    bOneXEnabled: BOOL,
    dot11AuthAlgorithm: DOT11_AUTH_ALGORITHM,
    dot11CipherAlgorithm: DOT11_CIPHER_ALGORITHM,
};

pub const WLAN_CONNECTION_ATTRIBUTES = extern struct {
    isState: WLAN_INTERFACE_STATE,
    wlanConnectionMode: WLAN_CONNECTION_MODE,
    strProfileName: [256]u16,
    wlanAssociationAttributes: WLAN_ASSOCIATION_ATTRIBUTES,
    wlanSecurityAttributes: WLAN_SECURITY_ATTRIBUTES,
};

pub const DOT11_RADIO_STATE = enum(i32) {
    unknown = 0,
    on = 1,
    off = 2,
};
pub const dot11_radio_state_unknown = DOT11_RADIO_STATE.unknown;
pub const dot11_radio_state_on = DOT11_RADIO_STATE.on;
pub const dot11_radio_state_off = DOT11_RADIO_STATE.off;

pub const WLAN_PHY_RADIO_STATE = extern struct {
    dwPhyIndex: u32,
    dot11SoftwareRadioState: DOT11_RADIO_STATE,
    dot11HardwareRadioState: DOT11_RADIO_STATE,
};

pub const WLAN_RADIO_STATE = extern struct {
    dwNumberOfPhys: u32,
    PhyRadioState: [64]WLAN_PHY_RADIO_STATE,
};

pub const WLAN_OPERATIONAL_STATE = enum(i32) {
    unknown = 0,
    off = 1,
    on = 2,
    going_off = 3,
    going_on = 4,
};
pub const wlan_operational_state_unknown = WLAN_OPERATIONAL_STATE.unknown;
pub const wlan_operational_state_off = WLAN_OPERATIONAL_STATE.off;
pub const wlan_operational_state_on = WLAN_OPERATIONAL_STATE.on;
pub const wlan_operational_state_going_off = WLAN_OPERATIONAL_STATE.going_off;
pub const wlan_operational_state_going_on = WLAN_OPERATIONAL_STATE.going_on;

pub const WLAN_INTERFACE_TYPE = enum(i32) {
    emulated_802_11 = 0,
    native_802_11 = 1,
    invalid = 2,
};
pub const wlan_interface_type_emulated_802_11 = WLAN_INTERFACE_TYPE.emulated_802_11;
pub const wlan_interface_type_native_802_11 = WLAN_INTERFACE_TYPE.native_802_11;
pub const wlan_interface_type_invalid = WLAN_INTERFACE_TYPE.invalid;

pub const WLAN_INTERFACE_CAPABILITY = extern struct {
    interfaceType: WLAN_INTERFACE_TYPE,
    bDot11DSupported: BOOL,
    dwMaxDesiredSsidListSize: u32,
    dwMaxDesiredBssidListSize: u32,
    dwNumberOfSupportedPhys: u32,
    dot11PhyTypes: [64]DOT11_PHY_TYPE,
};

pub const WLAN_AUTH_CIPHER_PAIR_LIST = extern struct {
    dwNumberOfItems: u32,
    pAuthCipherPairList: [1]DOT11_AUTH_CIPHER_PAIR,
};

pub const WLAN_COUNTRY_OR_REGION_STRING_LIST = extern struct {
    dwNumberOfItems: u32,
    pCountryOrRegionStringList: [3]u8,
};

pub const WLAN_PROFILE_INFO_LIST = extern struct {
    dwNumberOfItems: u32,
    dwIndex: u32,
    ProfileInfo: [1]WLAN_PROFILE_INFO,
};

pub const WLAN_AVAILABLE_NETWORK_LIST = extern struct {
    dwNumberOfItems: u32,
    dwIndex: u32,
    Network: [1]WLAN_AVAILABLE_NETWORK,
};

pub const WLAN_AVAILABLE_NETWORK_LIST_V2 = extern struct {
    dwNumberOfItems: u32,
    dwIndex: u32,
    Network: [1]WLAN_AVAILABLE_NETWORK_V2,
};

pub const WLAN_INTERFACE_INFO_LIST = extern struct {
    dwNumberOfItems: u32,
    dwIndex: u32,
    InterfaceInfo: [1]WLAN_INTERFACE_INFO,
};

pub const DOT11_NETWORK_LIST = extern struct {
    dwNumberOfItems: u32,
    dwIndex: u32,
    Network: [1]DOT11_NETWORK,
};

pub const WLAN_POWER_SETTING = enum(i32) {
    no_saving = 0,
    low_saving = 1,
    medium_saving = 2,
    maximum_saving = 3,
    invalid = 4,
};
pub const wlan_power_setting_no_saving = WLAN_POWER_SETTING.no_saving;
pub const wlan_power_setting_low_saving = WLAN_POWER_SETTING.low_saving;
pub const wlan_power_setting_medium_saving = WLAN_POWER_SETTING.medium_saving;
pub const wlan_power_setting_maximum_saving = WLAN_POWER_SETTING.maximum_saving;
pub const wlan_power_setting_invalid = WLAN_POWER_SETTING.invalid;

pub const WLAN_CONNECTION_PARAMETERS = extern struct {
    wlanConnectionMode: WLAN_CONNECTION_MODE,
    strProfile: ?[*:0]const u16,
    pDot11Ssid: ?*DOT11_SSID,
    pDesiredBssidList: ?*DOT11_BSSID_LIST,
    dot11BssType: DOT11_BSS_TYPE,
    dwFlags: u32,
};

pub const WLAN_CONNECTION_PARAMETERS_V2 = extern struct {
    wlanConnectionMode: WLAN_CONNECTION_MODE,
    strProfile: ?[*:0]const u16,
    pDot11Ssid: ?*DOT11_SSID,
    pDot11Hessid: ?*u8,
    pDesiredBssidList: ?*DOT11_BSSID_LIST,
    dot11BssType: DOT11_BSS_TYPE,
    dwFlags: u32,
    pDot11AccessNetworkOptions: ?*DOT11_ACCESSNETWORKOPTIONS,
};

pub const WLAN_MSM_NOTIFICATION_DATA = extern struct {
    wlanConnectionMode: WLAN_CONNECTION_MODE,
    strProfileName: [256]u16,
    dot11Ssid: DOT11_SSID,
    dot11BssType: DOT11_BSS_TYPE,
    dot11MacAddr: [6]u8,
    bSecurityEnabled: BOOL,
    bFirstPeer: BOOL,
    bLastPeer: BOOL,
    wlanReasonCode: u32,
};

pub const WLAN_CONNECTION_NOTIFICATION_DATA = extern struct {
    wlanConnectionMode: WLAN_CONNECTION_MODE,
    strProfileName: [256]u16,
    dot11Ssid: DOT11_SSID,
    dot11BssType: DOT11_BSS_TYPE,
    bSecurityEnabled: BOOL,
    wlanReasonCode: u32,
    dwFlags: WLAN_CONNECTION_NOTIFICATION_FLAGS,
    strProfileXml: [1]u16,
};

pub const WLAN_DEVICE_SERVICE_NOTIFICATION_DATA = extern struct {
    DeviceService: Guid,
    dwOpCode: u32,
    dwDataSize: u32,
    DataBlob: [1]u8,
};

pub const WLAN_NOTIFICATION_ACM = enum(i32) {
    start = 0,
    autoconf_enabled = 1,
    autoconf_disabled = 2,
    background_scan_enabled = 3,
    background_scan_disabled = 4,
    bss_type_change = 5,
    power_setting_change = 6,
    scan_complete = 7,
    scan_fail = 8,
    connection_start = 9,
    connection_complete = 10,
    connection_attempt_fail = 11,
    filter_list_change = 12,
    interface_arrival = 13,
    interface_removal = 14,
    profile_change = 15,
    profile_name_change = 16,
    profiles_exhausted = 17,
    network_not_available = 18,
    network_available = 19,
    disconnecting = 20,
    disconnected = 21,
    adhoc_network_state_change = 22,
    profile_unblocked = 23,
    screen_power_change = 24,
    profile_blocked = 25,
    scan_list_refresh = 26,
    operational_state_change = 27,
    end = 28,
};
pub const wlan_notification_acm_start = WLAN_NOTIFICATION_ACM.start;
pub const wlan_notification_acm_autoconf_enabled = WLAN_NOTIFICATION_ACM.autoconf_enabled;
pub const wlan_notification_acm_autoconf_disabled = WLAN_NOTIFICATION_ACM.autoconf_disabled;
pub const wlan_notification_acm_background_scan_enabled = WLAN_NOTIFICATION_ACM.background_scan_enabled;
pub const wlan_notification_acm_background_scan_disabled = WLAN_NOTIFICATION_ACM.background_scan_disabled;
pub const wlan_notification_acm_bss_type_change = WLAN_NOTIFICATION_ACM.bss_type_change;
pub const wlan_notification_acm_power_setting_change = WLAN_NOTIFICATION_ACM.power_setting_change;
pub const wlan_notification_acm_scan_complete = WLAN_NOTIFICATION_ACM.scan_complete;
pub const wlan_notification_acm_scan_fail = WLAN_NOTIFICATION_ACM.scan_fail;
pub const wlan_notification_acm_connection_start = WLAN_NOTIFICATION_ACM.connection_start;
pub const wlan_notification_acm_connection_complete = WLAN_NOTIFICATION_ACM.connection_complete;
pub const wlan_notification_acm_connection_attempt_fail = WLAN_NOTIFICATION_ACM.connection_attempt_fail;
pub const wlan_notification_acm_filter_list_change = WLAN_NOTIFICATION_ACM.filter_list_change;
pub const wlan_notification_acm_interface_arrival = WLAN_NOTIFICATION_ACM.interface_arrival;
pub const wlan_notification_acm_interface_removal = WLAN_NOTIFICATION_ACM.interface_removal;
pub const wlan_notification_acm_profile_change = WLAN_NOTIFICATION_ACM.profile_change;
pub const wlan_notification_acm_profile_name_change = WLAN_NOTIFICATION_ACM.profile_name_change;
pub const wlan_notification_acm_profiles_exhausted = WLAN_NOTIFICATION_ACM.profiles_exhausted;
pub const wlan_notification_acm_network_not_available = WLAN_NOTIFICATION_ACM.network_not_available;
pub const wlan_notification_acm_network_available = WLAN_NOTIFICATION_ACM.network_available;
pub const wlan_notification_acm_disconnecting = WLAN_NOTIFICATION_ACM.disconnecting;
pub const wlan_notification_acm_disconnected = WLAN_NOTIFICATION_ACM.disconnected;
pub const wlan_notification_acm_adhoc_network_state_change = WLAN_NOTIFICATION_ACM.adhoc_network_state_change;
pub const wlan_notification_acm_profile_unblocked = WLAN_NOTIFICATION_ACM.profile_unblocked;
pub const wlan_notification_acm_screen_power_change = WLAN_NOTIFICATION_ACM.screen_power_change;
pub const wlan_notification_acm_profile_blocked = WLAN_NOTIFICATION_ACM.profile_blocked;
pub const wlan_notification_acm_scan_list_refresh = WLAN_NOTIFICATION_ACM.scan_list_refresh;
pub const wlan_notification_acm_operational_state_change = WLAN_NOTIFICATION_ACM.operational_state_change;
pub const wlan_notification_acm_end = WLAN_NOTIFICATION_ACM.end;

pub const WLAN_NOTIFICATION_MSM = enum(i32) {
    start = 0,
    associating = 1,
    associated = 2,
    authenticating = 3,
    connected = 4,
    roaming_start = 5,
    roaming_end = 6,
    radio_state_change = 7,
    signal_quality_change = 8,
    disassociating = 9,
    disconnected = 10,
    peer_join = 11,
    peer_leave = 12,
    adapter_removal = 13,
    adapter_operation_mode_change = 14,
    link_degraded = 15,
    link_improved = 16,
    end = 17,
};
pub const wlan_notification_msm_start = WLAN_NOTIFICATION_MSM.start;
pub const wlan_notification_msm_associating = WLAN_NOTIFICATION_MSM.associating;
pub const wlan_notification_msm_associated = WLAN_NOTIFICATION_MSM.associated;
pub const wlan_notification_msm_authenticating = WLAN_NOTIFICATION_MSM.authenticating;
pub const wlan_notification_msm_connected = WLAN_NOTIFICATION_MSM.connected;
pub const wlan_notification_msm_roaming_start = WLAN_NOTIFICATION_MSM.roaming_start;
pub const wlan_notification_msm_roaming_end = WLAN_NOTIFICATION_MSM.roaming_end;
pub const wlan_notification_msm_radio_state_change = WLAN_NOTIFICATION_MSM.radio_state_change;
pub const wlan_notification_msm_signal_quality_change = WLAN_NOTIFICATION_MSM.signal_quality_change;
pub const wlan_notification_msm_disassociating = WLAN_NOTIFICATION_MSM.disassociating;
pub const wlan_notification_msm_disconnected = WLAN_NOTIFICATION_MSM.disconnected;
pub const wlan_notification_msm_peer_join = WLAN_NOTIFICATION_MSM.peer_join;
pub const wlan_notification_msm_peer_leave = WLAN_NOTIFICATION_MSM.peer_leave;
pub const wlan_notification_msm_adapter_removal = WLAN_NOTIFICATION_MSM.adapter_removal;
pub const wlan_notification_msm_adapter_operation_mode_change = WLAN_NOTIFICATION_MSM.adapter_operation_mode_change;
pub const wlan_notification_msm_link_degraded = WLAN_NOTIFICATION_MSM.link_degraded;
pub const wlan_notification_msm_link_improved = WLAN_NOTIFICATION_MSM.link_improved;
pub const wlan_notification_msm_end = WLAN_NOTIFICATION_MSM.end;

pub const WLAN_NOTIFICATION_SECURITY = enum(i32) {
    start = 0,
    end = 1,
};
pub const wlan_notification_security_start = WLAN_NOTIFICATION_SECURITY.start;
pub const wlan_notification_security_end = WLAN_NOTIFICATION_SECURITY.end;

pub const WLAN_NOTIFICATION_CALLBACK = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: ?*L2_NOTIFICATION_DATA,
        param1: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) void,
    else => *const fn (
        param0: ?*L2_NOTIFICATION_DATA,
        param1: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) void,
};

pub const WLAN_OPCODE_VALUE_TYPE = enum(i32) {
    query_only = 0,
    set_by_group_policy = 1,
    set_by_user = 2,
    invalid = 3,
};
pub const wlan_opcode_value_type_query_only = WLAN_OPCODE_VALUE_TYPE.query_only;
pub const wlan_opcode_value_type_set_by_group_policy = WLAN_OPCODE_VALUE_TYPE.set_by_group_policy;
pub const wlan_opcode_value_type_set_by_user = WLAN_OPCODE_VALUE_TYPE.set_by_user;
pub const wlan_opcode_value_type_invalid = WLAN_OPCODE_VALUE_TYPE.invalid;

pub const WLAN_INTF_OPCODE = enum(i32) {
    autoconf_start = 0,
    autoconf_enabled = 1,
    background_scan_enabled = 2,
    media_streaming_mode = 3,
    radio_state = 4,
    bss_type = 5,
    interface_state = 6,
    current_connection = 7,
    channel_number = 8,
    supported_infrastructure_auth_cipher_pairs = 9,
    supported_adhoc_auth_cipher_pairs = 10,
    supported_country_or_region_string_list = 11,
    current_operation_mode = 12,
    supported_safe_mode = 13,
    certified_safe_mode = 14,
    hosted_network_capable = 15,
    management_frame_protection_capable = 16,
    secondary_sta_interfaces = 17,
    secondary_sta_synchronized_connections = 18,
    autoconf_end = 268435455,
    msm_start = 268435712,
    statistics = 268435713,
    rssi = 268435714,
    msm_end = 536870911,
    security_start = 536936448,
    security_end = 805306367,
    ihv_start = 805306368,
    ihv_end = 1073741823,
};
pub const wlan_intf_opcode_autoconf_start = WLAN_INTF_OPCODE.autoconf_start;
pub const wlan_intf_opcode_autoconf_enabled = WLAN_INTF_OPCODE.autoconf_enabled;
pub const wlan_intf_opcode_background_scan_enabled = WLAN_INTF_OPCODE.background_scan_enabled;
pub const wlan_intf_opcode_media_streaming_mode = WLAN_INTF_OPCODE.media_streaming_mode;
pub const wlan_intf_opcode_radio_state = WLAN_INTF_OPCODE.radio_state;
pub const wlan_intf_opcode_bss_type = WLAN_INTF_OPCODE.bss_type;
pub const wlan_intf_opcode_interface_state = WLAN_INTF_OPCODE.interface_state;
pub const wlan_intf_opcode_current_connection = WLAN_INTF_OPCODE.current_connection;
pub const wlan_intf_opcode_channel_number = WLAN_INTF_OPCODE.channel_number;
pub const wlan_intf_opcode_supported_infrastructure_auth_cipher_pairs = WLAN_INTF_OPCODE.supported_infrastructure_auth_cipher_pairs;
pub const wlan_intf_opcode_supported_adhoc_auth_cipher_pairs = WLAN_INTF_OPCODE.supported_adhoc_auth_cipher_pairs;
pub const wlan_intf_opcode_supported_country_or_region_string_list = WLAN_INTF_OPCODE.supported_country_or_region_string_list;
pub const wlan_intf_opcode_current_operation_mode = WLAN_INTF_OPCODE.current_operation_mode;
pub const wlan_intf_opcode_supported_safe_mode = WLAN_INTF_OPCODE.supported_safe_mode;
pub const wlan_intf_opcode_certified_safe_mode = WLAN_INTF_OPCODE.certified_safe_mode;
pub const wlan_intf_opcode_hosted_network_capable = WLAN_INTF_OPCODE.hosted_network_capable;
pub const wlan_intf_opcode_management_frame_protection_capable = WLAN_INTF_OPCODE.management_frame_protection_capable;
pub const wlan_intf_opcode_secondary_sta_interfaces = WLAN_INTF_OPCODE.secondary_sta_interfaces;
pub const wlan_intf_opcode_secondary_sta_synchronized_connections = WLAN_INTF_OPCODE.secondary_sta_synchronized_connections;
pub const wlan_intf_opcode_autoconf_end = WLAN_INTF_OPCODE.autoconf_end;
pub const wlan_intf_opcode_msm_start = WLAN_INTF_OPCODE.msm_start;
pub const wlan_intf_opcode_statistics = WLAN_INTF_OPCODE.statistics;
pub const wlan_intf_opcode_rssi = WLAN_INTF_OPCODE.rssi;
pub const wlan_intf_opcode_msm_end = WLAN_INTF_OPCODE.msm_end;
pub const wlan_intf_opcode_security_start = WLAN_INTF_OPCODE.security_start;
pub const wlan_intf_opcode_security_end = WLAN_INTF_OPCODE.security_end;
pub const wlan_intf_opcode_ihv_start = WLAN_INTF_OPCODE.ihv_start;
pub const wlan_intf_opcode_ihv_end = WLAN_INTF_OPCODE.ihv_end;

pub const WLAN_AUTOCONF_OPCODE = enum(i32) {
    start = 0,
    show_denied_networks = 1,
    power_setting = 2,
    only_use_gp_profiles_for_allowed_networks = 3,
    allow_explicit_creds = 4,
    block_period = 5,
    allow_virtual_station_extensibility = 6,
    end = 7,
};
pub const wlan_autoconf_opcode_start = WLAN_AUTOCONF_OPCODE.start;
pub const wlan_autoconf_opcode_show_denied_networks = WLAN_AUTOCONF_OPCODE.show_denied_networks;
pub const wlan_autoconf_opcode_power_setting = WLAN_AUTOCONF_OPCODE.power_setting;
pub const wlan_autoconf_opcode_only_use_gp_profiles_for_allowed_networks = WLAN_AUTOCONF_OPCODE.only_use_gp_profiles_for_allowed_networks;
pub const wlan_autoconf_opcode_allow_explicit_creds = WLAN_AUTOCONF_OPCODE.allow_explicit_creds;
pub const wlan_autoconf_opcode_block_period = WLAN_AUTOCONF_OPCODE.block_period;
pub const wlan_autoconf_opcode_allow_virtual_station_extensibility = WLAN_AUTOCONF_OPCODE.allow_virtual_station_extensibility;
pub const wlan_autoconf_opcode_end = WLAN_AUTOCONF_OPCODE.end;

pub const WLAN_IHV_CONTROL_TYPE = enum(i32) {
    service = 0,
    driver = 1,
};
pub const wlan_ihv_control_type_service = WLAN_IHV_CONTROL_TYPE.service;
pub const wlan_ihv_control_type_driver = WLAN_IHV_CONTROL_TYPE.driver;

pub const WLAN_FILTER_LIST_TYPE = enum(i32) {
    gp_permit = 0,
    gp_deny = 1,
    user_permit = 2,
    user_deny = 3,
};
pub const wlan_filter_list_type_gp_permit = WLAN_FILTER_LIST_TYPE.gp_permit;
pub const wlan_filter_list_type_gp_deny = WLAN_FILTER_LIST_TYPE.gp_deny;
pub const wlan_filter_list_type_user_permit = WLAN_FILTER_LIST_TYPE.user_permit;
pub const wlan_filter_list_type_user_deny = WLAN_FILTER_LIST_TYPE.user_deny;

pub const WLAN_PHY_FRAME_STATISTICS = extern struct {
    ullTransmittedFrameCount: u64,
    ullMulticastTransmittedFrameCount: u64,
    ullFailedCount: u64,
    ullRetryCount: u64,
    ullMultipleRetryCount: u64,
    ullMaxTXLifetimeExceededCount: u64,
    ullTransmittedFragmentCount: u64,
    ullRTSSuccessCount: u64,
    ullRTSFailureCount: u64,
    ullACKFailureCount: u64,
    ullReceivedFrameCount: u64,
    ullMulticastReceivedFrameCount: u64,
    ullPromiscuousReceivedFrameCount: u64,
    ullMaxRXLifetimeExceededCount: u64,
    ullFrameDuplicateCount: u64,
    ullReceivedFragmentCount: u64,
    ullPromiscuousReceivedFragmentCount: u64,
    ullFCSErrorCount: u64,
};

pub const WLAN_MAC_FRAME_STATISTICS = extern struct {
    ullTransmittedFrameCount: u64,
    ullReceivedFrameCount: u64,
    ullWEPExcludedCount: u64,
    ullTKIPLocalMICFailures: u64,
    ullTKIPReplays: u64,
    ullTKIPICVErrorCount: u64,
    ullCCMPReplays: u64,
    ullCCMPDecryptErrors: u64,
    ullWEPUndecryptableCount: u64,
    ullWEPICVErrorCount: u64,
    ullDecryptSuccessCount: u64,
    ullDecryptFailureCount: u64,
};

pub const WLAN_STATISTICS = extern struct {
    ullFourWayHandshakeFailures: u64,
    ullTKIPCounterMeasuresInvoked: u64,
    ullReserved: u64,
    MacUcastCounters: WLAN_MAC_FRAME_STATISTICS,
    MacMcastCounters: WLAN_MAC_FRAME_STATISTICS,
    dwNumberOfPhys: u32,
    PhyCounters: [1]WLAN_PHY_FRAME_STATISTICS,
};

pub const WLAN_SECURABLE_OBJECT = enum(i32) {
    wlan_secure_permit_list = 0,
    wlan_secure_deny_list = 1,
    wlan_secure_ac_enabled = 2,
    wlan_secure_bc_scan_enabled = 3,
    wlan_secure_bss_type = 4,
    wlan_secure_show_denied = 5,
    wlan_secure_interface_properties = 6,
    wlan_secure_ihv_control = 7,
    wlan_secure_all_user_profiles_order = 8,
    wlan_secure_add_new_all_user_profiles = 9,
    wlan_secure_add_new_per_user_profiles = 10,
    wlan_secure_media_streaming_mode_enabled = 11,
    wlan_secure_current_operation_mode = 12,
    wlan_secure_get_plaintext_key = 13,
    wlan_secure_hosted_network_elevated_access = 14,
    wlan_secure_virtual_station_extensibility = 15,
    wlan_secure_wfd_elevated_access = 16,
    WLAN_SECURABLE_OBJECT_COUNT = 17,
};
pub const wlan_secure_permit_list = WLAN_SECURABLE_OBJECT.wlan_secure_permit_list;
pub const wlan_secure_deny_list = WLAN_SECURABLE_OBJECT.wlan_secure_deny_list;
pub const wlan_secure_ac_enabled = WLAN_SECURABLE_OBJECT.wlan_secure_ac_enabled;
pub const wlan_secure_bc_scan_enabled = WLAN_SECURABLE_OBJECT.wlan_secure_bc_scan_enabled;
pub const wlan_secure_bss_type = WLAN_SECURABLE_OBJECT.wlan_secure_bss_type;
pub const wlan_secure_show_denied = WLAN_SECURABLE_OBJECT.wlan_secure_show_denied;
pub const wlan_secure_interface_properties = WLAN_SECURABLE_OBJECT.wlan_secure_interface_properties;
pub const wlan_secure_ihv_control = WLAN_SECURABLE_OBJECT.wlan_secure_ihv_control;
pub const wlan_secure_all_user_profiles_order = WLAN_SECURABLE_OBJECT.wlan_secure_all_user_profiles_order;
pub const wlan_secure_add_new_all_user_profiles = WLAN_SECURABLE_OBJECT.wlan_secure_add_new_all_user_profiles;
pub const wlan_secure_add_new_per_user_profiles = WLAN_SECURABLE_OBJECT.wlan_secure_add_new_per_user_profiles;
pub const wlan_secure_media_streaming_mode_enabled = WLAN_SECURABLE_OBJECT.wlan_secure_media_streaming_mode_enabled;
pub const wlan_secure_current_operation_mode = WLAN_SECURABLE_OBJECT.wlan_secure_current_operation_mode;
pub const wlan_secure_get_plaintext_key = WLAN_SECURABLE_OBJECT.wlan_secure_get_plaintext_key;
pub const wlan_secure_hosted_network_elevated_access = WLAN_SECURABLE_OBJECT.wlan_secure_hosted_network_elevated_access;
pub const wlan_secure_virtual_station_extensibility = WLAN_SECURABLE_OBJECT.wlan_secure_virtual_station_extensibility;
pub const wlan_secure_wfd_elevated_access = WLAN_SECURABLE_OBJECT.wlan_secure_wfd_elevated_access;
pub const WLAN_SECURABLE_OBJECT_COUNT = WLAN_SECURABLE_OBJECT.WLAN_SECURABLE_OBJECT_COUNT;

pub const WLAN_DEVICE_SERVICE_GUID_LIST = extern struct {
    dwNumberOfItems: u32,
    dwIndex: u32,
    DeviceService: [1]Guid,
};

pub const WFD_ROLE_TYPE = enum(i32) {
    NONE = 0,
    DEVICE = 1,
    GROUP_OWNER = 2,
    CLIENT = 4,
    MAX = 5,
};
pub const WFD_ROLE_TYPE_NONE = WFD_ROLE_TYPE.NONE;
pub const WFD_ROLE_TYPE_DEVICE = WFD_ROLE_TYPE.DEVICE;
pub const WFD_ROLE_TYPE_GROUP_OWNER = WFD_ROLE_TYPE.GROUP_OWNER;
pub const WFD_ROLE_TYPE_CLIENT = WFD_ROLE_TYPE.CLIENT;
pub const WFD_ROLE_TYPE_MAX = WFD_ROLE_TYPE.MAX;

pub const WFD_GROUP_ID = extern struct {
    DeviceAddress: [6]u8,
    GroupSSID: DOT11_SSID,
};

pub const WL_DISPLAY_PAGES = enum(i32) {
    ConnectionPage = 0,
    SecurityPage = 1,
    AdvPage = 2,
};
pub const WLConnectionPage = WL_DISPLAY_PAGES.ConnectionPage;
pub const WLSecurityPage = WL_DISPLAY_PAGES.SecurityPage;
pub const WLAdvPage = WL_DISPLAY_PAGES.AdvPage;

pub const WLAN_HOSTED_NETWORK_STATE = enum(i32) {
    unavailable = 0,
    idle = 1,
    active = 2,
};
pub const wlan_hosted_network_unavailable = WLAN_HOSTED_NETWORK_STATE.unavailable;
pub const wlan_hosted_network_idle = WLAN_HOSTED_NETWORK_STATE.idle;
pub const wlan_hosted_network_active = WLAN_HOSTED_NETWORK_STATE.active;

pub const WLAN_HOSTED_NETWORK_REASON = enum(i32) {
    success = 0,
    unspecified = 1,
    bad_parameters = 2,
    service_shutting_down = 3,
    insufficient_resources = 4,
    elevation_required = 5,
    read_only = 6,
    persistence_failed = 7,
    crypt_error = 8,
    impersonation = 9,
    stop_before_start = 10,
    interface_available = 11,
    interface_unavailable = 12,
    miniport_stopped = 13,
    miniport_started = 14,
    incompatible_connection_started = 15,
    incompatible_connection_stopped = 16,
    user_action = 17,
    client_abort = 18,
    ap_start_failed = 19,
    peer_arrived = 20,
    peer_departed = 21,
    peer_timeout = 22,
    gp_denied = 23,
    service_unavailable = 24,
    device_change = 25,
    properties_change = 26,
    virtual_station_blocking_use = 27,
    service_available_on_virtual_station = 28,
};
pub const wlan_hosted_network_reason_success = WLAN_HOSTED_NETWORK_REASON.success;
pub const wlan_hosted_network_reason_unspecified = WLAN_HOSTED_NETWORK_REASON.unspecified;
pub const wlan_hosted_network_reason_bad_parameters = WLAN_HOSTED_NETWORK_REASON.bad_parameters;
pub const wlan_hosted_network_reason_service_shutting_down = WLAN_HOSTED_NETWORK_REASON.service_shutting_down;
pub const wlan_hosted_network_reason_insufficient_resources = WLAN_HOSTED_NETWORK_REASON.insufficient_resources;
pub const wlan_hosted_network_reason_elevation_required = WLAN_HOSTED_NETWORK_REASON.elevation_required;
pub const wlan_hosted_network_reason_read_only = WLAN_HOSTED_NETWORK_REASON.read_only;
pub const wlan_hosted_network_reason_persistence_failed = WLAN_HOSTED_NETWORK_REASON.persistence_failed;
pub const wlan_hosted_network_reason_crypt_error = WLAN_HOSTED_NETWORK_REASON.crypt_error;
pub const wlan_hosted_network_reason_impersonation = WLAN_HOSTED_NETWORK_REASON.impersonation;
pub const wlan_hosted_network_reason_stop_before_start = WLAN_HOSTED_NETWORK_REASON.stop_before_start;
pub const wlan_hosted_network_reason_interface_available = WLAN_HOSTED_NETWORK_REASON.interface_available;
pub const wlan_hosted_network_reason_interface_unavailable = WLAN_HOSTED_NETWORK_REASON.interface_unavailable;
pub const wlan_hosted_network_reason_miniport_stopped = WLAN_HOSTED_NETWORK_REASON.miniport_stopped;
pub const wlan_hosted_network_reason_miniport_started = WLAN_HOSTED_NETWORK_REASON.miniport_started;
pub const wlan_hosted_network_reason_incompatible_connection_started = WLAN_HOSTED_NETWORK_REASON.incompatible_connection_started;
pub const wlan_hosted_network_reason_incompatible_connection_stopped = WLAN_HOSTED_NETWORK_REASON.incompatible_connection_stopped;
pub const wlan_hosted_network_reason_user_action = WLAN_HOSTED_NETWORK_REASON.user_action;
pub const wlan_hosted_network_reason_client_abort = WLAN_HOSTED_NETWORK_REASON.client_abort;
pub const wlan_hosted_network_reason_ap_start_failed = WLAN_HOSTED_NETWORK_REASON.ap_start_failed;
pub const wlan_hosted_network_reason_peer_arrived = WLAN_HOSTED_NETWORK_REASON.peer_arrived;
pub const wlan_hosted_network_reason_peer_departed = WLAN_HOSTED_NETWORK_REASON.peer_departed;
pub const wlan_hosted_network_reason_peer_timeout = WLAN_HOSTED_NETWORK_REASON.peer_timeout;
pub const wlan_hosted_network_reason_gp_denied = WLAN_HOSTED_NETWORK_REASON.gp_denied;
pub const wlan_hosted_network_reason_service_unavailable = WLAN_HOSTED_NETWORK_REASON.service_unavailable;
pub const wlan_hosted_network_reason_device_change = WLAN_HOSTED_NETWORK_REASON.device_change;
pub const wlan_hosted_network_reason_properties_change = WLAN_HOSTED_NETWORK_REASON.properties_change;
pub const wlan_hosted_network_reason_virtual_station_blocking_use = WLAN_HOSTED_NETWORK_REASON.virtual_station_blocking_use;
pub const wlan_hosted_network_reason_service_available_on_virtual_station = WLAN_HOSTED_NETWORK_REASON.service_available_on_virtual_station;

pub const WLAN_HOSTED_NETWORK_PEER_AUTH_STATE = enum(i32) {
    invalid = 0,
    authenticated = 1,
};
pub const wlan_hosted_network_peer_state_invalid = WLAN_HOSTED_NETWORK_PEER_AUTH_STATE.invalid;
pub const wlan_hosted_network_peer_state_authenticated = WLAN_HOSTED_NETWORK_PEER_AUTH_STATE.authenticated;

pub const WLAN_HOSTED_NETWORK_PEER_STATE = extern struct {
    PeerMacAddress: [6]u8,
    PeerAuthState: WLAN_HOSTED_NETWORK_PEER_AUTH_STATE,
};

pub const WLAN_HOSTED_NETWORK_RADIO_STATE = extern struct {
    dot11SoftwareRadioState: DOT11_RADIO_STATE,
    dot11HardwareRadioState: DOT11_RADIO_STATE,
};

pub const WLAN_HOSTED_NETWORK_NOTIFICATION_CODE = enum(i32) {
    state_change = 4096,
    peer_state_change = 4097,
    radio_state_change = 4098,
};
pub const wlan_hosted_network_state_change = WLAN_HOSTED_NETWORK_NOTIFICATION_CODE.state_change;
pub const wlan_hosted_network_peer_state_change = WLAN_HOSTED_NETWORK_NOTIFICATION_CODE.peer_state_change;
pub const wlan_hosted_network_radio_state_change = WLAN_HOSTED_NETWORK_NOTIFICATION_CODE.radio_state_change;

pub const WLAN_HOSTED_NETWORK_STATE_CHANGE = extern struct {
    OldState: WLAN_HOSTED_NETWORK_STATE,
    NewState: WLAN_HOSTED_NETWORK_STATE,
    StateChangeReason: WLAN_HOSTED_NETWORK_REASON,
};

pub const WLAN_HOSTED_NETWORK_DATA_PEER_STATE_CHANGE = extern struct {
    OldState: WLAN_HOSTED_NETWORK_PEER_STATE,
    NewState: WLAN_HOSTED_NETWORK_PEER_STATE,
    PeerStateChangeReason: WLAN_HOSTED_NETWORK_REASON,
};

pub const WLAN_HOSTED_NETWORK_OPCODE = enum(i32) {
    connection_settings = 0,
    security_settings = 1,
    station_profile = 2,
    enable = 3,
};
pub const wlan_hosted_network_opcode_connection_settings = WLAN_HOSTED_NETWORK_OPCODE.connection_settings;
pub const wlan_hosted_network_opcode_security_settings = WLAN_HOSTED_NETWORK_OPCODE.security_settings;
pub const wlan_hosted_network_opcode_station_profile = WLAN_HOSTED_NETWORK_OPCODE.station_profile;
pub const wlan_hosted_network_opcode_enable = WLAN_HOSTED_NETWORK_OPCODE.enable;

pub const WLAN_HOSTED_NETWORK_CONNECTION_SETTINGS = extern struct {
    hostedNetworkSSID: DOT11_SSID,
    dwMaxNumberOfPeers: u32,
};

pub const WLAN_HOSTED_NETWORK_SECURITY_SETTINGS = extern struct {
    dot11AuthAlgo: DOT11_AUTH_ALGORITHM,
    dot11CipherAlgo: DOT11_CIPHER_ALGORITHM,
};

pub const WLAN_HOSTED_NETWORK_STATUS = extern struct {
    HostedNetworkState: WLAN_HOSTED_NETWORK_STATE,
    IPDeviceID: Guid,
    wlanHostedNetworkBSSID: [6]u8,
    dot11PhyType: DOT11_PHY_TYPE,
    ulChannelFrequency: u32,
    dwNumberOfPeers: u32,
    PeerList: [1]WLAN_HOSTED_NETWORK_PEER_STATE,
};

pub const WFD_OPEN_SESSION_COMPLETE_CALLBACK = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        hSessionHandle: ?HANDLE,
        pvContext: ?*anyopaque,
        guidSessionInterface: Guid,
        dwError: u32,
        dwReasonCode: u32,
    ) callconv(@import("std").os.windows.WINAPI) void,
    else => *const fn (
        hSessionHandle: ?HANDLE,
        pvContext: ?*anyopaque,
        guidSessionInterface: Guid,
        dwError: u32,
        dwReasonCode: u32,
    ) callconv(@import("std").os.windows.WINAPI) void,
};

pub const ONEX_AUTH_IDENTITY = enum(i32) {
    None = 0,
    Machine = 1,
    User = 2,
    ExplicitUser = 3,
    Guest = 4,
    Invalid = 5,
};
pub const OneXAuthIdentityNone = ONEX_AUTH_IDENTITY.None;
pub const OneXAuthIdentityMachine = ONEX_AUTH_IDENTITY.Machine;
pub const OneXAuthIdentityUser = ONEX_AUTH_IDENTITY.User;
pub const OneXAuthIdentityExplicitUser = ONEX_AUTH_IDENTITY.ExplicitUser;
pub const OneXAuthIdentityGuest = ONEX_AUTH_IDENTITY.Guest;
pub const OneXAuthIdentityInvalid = ONEX_AUTH_IDENTITY.Invalid;

pub const ONEX_AUTH_STATUS = enum(i32) {
    NotStarted = 0,
    InProgress = 1,
    NoAuthenticatorFound = 2,
    Success = 3,
    Failure = 4,
    Invalid = 5,
};
pub const OneXAuthNotStarted = ONEX_AUTH_STATUS.NotStarted;
pub const OneXAuthInProgress = ONEX_AUTH_STATUS.InProgress;
pub const OneXAuthNoAuthenticatorFound = ONEX_AUTH_STATUS.NoAuthenticatorFound;
pub const OneXAuthSuccess = ONEX_AUTH_STATUS.Success;
pub const OneXAuthFailure = ONEX_AUTH_STATUS.Failure;
pub const OneXAuthInvalid = ONEX_AUTH_STATUS.Invalid;

pub const ONEX_REASON_CODE = enum(i32) {
    REASON_CODE_SUCCESS = 0,
    REASON_START = 327680,
    UNABLE_TO_IDENTIFY_USER = 327681,
    IDENTITY_NOT_FOUND = 327682,
    UI_DISABLED = 327683,
    UI_FAILURE = 327684,
    EAP_FAILURE_RECEIVED = 327685,
    AUTHENTICATOR_NO_LONGER_PRESENT = 327686,
    NO_RESPONSE_TO_IDENTITY = 327687,
    PROFILE_VERSION_NOT_SUPPORTED = 327688,
    PROFILE_INVALID_LENGTH = 327689,
    PROFILE_DISALLOWED_EAP_TYPE = 327690,
    PROFILE_INVALID_EAP_TYPE_OR_FLAG = 327691,
    PROFILE_INVALID_ONEX_FLAGS = 327692,
    PROFILE_INVALID_TIMER_VALUE = 327693,
    PROFILE_INVALID_SUPPLICANT_MODE = 327694,
    PROFILE_INVALID_AUTH_MODE = 327695,
    PROFILE_INVALID_EAP_CONNECTION_PROPERTIES = 327696,
    UI_CANCELLED = 327697,
    PROFILE_INVALID_EXPLICIT_CREDENTIALS = 327698,
    PROFILE_EXPIRED_EXPLICIT_CREDENTIALS = 327699,
    UI_NOT_PERMITTED = 327700,
};
pub const ONEX_REASON_CODE_SUCCESS = ONEX_REASON_CODE.REASON_CODE_SUCCESS;
pub const ONEX_REASON_START = ONEX_REASON_CODE.REASON_START;
pub const ONEX_UNABLE_TO_IDENTIFY_USER = ONEX_REASON_CODE.UNABLE_TO_IDENTIFY_USER;
pub const ONEX_IDENTITY_NOT_FOUND = ONEX_REASON_CODE.IDENTITY_NOT_FOUND;
pub const ONEX_UI_DISABLED = ONEX_REASON_CODE.UI_DISABLED;
pub const ONEX_UI_FAILURE = ONEX_REASON_CODE.UI_FAILURE;
pub const ONEX_EAP_FAILURE_RECEIVED = ONEX_REASON_CODE.EAP_FAILURE_RECEIVED;
pub const ONEX_AUTHENTICATOR_NO_LONGER_PRESENT = ONEX_REASON_CODE.AUTHENTICATOR_NO_LONGER_PRESENT;
pub const ONEX_NO_RESPONSE_TO_IDENTITY = ONEX_REASON_CODE.NO_RESPONSE_TO_IDENTITY;
pub const ONEX_PROFILE_VERSION_NOT_SUPPORTED = ONEX_REASON_CODE.PROFILE_VERSION_NOT_SUPPORTED;
pub const ONEX_PROFILE_INVALID_LENGTH = ONEX_REASON_CODE.PROFILE_INVALID_LENGTH;
pub const ONEX_PROFILE_DISALLOWED_EAP_TYPE = ONEX_REASON_CODE.PROFILE_DISALLOWED_EAP_TYPE;
pub const ONEX_PROFILE_INVALID_EAP_TYPE_OR_FLAG = ONEX_REASON_CODE.PROFILE_INVALID_EAP_TYPE_OR_FLAG;
pub const ONEX_PROFILE_INVALID_ONEX_FLAGS = ONEX_REASON_CODE.PROFILE_INVALID_ONEX_FLAGS;
pub const ONEX_PROFILE_INVALID_TIMER_VALUE = ONEX_REASON_CODE.PROFILE_INVALID_TIMER_VALUE;
pub const ONEX_PROFILE_INVALID_SUPPLICANT_MODE = ONEX_REASON_CODE.PROFILE_INVALID_SUPPLICANT_MODE;
pub const ONEX_PROFILE_INVALID_AUTH_MODE = ONEX_REASON_CODE.PROFILE_INVALID_AUTH_MODE;
pub const ONEX_PROFILE_INVALID_EAP_CONNECTION_PROPERTIES = ONEX_REASON_CODE.PROFILE_INVALID_EAP_CONNECTION_PROPERTIES;
pub const ONEX_UI_CANCELLED = ONEX_REASON_CODE.UI_CANCELLED;
pub const ONEX_PROFILE_INVALID_EXPLICIT_CREDENTIALS = ONEX_REASON_CODE.PROFILE_INVALID_EXPLICIT_CREDENTIALS;
pub const ONEX_PROFILE_EXPIRED_EXPLICIT_CREDENTIALS = ONEX_REASON_CODE.PROFILE_EXPIRED_EXPLICIT_CREDENTIALS;
pub const ONEX_UI_NOT_PERMITTED = ONEX_REASON_CODE.UI_NOT_PERMITTED;

pub const ONEX_NOTIFICATION_TYPE = enum(i32) {
    PublicNotificationBase = 0,
    NotificationTypeResultUpdate = 1,
    NotificationTypeAuthRestarted = 2,
    NotificationTypeEventInvalid = 3,
    // NumNotifications = 3, this enum value conflicts with NotificationTypeEventInvalid
};
pub const OneXPublicNotificationBase = ONEX_NOTIFICATION_TYPE.PublicNotificationBase;
pub const OneXNotificationTypeResultUpdate = ONEX_NOTIFICATION_TYPE.NotificationTypeResultUpdate;
pub const OneXNotificationTypeAuthRestarted = ONEX_NOTIFICATION_TYPE.NotificationTypeAuthRestarted;
pub const OneXNotificationTypeEventInvalid = ONEX_NOTIFICATION_TYPE.NotificationTypeEventInvalid;
pub const OneXNumNotifications = ONEX_NOTIFICATION_TYPE.NotificationTypeEventInvalid;

pub const ONEX_AUTH_RESTART_REASON = enum(i32) {
    PeerInitiated = 0,
    MsmInitiated = 1,
    OneXHeldStateTimeout = 2,
    OneXAuthTimeout = 3,
    OneXConfigurationChanged = 4,
    OneXUserChanged = 5,
    QuarantineStateChanged = 6,
    AltCredsTrial = 7,
    Invalid = 8,
};
pub const OneXRestartReasonPeerInitiated = ONEX_AUTH_RESTART_REASON.PeerInitiated;
pub const OneXRestartReasonMsmInitiated = ONEX_AUTH_RESTART_REASON.MsmInitiated;
pub const OneXRestartReasonOneXHeldStateTimeout = ONEX_AUTH_RESTART_REASON.OneXHeldStateTimeout;
pub const OneXRestartReasonOneXAuthTimeout = ONEX_AUTH_RESTART_REASON.OneXAuthTimeout;
pub const OneXRestartReasonOneXConfigurationChanged = ONEX_AUTH_RESTART_REASON.OneXConfigurationChanged;
pub const OneXRestartReasonOneXUserChanged = ONEX_AUTH_RESTART_REASON.OneXUserChanged;
pub const OneXRestartReasonQuarantineStateChanged = ONEX_AUTH_RESTART_REASON.QuarantineStateChanged;
pub const OneXRestartReasonAltCredsTrial = ONEX_AUTH_RESTART_REASON.AltCredsTrial;
pub const OneXRestartReasonInvalid = ONEX_AUTH_RESTART_REASON.Invalid;

pub const ONEX_VARIABLE_BLOB = extern struct {
    dwSize: u32,
    dwOffset: u32,
};

pub const ONEX_AUTH_PARAMS = extern struct {
    fUpdatePending: BOOL,
    oneXConnProfile: ONEX_VARIABLE_BLOB,
    authIdentity: ONEX_AUTH_IDENTITY,
    dwQuarantineState: u32,
    _bitfield: u32,
    dwSessionId: u32,
    hUserToken: ?HANDLE,
    OneXUserProfile: ONEX_VARIABLE_BLOB,
    Identity: ONEX_VARIABLE_BLOB,
    UserName: ONEX_VARIABLE_BLOB,
    Domain: ONEX_VARIABLE_BLOB,
};

pub const ONEX_EAP_ERROR = extern struct {
    dwWinError: u32,
    type: EAP_METHOD_TYPE,
    dwReasonCode: u32,
    rootCauseGuid: Guid,
    repairGuid: Guid,
    helpLinkGuid: Guid,
    _bitfield: u32,
    RootCauseString: ONEX_VARIABLE_BLOB,
    RepairString: ONEX_VARIABLE_BLOB,
};

pub const ONEX_STATUS = extern struct {
    authStatus: ONEX_AUTH_STATUS,
    dwReason: u32,
    dwError: u32,
};

pub const ONEX_EAP_METHOD_BACKEND_SUPPORT = enum(i32) {
    SupportUnknown = 0,
    Supported = 1,
    Unsupported = 2,
};
pub const OneXEapMethodBackendSupportUnknown = ONEX_EAP_METHOD_BACKEND_SUPPORT.SupportUnknown;
pub const OneXEapMethodBackendSupported = ONEX_EAP_METHOD_BACKEND_SUPPORT.Supported;
pub const OneXEapMethodBackendUnsupported = ONEX_EAP_METHOD_BACKEND_SUPPORT.Unsupported;

pub const ONEX_RESULT_UPDATE_DATA = extern struct {
    oneXStatus: ONEX_STATUS,
    BackendSupport: ONEX_EAP_METHOD_BACKEND_SUPPORT,
    fBackendEngaged: BOOL,
    _bitfield: u32,
    authParams: ONEX_VARIABLE_BLOB,
    eapError: ONEX_VARIABLE_BLOB,
};

pub const ONEX_USER_INFO = extern struct {
    authIdentity: ONEX_AUTH_IDENTITY,
    _bitfield: u32,
    UserName: ONEX_VARIABLE_BLOB,
    DomainName: ONEX_VARIABLE_BLOB,
};

const CLSID_Dot11AdHocManager_Value = Guid.initString("dd06a84f-83bd-4d01-8ab9-2389fea0869e");
pub const CLSID_Dot11AdHocManager = &CLSID_Dot11AdHocManager_Value;

pub const DOT11_ADHOC_CIPHER_ALGORITHM = enum(i32) {
    INVALID = -1,
    NONE = 0,
    CCMP = 4,
    WEP = 257,
};
pub const DOT11_ADHOC_CIPHER_ALGO_INVALID = DOT11_ADHOC_CIPHER_ALGORITHM.INVALID;
pub const DOT11_ADHOC_CIPHER_ALGO_NONE = DOT11_ADHOC_CIPHER_ALGORITHM.NONE;
pub const DOT11_ADHOC_CIPHER_ALGO_CCMP = DOT11_ADHOC_CIPHER_ALGORITHM.CCMP;
pub const DOT11_ADHOC_CIPHER_ALGO_WEP = DOT11_ADHOC_CIPHER_ALGORITHM.WEP;

pub const DOT11_ADHOC_AUTH_ALGORITHM = enum(i32) {
    INVALID = -1,
    @"80211_OPEN" = 1,
    RSNA_PSK = 7,
};
pub const DOT11_ADHOC_AUTH_ALGO_INVALID = DOT11_ADHOC_AUTH_ALGORITHM.INVALID;
pub const DOT11_ADHOC_AUTH_ALGO_80211_OPEN = DOT11_ADHOC_AUTH_ALGORITHM.@"80211_OPEN";
pub const DOT11_ADHOC_AUTH_ALGO_RSNA_PSK = DOT11_ADHOC_AUTH_ALGORITHM.RSNA_PSK;

pub const DOT11_ADHOC_NETWORK_CONNECTION_STATUS = enum(i32) {
    INVALID = 0,
    DISCONNECTED = 11,
    CONNECTING = 12,
    CONNECTED = 13,
    FORMED = 14,
};
pub const DOT11_ADHOC_NETWORK_CONNECTION_STATUS_INVALID = DOT11_ADHOC_NETWORK_CONNECTION_STATUS.INVALID;
pub const DOT11_ADHOC_NETWORK_CONNECTION_STATUS_DISCONNECTED = DOT11_ADHOC_NETWORK_CONNECTION_STATUS.DISCONNECTED;
pub const DOT11_ADHOC_NETWORK_CONNECTION_STATUS_CONNECTING = DOT11_ADHOC_NETWORK_CONNECTION_STATUS.CONNECTING;
pub const DOT11_ADHOC_NETWORK_CONNECTION_STATUS_CONNECTED = DOT11_ADHOC_NETWORK_CONNECTION_STATUS.CONNECTED;
pub const DOT11_ADHOC_NETWORK_CONNECTION_STATUS_FORMED = DOT11_ADHOC_NETWORK_CONNECTION_STATUS.FORMED;

pub const DOT11_ADHOC_CONNECT_FAIL_REASON = enum(i32) {
    DOMAIN_MISMATCH = 0,
    PASSPHRASE_MISMATCH = 1,
    OTHER = 2,
};
pub const DOT11_ADHOC_CONNECT_FAIL_DOMAIN_MISMATCH = DOT11_ADHOC_CONNECT_FAIL_REASON.DOMAIN_MISMATCH;
pub const DOT11_ADHOC_CONNECT_FAIL_PASSPHRASE_MISMATCH = DOT11_ADHOC_CONNECT_FAIL_REASON.PASSPHRASE_MISMATCH;
pub const DOT11_ADHOC_CONNECT_FAIL_OTHER = DOT11_ADHOC_CONNECT_FAIL_REASON.OTHER;

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IDot11AdHocManager_Value = Guid.initString("8f10cc26-cf0d-42a0-acbe-e2de7007384d");
pub const IID_IDot11AdHocManager = &IID_IDot11AdHocManager_Value;
pub const IDot11AdHocManager = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        CreateNetwork: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDot11AdHocManager,
                Name: ?[*:0]const u16,
                Password: ?[*:0]const u16,
                GeographicalId: i32,
                pInterface: ?*IDot11AdHocInterface,
                pSecurity: ?*IDot11AdHocSecuritySettings,
                pContextGuid: ?*Guid,
                pIAdHoc: ?*?*IDot11AdHocNetwork,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDot11AdHocManager,
                Name: ?[*:0]const u16,
                Password: ?[*:0]const u16,
                GeographicalId: i32,
                pInterface: ?*IDot11AdHocInterface,
                pSecurity: ?*IDot11AdHocSecuritySettings,
                pContextGuid: ?*Guid,
                pIAdHoc: ?*?*IDot11AdHocNetwork,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        CommitCreatedNetwork: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDot11AdHocManager,
                pIAdHoc: ?*IDot11AdHocNetwork,
                fSaveProfile: BOOLEAN,
                fMakeSavedProfileUserSpecific: BOOLEAN,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDot11AdHocManager,
                pIAdHoc: ?*IDot11AdHocNetwork,
                fSaveProfile: BOOLEAN,
                fMakeSavedProfileUserSpecific: BOOLEAN,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetIEnumDot11AdHocNetworks: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDot11AdHocManager,
                pContextGuid: ?*Guid,
                ppEnum: ?*?*IEnumDot11AdHocNetworks,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDot11AdHocManager,
                pContextGuid: ?*Guid,
                ppEnum: ?*?*IEnumDot11AdHocNetworks,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetIEnumDot11AdHocInterfaces: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDot11AdHocManager,
                ppEnum: ?*?*IEnumDot11AdHocInterfaces,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDot11AdHocManager,
                ppEnum: ?*?*IEnumDot11AdHocInterfaces,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetNetwork: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDot11AdHocManager,
                NetworkSignature: ?*Guid,
                pNetwork: ?*?*IDot11AdHocNetwork,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDot11AdHocManager,
                NetworkSignature: ?*Guid,
                pNetwork: ?*?*IDot11AdHocNetwork,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IUnknown.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDot11AdHocManager_CreateNetwork(self: *const T, Name: ?[*:0]const u16, Password: ?[*:0]const u16, GeographicalId: i32, pInterface: ?*IDot11AdHocInterface, pSecurity: ?*IDot11AdHocSecuritySettings, pContextGuid: ?*Guid, pIAdHoc: ?*?*IDot11AdHocNetwork) HRESULT {
                return @as(*const IDot11AdHocManager.VTable, @ptrCast(self.vtable)).CreateNetwork(@as(*const IDot11AdHocManager, @ptrCast(self)), Name, Password, GeographicalId, pInterface, pSecurity, pContextGuid, pIAdHoc);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDot11AdHocManager_CommitCreatedNetwork(self: *const T, pIAdHoc: ?*IDot11AdHocNetwork, fSaveProfile: BOOLEAN, fMakeSavedProfileUserSpecific: BOOLEAN) HRESULT {
                return @as(*const IDot11AdHocManager.VTable, @ptrCast(self.vtable)).CommitCreatedNetwork(@as(*const IDot11AdHocManager, @ptrCast(self)), pIAdHoc, fSaveProfile, fMakeSavedProfileUserSpecific);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDot11AdHocManager_GetIEnumDot11AdHocNetworks(self: *const T, pContextGuid: ?*Guid, ppEnum: ?*?*IEnumDot11AdHocNetworks) HRESULT {
                return @as(*const IDot11AdHocManager.VTable, @ptrCast(self.vtable)).GetIEnumDot11AdHocNetworks(@as(*const IDot11AdHocManager, @ptrCast(self)), pContextGuid, ppEnum);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDot11AdHocManager_GetIEnumDot11AdHocInterfaces(self: *const T, ppEnum: ?*?*IEnumDot11AdHocInterfaces) HRESULT {
                return @as(*const IDot11AdHocManager.VTable, @ptrCast(self.vtable)).GetIEnumDot11AdHocInterfaces(@as(*const IDot11AdHocManager, @ptrCast(self)), ppEnum);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDot11AdHocManager_GetNetwork(self: *const T, NetworkSignature: ?*Guid, pNetwork: ?*?*IDot11AdHocNetwork) HRESULT {
                return @as(*const IDot11AdHocManager.VTable, @ptrCast(self.vtable)).GetNetwork(@as(*const IDot11AdHocManager, @ptrCast(self)), NetworkSignature, pNetwork);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IDot11AdHocManagerNotificationSink_Value = Guid.initString("8f10cc27-cf0d-42a0-acbe-e2de7007384d");
pub const IID_IDot11AdHocManagerNotificationSink = &IID_IDot11AdHocManagerNotificationSink_Value;
pub const IDot11AdHocManagerNotificationSink = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        OnNetworkAdd: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDot11AdHocManagerNotificationSink,
                pIAdHocNetwork: ?*IDot11AdHocNetwork,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDot11AdHocManagerNotificationSink,
                pIAdHocNetwork: ?*IDot11AdHocNetwork,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        OnNetworkRemove: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDot11AdHocManagerNotificationSink,
                Signature: ?*Guid,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDot11AdHocManagerNotificationSink,
                Signature: ?*Guid,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        OnInterfaceAdd: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDot11AdHocManagerNotificationSink,
                pIAdHocInterface: ?*IDot11AdHocInterface,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDot11AdHocManagerNotificationSink,
                pIAdHocInterface: ?*IDot11AdHocInterface,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        OnInterfaceRemove: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDot11AdHocManagerNotificationSink,
                Signature: ?*Guid,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDot11AdHocManagerNotificationSink,
                Signature: ?*Guid,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IUnknown.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDot11AdHocManagerNotificationSink_OnNetworkAdd(self: *const T, pIAdHocNetwork: ?*IDot11AdHocNetwork) HRESULT {
                return @as(*const IDot11AdHocManagerNotificationSink.VTable, @ptrCast(self.vtable)).OnNetworkAdd(@as(*const IDot11AdHocManagerNotificationSink, @ptrCast(self)), pIAdHocNetwork);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDot11AdHocManagerNotificationSink_OnNetworkRemove(self: *const T, Signature: ?*Guid) HRESULT {
                return @as(*const IDot11AdHocManagerNotificationSink.VTable, @ptrCast(self.vtable)).OnNetworkRemove(@as(*const IDot11AdHocManagerNotificationSink, @ptrCast(self)), Signature);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDot11AdHocManagerNotificationSink_OnInterfaceAdd(self: *const T, pIAdHocInterface: ?*IDot11AdHocInterface) HRESULT {
                return @as(*const IDot11AdHocManagerNotificationSink.VTable, @ptrCast(self.vtable)).OnInterfaceAdd(@as(*const IDot11AdHocManagerNotificationSink, @ptrCast(self)), pIAdHocInterface);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDot11AdHocManagerNotificationSink_OnInterfaceRemove(self: *const T, Signature: ?*Guid) HRESULT {
                return @as(*const IDot11AdHocManagerNotificationSink.VTable, @ptrCast(self.vtable)).OnInterfaceRemove(@as(*const IDot11AdHocManagerNotificationSink, @ptrCast(self)), Signature);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IEnumDot11AdHocNetworks_Value = Guid.initString("8f10cc28-cf0d-42a0-acbe-e2de7007384d");
pub const IID_IEnumDot11AdHocNetworks = &IID_IEnumDot11AdHocNetworks_Value;
pub const IEnumDot11AdHocNetworks = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        Next: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumDot11AdHocNetworks,
                cElt: u32,
                rgElt: [*]?*IDot11AdHocNetwork,
                pcEltFetched: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumDot11AdHocNetworks,
                cElt: u32,
                rgElt: [*]?*IDot11AdHocNetwork,
                pcEltFetched: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Skip: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumDot11AdHocNetworks,
                cElt: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumDot11AdHocNetworks,
                cElt: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Reset: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumDot11AdHocNetworks,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumDot11AdHocNetworks,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Clone: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumDot11AdHocNetworks,
                ppEnum: ?*?*IEnumDot11AdHocNetworks,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumDot11AdHocNetworks,
                ppEnum: ?*?*IEnumDot11AdHocNetworks,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IUnknown.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumDot11AdHocNetworks_Next(self: *const T, cElt: u32, rgElt: [*]?*IDot11AdHocNetwork, pcEltFetched: ?*u32) HRESULT {
                return @as(*const IEnumDot11AdHocNetworks.VTable, @ptrCast(self.vtable)).Next(@as(*const IEnumDot11AdHocNetworks, @ptrCast(self)), cElt, rgElt, pcEltFetched);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumDot11AdHocNetworks_Skip(self: *const T, cElt: u32) HRESULT {
                return @as(*const IEnumDot11AdHocNetworks.VTable, @ptrCast(self.vtable)).Skip(@as(*const IEnumDot11AdHocNetworks, @ptrCast(self)), cElt);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumDot11AdHocNetworks_Reset(self: *const T) HRESULT {
                return @as(*const IEnumDot11AdHocNetworks.VTable, @ptrCast(self.vtable)).Reset(@as(*const IEnumDot11AdHocNetworks, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumDot11AdHocNetworks_Clone(self: *const T, ppEnum: ?*?*IEnumDot11AdHocNetworks) HRESULT {
                return @as(*const IEnumDot11AdHocNetworks.VTable, @ptrCast(self.vtable)).Clone(@as(*const IEnumDot11AdHocNetworks, @ptrCast(self)), ppEnum);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IDot11AdHocNetwork_Value = Guid.initString("8f10cc29-cf0d-42a0-acbe-e2de7007384d");
pub const IID_IDot11AdHocNetwork = &IID_IDot11AdHocNetwork_Value;
pub const IDot11AdHocNetwork = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        GetStatus: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDot11AdHocNetwork,
                eStatus: ?*DOT11_ADHOC_NETWORK_CONNECTION_STATUS,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDot11AdHocNetwork,
                eStatus: ?*DOT11_ADHOC_NETWORK_CONNECTION_STATUS,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetSSID: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDot11AdHocNetwork,
                ppszwSSID: ?*?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDot11AdHocNetwork,
                ppszwSSID: ?*?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        HasProfile: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDot11AdHocNetwork,
                pf11d: ?*u8,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDot11AdHocNetwork,
                pf11d: ?*u8,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetProfileName: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDot11AdHocNetwork,
                ppszwProfileName: ?*?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDot11AdHocNetwork,
                ppszwProfileName: ?*?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        DeleteProfile: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDot11AdHocNetwork,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDot11AdHocNetwork,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetSignalQuality: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDot11AdHocNetwork,
                puStrengthValue: ?*u32,
                puStrengthMax: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDot11AdHocNetwork,
                puStrengthValue: ?*u32,
                puStrengthMax: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetSecuritySetting: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDot11AdHocNetwork,
                pAdHocSecuritySetting: ?*?*IDot11AdHocSecuritySettings,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDot11AdHocNetwork,
                pAdHocSecuritySetting: ?*?*IDot11AdHocSecuritySettings,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetContextGuid: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDot11AdHocNetwork,
                pContextGuid: ?*Guid,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDot11AdHocNetwork,
                pContextGuid: ?*Guid,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetSignature: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDot11AdHocNetwork,
                pSignature: ?*Guid,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDot11AdHocNetwork,
                pSignature: ?*Guid,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetInterface: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDot11AdHocNetwork,
                pAdHocInterface: ?*?*IDot11AdHocInterface,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDot11AdHocNetwork,
                pAdHocInterface: ?*?*IDot11AdHocInterface,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Connect: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDot11AdHocNetwork,
                Passphrase: ?[*:0]const u16,
                GeographicalId: i32,
                fSaveProfile: BOOLEAN,
                fMakeSavedProfileUserSpecific: BOOLEAN,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDot11AdHocNetwork,
                Passphrase: ?[*:0]const u16,
                GeographicalId: i32,
                fSaveProfile: BOOLEAN,
                fMakeSavedProfileUserSpecific: BOOLEAN,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Disconnect: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDot11AdHocNetwork,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDot11AdHocNetwork,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IUnknown.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDot11AdHocNetwork_GetStatus(self: *const T, eStatus: ?*DOT11_ADHOC_NETWORK_CONNECTION_STATUS) HRESULT {
                return @as(*const IDot11AdHocNetwork.VTable, @ptrCast(self.vtable)).GetStatus(@as(*const IDot11AdHocNetwork, @ptrCast(self)), eStatus);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDot11AdHocNetwork_GetSSID(self: *const T, ppszwSSID: ?*?PWSTR) HRESULT {
                return @as(*const IDot11AdHocNetwork.VTable, @ptrCast(self.vtable)).GetSSID(@as(*const IDot11AdHocNetwork, @ptrCast(self)), ppszwSSID);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDot11AdHocNetwork_HasProfile(self: *const T, pf11d: ?*u8) HRESULT {
                return @as(*const IDot11AdHocNetwork.VTable, @ptrCast(self.vtable)).HasProfile(@as(*const IDot11AdHocNetwork, @ptrCast(self)), pf11d);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDot11AdHocNetwork_GetProfileName(self: *const T, ppszwProfileName: ?*?PWSTR) HRESULT {
                return @as(*const IDot11AdHocNetwork.VTable, @ptrCast(self.vtable)).GetProfileName(@as(*const IDot11AdHocNetwork, @ptrCast(self)), ppszwProfileName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDot11AdHocNetwork_DeleteProfile(self: *const T) HRESULT {
                return @as(*const IDot11AdHocNetwork.VTable, @ptrCast(self.vtable)).DeleteProfile(@as(*const IDot11AdHocNetwork, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDot11AdHocNetwork_GetSignalQuality(self: *const T, puStrengthValue: ?*u32, puStrengthMax: ?*u32) HRESULT {
                return @as(*const IDot11AdHocNetwork.VTable, @ptrCast(self.vtable)).GetSignalQuality(@as(*const IDot11AdHocNetwork, @ptrCast(self)), puStrengthValue, puStrengthMax);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDot11AdHocNetwork_GetSecuritySetting(self: *const T, pAdHocSecuritySetting: ?*?*IDot11AdHocSecuritySettings) HRESULT {
                return @as(*const IDot11AdHocNetwork.VTable, @ptrCast(self.vtable)).GetSecuritySetting(@as(*const IDot11AdHocNetwork, @ptrCast(self)), pAdHocSecuritySetting);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDot11AdHocNetwork_GetContextGuid(self: *const T, pContextGuid: ?*Guid) HRESULT {
                return @as(*const IDot11AdHocNetwork.VTable, @ptrCast(self.vtable)).GetContextGuid(@as(*const IDot11AdHocNetwork, @ptrCast(self)), pContextGuid);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDot11AdHocNetwork_GetSignature(self: *const T, pSignature: ?*Guid) HRESULT {
                return @as(*const IDot11AdHocNetwork.VTable, @ptrCast(self.vtable)).GetSignature(@as(*const IDot11AdHocNetwork, @ptrCast(self)), pSignature);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDot11AdHocNetwork_GetInterface(self: *const T, pAdHocInterface: ?*?*IDot11AdHocInterface) HRESULT {
                return @as(*const IDot11AdHocNetwork.VTable, @ptrCast(self.vtable)).GetInterface(@as(*const IDot11AdHocNetwork, @ptrCast(self)), pAdHocInterface);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDot11AdHocNetwork_Connect(self: *const T, Passphrase: ?[*:0]const u16, GeographicalId: i32, fSaveProfile: BOOLEAN, fMakeSavedProfileUserSpecific: BOOLEAN) HRESULT {
                return @as(*const IDot11AdHocNetwork.VTable, @ptrCast(self.vtable)).Connect(@as(*const IDot11AdHocNetwork, @ptrCast(self)), Passphrase, GeographicalId, fSaveProfile, fMakeSavedProfileUserSpecific);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDot11AdHocNetwork_Disconnect(self: *const T) HRESULT {
                return @as(*const IDot11AdHocNetwork.VTable, @ptrCast(self.vtable)).Disconnect(@as(*const IDot11AdHocNetwork, @ptrCast(self)));
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IDot11AdHocNetworkNotificationSink_Value = Guid.initString("8f10cc2a-cf0d-42a0-acbe-e2de7007384d");
pub const IID_IDot11AdHocNetworkNotificationSink = &IID_IDot11AdHocNetworkNotificationSink_Value;
pub const IDot11AdHocNetworkNotificationSink = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        OnStatusChange: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDot11AdHocNetworkNotificationSink,
                eStatus: DOT11_ADHOC_NETWORK_CONNECTION_STATUS,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDot11AdHocNetworkNotificationSink,
                eStatus: DOT11_ADHOC_NETWORK_CONNECTION_STATUS,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        OnConnectFail: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDot11AdHocNetworkNotificationSink,
                eFailReason: DOT11_ADHOC_CONNECT_FAIL_REASON,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDot11AdHocNetworkNotificationSink,
                eFailReason: DOT11_ADHOC_CONNECT_FAIL_REASON,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IUnknown.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDot11AdHocNetworkNotificationSink_OnStatusChange(self: *const T, eStatus: DOT11_ADHOC_NETWORK_CONNECTION_STATUS) HRESULT {
                return @as(*const IDot11AdHocNetworkNotificationSink.VTable, @ptrCast(self.vtable)).OnStatusChange(@as(*const IDot11AdHocNetworkNotificationSink, @ptrCast(self)), eStatus);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDot11AdHocNetworkNotificationSink_OnConnectFail(self: *const T, eFailReason: DOT11_ADHOC_CONNECT_FAIL_REASON) HRESULT {
                return @as(*const IDot11AdHocNetworkNotificationSink.VTable, @ptrCast(self.vtable)).OnConnectFail(@as(*const IDot11AdHocNetworkNotificationSink, @ptrCast(self)), eFailReason);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IDot11AdHocInterface_Value = Guid.initString("8f10cc2b-cf0d-42a0-acbe-e2de7007384d");
pub const IID_IDot11AdHocInterface = &IID_IDot11AdHocInterface_Value;
pub const IDot11AdHocInterface = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        GetDeviceSignature: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDot11AdHocInterface,
                pSignature: ?*Guid,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDot11AdHocInterface,
                pSignature: ?*Guid,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetFriendlyName: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDot11AdHocInterface,
                ppszName: ?*?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDot11AdHocInterface,
                ppszName: ?*?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        IsDot11d: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDot11AdHocInterface,
                pf11d: ?*u8,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDot11AdHocInterface,
                pf11d: ?*u8,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        IsAdHocCapable: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDot11AdHocInterface,
                pfAdHocCapable: ?*u8,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDot11AdHocInterface,
                pfAdHocCapable: ?*u8,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        IsRadioOn: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDot11AdHocInterface,
                pfIsRadioOn: ?*u8,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDot11AdHocInterface,
                pfIsRadioOn: ?*u8,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetActiveNetwork: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDot11AdHocInterface,
                ppNetwork: ?*?*IDot11AdHocNetwork,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDot11AdHocInterface,
                ppNetwork: ?*?*IDot11AdHocNetwork,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetIEnumSecuritySettings: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDot11AdHocInterface,
                ppEnum: ?*?*IEnumDot11AdHocSecuritySettings,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDot11AdHocInterface,
                ppEnum: ?*?*IEnumDot11AdHocSecuritySettings,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetIEnumDot11AdHocNetworks: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDot11AdHocInterface,
                pFilterGuid: ?*Guid,
                ppEnum: ?*?*IEnumDot11AdHocNetworks,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDot11AdHocInterface,
                pFilterGuid: ?*Guid,
                ppEnum: ?*?*IEnumDot11AdHocNetworks,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetStatus: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDot11AdHocInterface,
                pState: ?*DOT11_ADHOC_NETWORK_CONNECTION_STATUS,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDot11AdHocInterface,
                pState: ?*DOT11_ADHOC_NETWORK_CONNECTION_STATUS,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IUnknown.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDot11AdHocInterface_GetDeviceSignature(self: *const T, pSignature: ?*Guid) HRESULT {
                return @as(*const IDot11AdHocInterface.VTable, @ptrCast(self.vtable)).GetDeviceSignature(@as(*const IDot11AdHocInterface, @ptrCast(self)), pSignature);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDot11AdHocInterface_GetFriendlyName(self: *const T, ppszName: ?*?PWSTR) HRESULT {
                return @as(*const IDot11AdHocInterface.VTable, @ptrCast(self.vtable)).GetFriendlyName(@as(*const IDot11AdHocInterface, @ptrCast(self)), ppszName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDot11AdHocInterface_IsDot11d(self: *const T, pf11d: ?*u8) HRESULT {
                return @as(*const IDot11AdHocInterface.VTable, @ptrCast(self.vtable)).IsDot11d(@as(*const IDot11AdHocInterface, @ptrCast(self)), pf11d);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDot11AdHocInterface_IsAdHocCapable(self: *const T, pfAdHocCapable: ?*u8) HRESULT {
                return @as(*const IDot11AdHocInterface.VTable, @ptrCast(self.vtable)).IsAdHocCapable(@as(*const IDot11AdHocInterface, @ptrCast(self)), pfAdHocCapable);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDot11AdHocInterface_IsRadioOn(self: *const T, pfIsRadioOn: ?*u8) HRESULT {
                return @as(*const IDot11AdHocInterface.VTable, @ptrCast(self.vtable)).IsRadioOn(@as(*const IDot11AdHocInterface, @ptrCast(self)), pfIsRadioOn);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDot11AdHocInterface_GetActiveNetwork(self: *const T, ppNetwork: ?*?*IDot11AdHocNetwork) HRESULT {
                return @as(*const IDot11AdHocInterface.VTable, @ptrCast(self.vtable)).GetActiveNetwork(@as(*const IDot11AdHocInterface, @ptrCast(self)), ppNetwork);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDot11AdHocInterface_GetIEnumSecuritySettings(self: *const T, ppEnum: ?*?*IEnumDot11AdHocSecuritySettings) HRESULT {
                return @as(*const IDot11AdHocInterface.VTable, @ptrCast(self.vtable)).GetIEnumSecuritySettings(@as(*const IDot11AdHocInterface, @ptrCast(self)), ppEnum);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDot11AdHocInterface_GetIEnumDot11AdHocNetworks(self: *const T, pFilterGuid: ?*Guid, ppEnum: ?*?*IEnumDot11AdHocNetworks) HRESULT {
                return @as(*const IDot11AdHocInterface.VTable, @ptrCast(self.vtable)).GetIEnumDot11AdHocNetworks(@as(*const IDot11AdHocInterface, @ptrCast(self)), pFilterGuid, ppEnum);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDot11AdHocInterface_GetStatus(self: *const T, pState: ?*DOT11_ADHOC_NETWORK_CONNECTION_STATUS) HRESULT {
                return @as(*const IDot11AdHocInterface.VTable, @ptrCast(self.vtable)).GetStatus(@as(*const IDot11AdHocInterface, @ptrCast(self)), pState);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IEnumDot11AdHocInterfaces_Value = Guid.initString("8f10cc2c-cf0d-42a0-acbe-e2de7007384d");
pub const IID_IEnumDot11AdHocInterfaces = &IID_IEnumDot11AdHocInterfaces_Value;
pub const IEnumDot11AdHocInterfaces = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        Next: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumDot11AdHocInterfaces,
                cElt: u32,
                rgElt: [*]?*IDot11AdHocInterface,
                pcEltFetched: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumDot11AdHocInterfaces,
                cElt: u32,
                rgElt: [*]?*IDot11AdHocInterface,
                pcEltFetched: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Skip: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumDot11AdHocInterfaces,
                cElt: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumDot11AdHocInterfaces,
                cElt: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Reset: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumDot11AdHocInterfaces,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumDot11AdHocInterfaces,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Clone: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumDot11AdHocInterfaces,
                ppEnum: ?*?*IEnumDot11AdHocInterfaces,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumDot11AdHocInterfaces,
                ppEnum: ?*?*IEnumDot11AdHocInterfaces,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IUnknown.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumDot11AdHocInterfaces_Next(self: *const T, cElt: u32, rgElt: [*]?*IDot11AdHocInterface, pcEltFetched: ?*u32) HRESULT {
                return @as(*const IEnumDot11AdHocInterfaces.VTable, @ptrCast(self.vtable)).Next(@as(*const IEnumDot11AdHocInterfaces, @ptrCast(self)), cElt, rgElt, pcEltFetched);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumDot11AdHocInterfaces_Skip(self: *const T, cElt: u32) HRESULT {
                return @as(*const IEnumDot11AdHocInterfaces.VTable, @ptrCast(self.vtable)).Skip(@as(*const IEnumDot11AdHocInterfaces, @ptrCast(self)), cElt);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumDot11AdHocInterfaces_Reset(self: *const T) HRESULT {
                return @as(*const IEnumDot11AdHocInterfaces.VTable, @ptrCast(self.vtable)).Reset(@as(*const IEnumDot11AdHocInterfaces, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumDot11AdHocInterfaces_Clone(self: *const T, ppEnum: ?*?*IEnumDot11AdHocInterfaces) HRESULT {
                return @as(*const IEnumDot11AdHocInterfaces.VTable, @ptrCast(self.vtable)).Clone(@as(*const IEnumDot11AdHocInterfaces, @ptrCast(self)), ppEnum);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IEnumDot11AdHocSecuritySettings_Value = Guid.initString("8f10cc2d-cf0d-42a0-acbe-e2de7007384d");
pub const IID_IEnumDot11AdHocSecuritySettings = &IID_IEnumDot11AdHocSecuritySettings_Value;
pub const IEnumDot11AdHocSecuritySettings = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        Next: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumDot11AdHocSecuritySettings,
                cElt: u32,
                rgElt: [*]?*IDot11AdHocSecuritySettings,
                pcEltFetched: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumDot11AdHocSecuritySettings,
                cElt: u32,
                rgElt: [*]?*IDot11AdHocSecuritySettings,
                pcEltFetched: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Skip: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumDot11AdHocSecuritySettings,
                cElt: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumDot11AdHocSecuritySettings,
                cElt: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Reset: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumDot11AdHocSecuritySettings,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumDot11AdHocSecuritySettings,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Clone: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumDot11AdHocSecuritySettings,
                ppEnum: ?*?*IEnumDot11AdHocSecuritySettings,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumDot11AdHocSecuritySettings,
                ppEnum: ?*?*IEnumDot11AdHocSecuritySettings,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IUnknown.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumDot11AdHocSecuritySettings_Next(self: *const T, cElt: u32, rgElt: [*]?*IDot11AdHocSecuritySettings, pcEltFetched: ?*u32) HRESULT {
                return @as(*const IEnumDot11AdHocSecuritySettings.VTable, @ptrCast(self.vtable)).Next(@as(*const IEnumDot11AdHocSecuritySettings, @ptrCast(self)), cElt, rgElt, pcEltFetched);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumDot11AdHocSecuritySettings_Skip(self: *const T, cElt: u32) HRESULT {
                return @as(*const IEnumDot11AdHocSecuritySettings.VTable, @ptrCast(self.vtable)).Skip(@as(*const IEnumDot11AdHocSecuritySettings, @ptrCast(self)), cElt);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumDot11AdHocSecuritySettings_Reset(self: *const T) HRESULT {
                return @as(*const IEnumDot11AdHocSecuritySettings.VTable, @ptrCast(self.vtable)).Reset(@as(*const IEnumDot11AdHocSecuritySettings, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumDot11AdHocSecuritySettings_Clone(self: *const T, ppEnum: ?*?*IEnumDot11AdHocSecuritySettings) HRESULT {
                return @as(*const IEnumDot11AdHocSecuritySettings.VTable, @ptrCast(self.vtable)).Clone(@as(*const IEnumDot11AdHocSecuritySettings, @ptrCast(self)), ppEnum);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IDot11AdHocSecuritySettings_Value = Guid.initString("8f10cc2e-cf0d-42a0-acbe-e2de7007384d");
pub const IID_IDot11AdHocSecuritySettings = &IID_IDot11AdHocSecuritySettings_Value;
pub const IDot11AdHocSecuritySettings = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        GetDot11AuthAlgorithm: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDot11AdHocSecuritySettings,
                pAuth: ?*DOT11_ADHOC_AUTH_ALGORITHM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDot11AdHocSecuritySettings,
                pAuth: ?*DOT11_ADHOC_AUTH_ALGORITHM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetDot11CipherAlgorithm: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDot11AdHocSecuritySettings,
                pCipher: ?*DOT11_ADHOC_CIPHER_ALGORITHM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDot11AdHocSecuritySettings,
                pCipher: ?*DOT11_ADHOC_CIPHER_ALGORITHM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IUnknown.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDot11AdHocSecuritySettings_GetDot11AuthAlgorithm(self: *const T, pAuth: ?*DOT11_ADHOC_AUTH_ALGORITHM) HRESULT {
                return @as(*const IDot11AdHocSecuritySettings.VTable, @ptrCast(self.vtable)).GetDot11AuthAlgorithm(@as(*const IDot11AdHocSecuritySettings, @ptrCast(self)), pAuth);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDot11AdHocSecuritySettings_GetDot11CipherAlgorithm(self: *const T, pCipher: ?*DOT11_ADHOC_CIPHER_ALGORITHM) HRESULT {
                return @as(*const IDot11AdHocSecuritySettings.VTable, @ptrCast(self.vtable)).GetDot11CipherAlgorithm(@as(*const IDot11AdHocSecuritySettings, @ptrCast(self)), pCipher);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IDot11AdHocInterfaceNotificationSink_Value = Guid.initString("8f10cc2f-cf0d-42a0-acbe-e2de7007384d");
pub const IID_IDot11AdHocInterfaceNotificationSink = &IID_IDot11AdHocInterfaceNotificationSink_Value;
pub const IDot11AdHocInterfaceNotificationSink = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        OnConnectionStatusChange: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDot11AdHocInterfaceNotificationSink,
                eStatus: DOT11_ADHOC_NETWORK_CONNECTION_STATUS,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDot11AdHocInterfaceNotificationSink,
                eStatus: DOT11_ADHOC_NETWORK_CONNECTION_STATUS,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IUnknown.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDot11AdHocInterfaceNotificationSink_OnConnectionStatusChange(self: *const T, eStatus: DOT11_ADHOC_NETWORK_CONNECTION_STATUS) HRESULT {
                return @as(*const IDot11AdHocInterfaceNotificationSink.VTable, @ptrCast(self.vtable)).OnConnectionStatusChange(@as(*const IDot11AdHocInterfaceNotificationSink, @ptrCast(self)), eStatus);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

//--------------------------------------------------------------------------------
// Section: Functions (61)
//--------------------------------------------------------------------------------
// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "wlanapi" fn WlanOpenHandle(
    dwClientVersion: u32,
    pReserved: ?*anyopaque,
    pdwNegotiatedVersion: ?*u32,
    phClientHandle: ?*?HANDLE,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "wlanapi" fn WlanCloseHandle(
    hClientHandle: ?HANDLE,
    pReserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "wlanapi" fn WlanEnumInterfaces(
    hClientHandle: ?HANDLE,
    pReserved: ?*anyopaque,
    ppInterfaceList: ?*?*WLAN_INTERFACE_INFO_LIST,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "wlanapi" fn WlanSetAutoConfigParameter(
    hClientHandle: ?HANDLE,
    OpCode: WLAN_AUTOCONF_OPCODE,
    dwDataSize: u32,
    // TODO: what to do with BytesParamIndex 2?
    pData: ?*const anyopaque,
    pReserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "wlanapi" fn WlanQueryAutoConfigParameter(
    hClientHandle: ?HANDLE,
    OpCode: WLAN_AUTOCONF_OPCODE,
    pReserved: ?*anyopaque,
    pdwDataSize: ?*u32,
    ppData: ?*?*anyopaque,
    pWlanOpcodeValueType: ?*WLAN_OPCODE_VALUE_TYPE,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "wlanapi" fn WlanGetInterfaceCapability(
    hClientHandle: ?HANDLE,
    pInterfaceGuid: ?*const Guid,
    pReserved: ?*anyopaque,
    ppCapability: ?*?*WLAN_INTERFACE_CAPABILITY,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "wlanapi" fn WlanSetInterface(
    hClientHandle: ?HANDLE,
    pInterfaceGuid: ?*const Guid,
    OpCode: WLAN_INTF_OPCODE,
    dwDataSize: u32,
    // TODO: what to do with BytesParamIndex 3?
    pData: ?*const anyopaque,
    pReserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "wlanapi" fn WlanQueryInterface(
    hClientHandle: ?HANDLE,
    pInterfaceGuid: ?*const Guid,
    OpCode: WLAN_INTF_OPCODE,
    pReserved: ?*anyopaque,
    pdwDataSize: ?*u32,
    ppData: ?*?*anyopaque,
    pWlanOpcodeValueType: ?*WLAN_OPCODE_VALUE_TYPE,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "wlanapi" fn WlanIhvControl(
    hClientHandle: ?HANDLE,
    pInterfaceGuid: ?*const Guid,
    Type: WLAN_IHV_CONTROL_TYPE,
    dwInBufferSize: u32,
    // TODO: what to do with BytesParamIndex 3?
    pInBuffer: ?*anyopaque,
    dwOutBufferSize: u32,
    // TODO: what to do with BytesParamIndex 5?
    pOutBuffer: ?*anyopaque,
    pdwBytesReturned: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "wlanapi" fn WlanScan(
    hClientHandle: ?HANDLE,
    pInterfaceGuid: ?*const Guid,
    pDot11Ssid: ?*const DOT11_SSID,
    pIeData: ?*const WLAN_RAW_DATA,
    pReserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "wlanapi" fn WlanGetAvailableNetworkList(
    hClientHandle: ?HANDLE,
    pInterfaceGuid: ?*const Guid,
    dwFlags: u32,
    pReserved: ?*anyopaque,
    ppAvailableNetworkList: ?*?*WLAN_AVAILABLE_NETWORK_LIST,
) callconv(@import("std").os.windows.WINAPI) u32;

pub extern "wlanapi" fn WlanGetAvailableNetworkList2(
    hClientHandle: ?HANDLE,
    pInterfaceGuid: ?*const Guid,
    dwFlags: u32,
    pReserved: ?*anyopaque,
    ppAvailableNetworkList: ?*?*WLAN_AVAILABLE_NETWORK_LIST_V2,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "wlanapi" fn WlanGetNetworkBssList(
    hClientHandle: ?HANDLE,
    pInterfaceGuid: ?*const Guid,
    pDot11Ssid: ?*const DOT11_SSID,
    dot11BssType: DOT11_BSS_TYPE,
    bSecurityEnabled: BOOL,
    pReserved: ?*anyopaque,
    ppWlanBssList: ?*?*WLAN_BSS_LIST,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "wlanapi" fn WlanConnect(
    hClientHandle: ?HANDLE,
    pInterfaceGuid: ?*const Guid,
    pConnectionParameters: ?*const WLAN_CONNECTION_PARAMETERS,
    pReserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

pub extern "wlanapi" fn WlanConnect2(
    hClientHandle: ?HANDLE,
    pInterfaceGuid: ?*const Guid,
    pConnectionParameters: ?*const WLAN_CONNECTION_PARAMETERS_V2,
    pReserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "wlanapi" fn WlanDisconnect(
    hClientHandle: ?HANDLE,
    pInterfaceGuid: ?*const Guid,
    pReserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "wlanapi" fn WlanRegisterNotification(
    hClientHandle: ?HANDLE,
    dwNotifSource: u32,
    bIgnoreDuplicate: BOOL,
    funcCallback: ?WLAN_NOTIFICATION_CALLBACK,
    pCallbackContext: ?*anyopaque,
    pReserved: ?*anyopaque,
    pdwPrevNotifSource: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "wlanapi" fn WlanGetProfile(
    hClientHandle: ?HANDLE,
    pInterfaceGuid: ?*const Guid,
    strProfileName: ?[*:0]const u16,
    pReserved: ?*anyopaque,
    pstrProfileXml: ?*?PWSTR,
    pdwFlags: ?*u32,
    pdwGrantedAccess: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "wlanapi" fn WlanSetProfileEapUserData(
    hClientHandle: ?HANDLE,
    pInterfaceGuid: ?*const Guid,
    strProfileName: ?[*:0]const u16,
    eapType: EAP_METHOD_TYPE,
    dwFlags: WLAN_SET_EAPHOST_FLAGS,
    dwEapUserDataSize: u32,
    // TODO: what to do with BytesParamIndex 5?
    pbEapUserData: ?*const u8,
    pReserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "wlanapi" fn WlanSetProfileEapXmlUserData(
    hClientHandle: ?HANDLE,
    pInterfaceGuid: ?*const Guid,
    strProfileName: ?[*:0]const u16,
    dwFlags: WLAN_SET_EAPHOST_FLAGS,
    strEapXmlUserData: ?[*:0]const u16,
    pReserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "wlanapi" fn WlanSetProfile(
    hClientHandle: ?HANDLE,
    pInterfaceGuid: ?*const Guid,
    dwFlags: u32,
    strProfileXml: ?[*:0]const u16,
    strAllUserProfileSecurity: ?[*:0]const u16,
    bOverwrite: BOOL,
    pReserved: ?*anyopaque,
    pdwReasonCode: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "wlanapi" fn WlanDeleteProfile(
    hClientHandle: ?HANDLE,
    pInterfaceGuid: ?*const Guid,
    strProfileName: ?[*:0]const u16,
    pReserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "wlanapi" fn WlanRenameProfile(
    hClientHandle: ?HANDLE,
    pInterfaceGuid: ?*const Guid,
    strOldProfileName: ?[*:0]const u16,
    strNewProfileName: ?[*:0]const u16,
    pReserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "wlanapi" fn WlanGetProfileList(
    hClientHandle: ?HANDLE,
    pInterfaceGuid: ?*const Guid,
    pReserved: ?*anyopaque,
    ppProfileList: ?*?*WLAN_PROFILE_INFO_LIST,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "wlanapi" fn WlanSetProfileList(
    hClientHandle: ?HANDLE,
    pInterfaceGuid: ?*const Guid,
    dwItems: u32,
    strProfileNames: [*]?PWSTR,
    pReserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "wlanapi" fn WlanSetProfilePosition(
    hClientHandle: ?HANDLE,
    pInterfaceGuid: ?*const Guid,
    strProfileName: ?[*:0]const u16,
    dwPosition: u32,
    pReserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "wlanapi" fn WlanSetProfileCustomUserData(
    hClientHandle: ?HANDLE,
    pInterfaceGuid: ?*const Guid,
    strProfileName: ?[*:0]const u16,
    dwDataSize: u32,
    // TODO: what to do with BytesParamIndex 3?
    pData: ?*const u8,
    pReserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "wlanapi" fn WlanGetProfileCustomUserData(
    hClientHandle: ?HANDLE,
    pInterfaceGuid: ?*const Guid,
    strProfileName: ?[*:0]const u16,
    pReserved: ?*anyopaque,
    pdwDataSize: ?*u32,
    ppData: ?*?*u8,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "wlanapi" fn WlanSetFilterList(
    hClientHandle: ?HANDLE,
    wlanFilterListType: WLAN_FILTER_LIST_TYPE,
    pNetworkList: ?*const DOT11_NETWORK_LIST,
    pReserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "wlanapi" fn WlanGetFilterList(
    hClientHandle: ?HANDLE,
    wlanFilterListType: WLAN_FILTER_LIST_TYPE,
    pReserved: ?*anyopaque,
    ppNetworkList: ?*?*DOT11_NETWORK_LIST,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "wlanapi" fn WlanSetPsdIEDataList(
    hClientHandle: ?HANDLE,
    strFormat: ?[*:0]const u16,
    pPsdIEDataList: ?*const WLAN_RAW_DATA_LIST,
    pReserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "wlanapi" fn WlanSaveTemporaryProfile(
    hClientHandle: ?HANDLE,
    pInterfaceGuid: ?*const Guid,
    strProfileName: ?[*:0]const u16,
    strAllUserProfileSecurity: ?[*:0]const u16,
    dwFlags: u32,
    bOverWrite: BOOL,
    pReserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

pub extern "wlanapi" fn WlanDeviceServiceCommand(
    hClientHandle: ?HANDLE,
    pInterfaceGuid: ?*const Guid,
    pDeviceServiceGuid: ?*Guid,
    dwOpCode: u32,
    dwInBufferSize: u32,
    // TODO: what to do with BytesParamIndex 4?
    pInBuffer: ?*anyopaque,
    dwOutBufferSize: u32,
    // TODO: what to do with BytesParamIndex 6?
    pOutBuffer: ?*anyopaque,
    pdwBytesReturned: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

pub extern "wlanapi" fn WlanGetSupportedDeviceServices(
    hClientHandle: ?HANDLE,
    pInterfaceGuid: ?*const Guid,
    ppDevSvcGuidList: ?*?*WLAN_DEVICE_SERVICE_GUID_LIST,
) callconv(@import("std").os.windows.WINAPI) u32;

pub extern "wlanapi" fn WlanRegisterDeviceServiceNotification(
    hClientHandle: ?HANDLE,
    pDevSvcGuidList: ?*const WLAN_DEVICE_SERVICE_GUID_LIST,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "wlanapi" fn WlanExtractPsdIEDataList(
    hClientHandle: ?HANDLE,
    dwIeDataSize: u32,
    // TODO: what to do with BytesParamIndex 1?
    pRawIeData: ?*const u8,
    strFormat: ?[*:0]const u16,
    pReserved: ?*anyopaque,
    ppPsdIEDataList: ?*?*WLAN_RAW_DATA_LIST,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "wlanapi" fn WlanReasonCodeToString(
    dwReasonCode: u32,
    dwBufferSize: u32,
    pStringBuffer: [*]u16,
    pReserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "wlanapi" fn WlanAllocateMemory(
    dwMemorySize: u32,
) callconv(@import("std").os.windows.WINAPI) ?*anyopaque;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "wlanapi" fn WlanFreeMemory(
    pMemory: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) void;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "wlanapi" fn WlanSetSecuritySettings(
    hClientHandle: ?HANDLE,
    SecurableObject: WLAN_SECURABLE_OBJECT,
    strModifiedSDDL: ?[*:0]const u16,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "wlanapi" fn WlanGetSecuritySettings(
    hClientHandle: ?HANDLE,
    SecurableObject: WLAN_SECURABLE_OBJECT,
    pValueType: ?*WLAN_OPCODE_VALUE_TYPE,
    pstrCurrentSDDL: ?*?PWSTR,
    pdwGrantedAccess: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "wlanui" fn WlanUIEditProfile(
    dwClientVersion: u32,
    wstrProfileName: ?[*:0]const u16,
    pInterfaceGuid: ?*Guid,
    hWnd: ?HWND,
    wlStartPage: WL_DISPLAY_PAGES,
    pReserved: ?*anyopaque,
    pWlanReasonCode: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.1'
pub extern "wlanapi" fn WlanHostedNetworkStartUsing(
    hClientHandle: ?HANDLE,
    pFailReason: ?*WLAN_HOSTED_NETWORK_REASON,
    pvReserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.1'
pub extern "wlanapi" fn WlanHostedNetworkStopUsing(
    hClientHandle: ?HANDLE,
    pFailReason: ?*WLAN_HOSTED_NETWORK_REASON,
    pvReserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.1'
pub extern "wlanapi" fn WlanHostedNetworkForceStart(
    hClientHandle: ?HANDLE,
    pFailReason: ?*WLAN_HOSTED_NETWORK_REASON,
    pvReserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.1'
pub extern "wlanapi" fn WlanHostedNetworkForceStop(
    hClientHandle: ?HANDLE,
    pFailReason: ?*WLAN_HOSTED_NETWORK_REASON,
    pvReserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.1'
pub extern "wlanapi" fn WlanHostedNetworkQueryProperty(
    hClientHandle: ?HANDLE,
    OpCode: WLAN_HOSTED_NETWORK_OPCODE,
    pdwDataSize: ?*u32,
    ppvData: ?*?*anyopaque,
    pWlanOpcodeValueType: ?*WLAN_OPCODE_VALUE_TYPE,
    pvReserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.1'
pub extern "wlanapi" fn WlanHostedNetworkSetProperty(
    hClientHandle: ?HANDLE,
    OpCode: WLAN_HOSTED_NETWORK_OPCODE,
    dwDataSize: u32,
    // TODO: what to do with BytesParamIndex 2?
    pvData: ?*anyopaque,
    pFailReason: ?*WLAN_HOSTED_NETWORK_REASON,
    pvReserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.1'
pub extern "wlanapi" fn WlanHostedNetworkInitSettings(
    hClientHandle: ?HANDLE,
    pFailReason: ?*WLAN_HOSTED_NETWORK_REASON,
    pvReserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.1'
pub extern "wlanapi" fn WlanHostedNetworkRefreshSecuritySettings(
    hClientHandle: ?HANDLE,
    pFailReason: ?*WLAN_HOSTED_NETWORK_REASON,
    pvReserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.1'
pub extern "wlanapi" fn WlanHostedNetworkQueryStatus(
    hClientHandle: ?HANDLE,
    ppWlanHostedNetworkStatus: ?*?*WLAN_HOSTED_NETWORK_STATUS,
    pvReserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.1'
pub extern "wlanapi" fn WlanHostedNetworkSetSecondaryKey(
    hClientHandle: ?HANDLE,
    dwKeyLength: u32,
    // TODO: what to do with BytesParamIndex 1?
    pucKeyData: ?*u8,
    bIsPassPhrase: BOOL,
    bPersistent: BOOL,
    pFailReason: ?*WLAN_HOSTED_NETWORK_REASON,
    pvReserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.1'
pub extern "wlanapi" fn WlanHostedNetworkQuerySecondaryKey(
    hClientHandle: ?HANDLE,
    pdwKeyLength: ?*u32,
    ppucKeyData: ?*?*u8,
    pbIsPassPhrase: ?*BOOL,
    pbPersistent: ?*BOOL,
    pFailReason: ?*WLAN_HOSTED_NETWORK_REASON,
    pvReserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.1'
pub extern "wlanapi" fn WlanRegisterVirtualStationNotification(
    hClientHandle: ?HANDLE,
    bRegister: BOOL,
    pReserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows8.0'
pub extern "wlanapi" fn WFDOpenHandle(
    dwClientVersion: u32,
    pdwNegotiatedVersion: ?*u32,
    phClientHandle: ?*?HANDLE,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows8.0'
pub extern "wlanapi" fn WFDCloseHandle(
    hClientHandle: ?HANDLE,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows8.0'
pub extern "wlanapi" fn WFDStartOpenSession(
    hClientHandle: ?HANDLE,
    pDeviceAddress: ?*?*u8,
    pvContext: ?*anyopaque,
    pfnCallback: ?WFD_OPEN_SESSION_COMPLETE_CALLBACK,
    phSessionHandle: ?*?HANDLE,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows8.0'
pub extern "wlanapi" fn WFDCancelOpenSession(
    hSessionHandle: ?HANDLE,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows8.0'
pub extern "wlanapi" fn WFDOpenLegacySession(
    hClientHandle: ?HANDLE,
    pLegacyMacAddress: ?*?*u8,
    phSessionHandle: ?*?HANDLE,
    pGuidSessionInterface: ?*Guid,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows8.0'
pub extern "wlanapi" fn WFDCloseSession(
    hSessionHandle: ?HANDLE,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows8.0'
pub extern "wlanapi" fn WFDUpdateDeviceVisibility(
    pDeviceAddress: ?*?*u8,
) callconv(@import("std").os.windows.WINAPI) u32;

//--------------------------------------------------------------------------------
// Section: Unicode Aliases (0)
//--------------------------------------------------------------------------------
const thismodule = @This();
pub usingnamespace switch (@import("../zig.zig").unicode_mode) {
    .ansi => struct {},
    .wide => struct {},
    .unspecified => if (@import("builtin").is_test) struct {} else struct {},
};
//--------------------------------------------------------------------------------
// Section: Imports (12)
//--------------------------------------------------------------------------------
const Guid = @import("../zig.zig").Guid;
const BOOL = @import("../foundation.zig").BOOL;
const BOOLEAN = @import("../foundation.zig").BOOLEAN;
const EAP_METHOD_TYPE = @import("../security/extensible_authentication_protocol.zig").EAP_METHOD_TYPE;
const HANDLE = @import("../foundation.zig").HANDLE;
const HRESULT = @import("../foundation.zig").HRESULT;
const HWND = @import("../foundation.zig").HWND;
const IUnknown = @import("../system/com.zig").IUnknown;
const LARGE_INTEGER = @import("../foundation.zig").LARGE_INTEGER;
const NDIS_OBJECT_HEADER = @import("../network_management/ndis.zig").NDIS_OBJECT_HEADER;
const PROPERTYKEY = @import("../ui/shell/properties_system.zig").PROPERTYKEY;
const PWSTR = @import("../foundation.zig").PWSTR;

test {
    // The following '_ = <FuncPtrType>' lines are a workaround for https://github.com/ziglang/zig/issues/4476
    if (@hasDecl(@This(), "WLAN_NOTIFICATION_CALLBACK")) {
        _ = WLAN_NOTIFICATION_CALLBACK;
    }
    if (@hasDecl(@This(), "WFD_OPEN_SESSION_COMPLETE_CALLBACK")) {
        _ = WFD_OPEN_SESSION_COMPLETE_CALLBACK;
    }

    @setEvalBranchQuota(comptime @import("std").meta.declarations(@This()).len * 3);

    // reference all the pub declarations
    if (!@import("builtin").is_test) return;
    inline for (comptime @import("std").meta.declarations(@This())) |decl| {
        if (decl.is_pub) {
            _ = @field(@This(), decl.name);
        }
    }
}
