zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

windot11.h (121212B) - Raw


      1 /**
      2 * This file is part of the mingw-w64 runtime package.
      3 * No warranty is given; refer to the file DISCLAIMER within this package.
      4 */
      5 
      6 #ifndef __WINDOT11_H__
      7 #define __WINDOT11_H__
      8 
      9 #include <winapifamily.h>
     10 
     11 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
     12 
     13 #ifndef _NTDDNDIS_
     14 #include <ntddndis.h>
     15 #endif
     16 
     17 #include <wlantypes.h>
     18 
     19 #if NTDDI_VERSION >= NTDDI_WIN7 || NDIS_SUPPORT_NDIS620
     20 #define NWF_EXTAP_SUPPORTED 1
     21 #define NWF_VWIFI_SUPPORTED 1
     22 #endif
     23 
     24 #if NTDDI_VERSION >= NTDDI_WIN8 || NDIS_SUPPORT_NDIS630
     25 #define NWF_WFD_SUPPORTED 1
     26 #define NWF_POWER_SAVE_SUPPORTED 1
     27 #endif
     28 
     29 #define DOT11_RATE_SET_MAX_LENGTH 126
     30 
     31 #define DOT11_BSSID_LIST_REVISION_1 1
     32 
     33 #define DOT11_HESSID_LENGTH 6
     34 
     35 #ifdef __WIDL__
     36 typedef struct _DOT11_MAC_ADDRESS {
     37   UCHAR ucDot11MacAddress[6];
     38 } DOT11_MAC_ADDRESS, *PDOT11_MAC_ADDRESS;
     39 #else
     40 typedef UCHAR DOT11_MAC_ADDRESS[6];
     41 typedef DOT11_MAC_ADDRESS *PDOT11_MAC_ADDRESS;
     42 #endif
     43 
     44 typedef struct DOT11_BSSID_LIST {
     45   NDIS_OBJECT_HEADER Header;
     46   ULONG uNumOfEntries;
     47   ULONG uTotalNumOfEntries;
     48 #ifdef __WIDL__
     49   [unique, size_is (uTotalNumOfEntries)] DOT11_MAC_ADDRESS BSSIDs[*];
     50 #else
     51   DOT11_MAC_ADDRESS BSSIDs[1];
     52 #endif
     53 } DOT11_BSSID_LIST, *PDOT11_BSSID_LIST;
     54 
     55 typedef UCHAR DOT11_HESSID[DOT11_HESSID_LENGTH];
     56 typedef DOT11_HESSID *PDOT11_HESSID;
     57 
     58 typedef
     59 #ifdef __WIDL__
     60   [v1_enum]
     61 #endif
     62 enum _DOT11_PHY_TYPE {
     63   dot11_phy_type_unknown = 0,
     64   dot11_phy_type_any = dot11_phy_type_unknown,
     65   dot11_phy_type_fhss = 1,
     66   dot11_phy_type_dsss = 2,
     67   dot11_phy_type_irbaseband = 3,
     68   dot11_phy_type_ofdm = 4,
     69   dot11_phy_type_hrdsss = 5,
     70   dot11_phy_type_erp = 6,
     71   dot11_phy_type_ht = 7,
     72   dot11_phy_type_vht = 8,
     73   dot11_phy_type_dmg = 9,
     74   dot11_phy_type_he = 10,
     75   dot11_phy_type_eht = 11,
     76   dot11_phy_type_IHV_start = 0x80000000,
     77   dot11_phy_type_IHV_end = 0xffffffff
     78 } DOT11_PHY_TYPE, *PDOT11_PHY_TYPE;
     79 
     80 typedef struct _DOT11_RATE_SET {
     81   ULONG uRateSetLength;
     82   UCHAR ucRateSet[DOT11_RATE_SET_MAX_LENGTH];
     83 } DOT11_RATE_SET, *PDOT11_RATE_SET;
     84 
     85 typedef UCHAR DOT11_COUNTRY_OR_REGION_STRING[3];
     86 typedef DOT11_COUNTRY_OR_REGION_STRING *PDOT11_COUNTRY_OR_REGION_STRING;
     87 typedef UCHAR DOT11_DIALOG_TOKEN;
     88 typedef UCHAR DOT11_WFD_STATUS_CODE;
     89 typedef UCHAR DOT11_WFD_MINOR_REASON_CODE;
     90 typedef UCHAR DOT11_WFD_SERVICE_HASH[6];
     91 
     92 #define DOT11_WFD_SERVICE_NAME_MAX_LENGTH 255
     93 #define DOT11_WFD_APS2_SERVICE_TYPE_MAX_LENGTH 21
     94 #define DOT11_WFD_ASP2_INSTANCE_NAME_MAX_LENGTH 63
     95 #define DOT11_WFD_SERVICE_INFORMATION_MAX_LENGTH 65535
     96 #define DOT11_MAX_REQUESTED_SERVICE_INFORMATION_LENGTH 255
     97 #define DOT11_WFD_SESSION_INFO_MAX_LENGTH 144
     98 
     99 typedef struct _DOT11_WFD_SESSION_INFO {
    100   USHORT uSessionInfoLength;
    101   UCHAR ucSessionInfo[DOT11_WFD_SESSION_INFO_MAX_LENGTH];
    102 } DOT11_WFD_SESSION_INFO, *PDOT11_WFD_SESSION_INFO;
    103 
    104 #if NTDDI_VERSION >= NTDDI_VISTA
    105 #define NDIS_PACKET_TYPE_MEDIA_SPECIFIC_MASK (0x0fff0000U)
    106 
    107 #define NDIS_PACKET_TYPE_802_11_DIRECTED_DATA NDIS_PACKET_TYPE_DIRECTED
    108 #define NDIS_PACKET_TYPE_802_11_BROADCAST_DATA NDIS_PACKET_TYPE_BROADCAST
    109 #define NDIS_PACKET_TYPE_802_11_MULTICAST_DATA NDIS_PACKET_TYPE_MULTICAST
    110 #define NDIS_PACKET_TYPE_802_11_ALL_MULTICAST_DATA NDIS_PACKET_TYPE_ALL_MULTICAST
    111 #define NDIS_PACKET_TYPE_802_11_PROMISCUOUS_DATA NDIS_PACKET_TYPE_PROMISCUOUS
    112 #define NDIS_PACKET_TYPE_802_11_RAW_DATA (0x00010000U)
    113 #define NDIS_PACKET_TYPE_802_11_DIRECTED_MGMT (0x00020000U)
    114 #define NDIS_PACKET_TYPE_802_11_BROADCAST_MGMT (0x00040000U)
    115 #define NDIS_PACKET_TYPE_802_11_MULTICAST_MGMT (0x00080000U)
    116 #define NDIS_PACKET_TYPE_802_11_ALL_MULTICAST_MGMT (0x00100000U)
    117 #define NDIS_PACKET_TYPE_802_11_PROMISCUOUS_MGMT (0x00200000U)
    118 #define NDIS_PACKET_TYPE_802_11_RAW_MGMT (0x00400000U)
    119 #define NDIS_PACKET_TYPE_802_11_DIRECTED_CTRL (0x00800000U)
    120 #define NDIS_PACKET_TYPE_802_11_BROADCAST_CTRL (0x01000000U)
    121 #define NDIS_PACKET_TYPE_802_11_PROMISCUOUS_CTRL (0x02000000U)
    122 
    123 #define NDIS_PACKET_TYPE_ALL_802_11_FILTERS (NDIS_PACKET_TYPE_DIRECTED | NDIS_PACKET_TYPE_MULTICAST | NDIS_PACKET_TYPE_ALL_MULTICAST | NDIS_PACKET_TYPE_BROADCAST | NDIS_PACKET_TYPE_PROMISCUOUS | NDIS_PACKET_TYPE_802_11_RAW_DATA | NDIS_PACKET_TYPE_802_11_DIRECTED_MGMT | NDIS_PACKET_TYPE_802_11_BROADCAST_MGMT | NDIS_PACKET_TYPE_802_11_MULTICAST_MGMT | NDIS_PACKET_TYPE_802_11_ALL_MULTICAST_MGMT | NDIS_PACKET_TYPE_802_11_PROMISCUOUS_MGMT | NDIS_PACKET_TYPE_802_11_RAW_MGMT | NDIS_PACKET_TYPE_802_11_DIRECTED_CTRL | NDIS_PACKET_TYPE_802_11_BROADCAST_CTRL | NDIS_PACKET_TYPE_802_11_PROMISCUOUS_CTRL)
    124 
    125 #define DOT11_MAX_PDU_SIZE 2346
    126 #define DOT11_MIN_PDU_SIZE (256)
    127 
    128 #define DOT11_MAX_NUM_DEFAULT_KEY 4
    129 #if NTDDI_VERSION >= NTDDI_WIN8 || NDIS_SUPPORT_NDIS630
    130 #define DOT11_MAX_NUM_DEFAULT_KEY_MFP DOT11_MAX_NUM_DEFAULT_KEY + 2
    131 #endif
    132 
    133 #define OID_DOT11_NDIS_START 0x0d010300
    134 
    135 #define NWF_MANDATORY_OID (0x01U)
    136 #define NWF_OPTIONAL_OID (0x02U)
    137 
    138 #define NWF_OPERATIONAL_OID (0x01U)
    139 #define NWF_STATISTICS_OID (0x02U)
    140 
    141 #define NWF_DEFINE_OID(Seq, o, m) ((0x0e000000U) | ((o) << 16) | ((m) << 8) | (Seq))
    142 
    143 #define OID_DOT11_OFFLOAD_CAPABILITY (OID_DOT11_NDIS_START + 0)
    144 
    145 #define DOT11_HW_WEP_SUPPORTED_TX 0x00000001
    146 #define DOT11_HW_WEP_SUPPORTED_RX 0x00000002
    147 #define DOT11_HW_FRAGMENTATION_SUPPORTED 0x00000004
    148 #define DOT11_HW_DEFRAGMENTATION_SUPPORTED 0x00000008
    149 #define DOT11_HW_MSDU_AUTH_SUPPORTED_TX 0x00000010
    150 #define DOT11_HW_MSDU_AUTH_SUPPORTED_RX 0x00000020
    151 
    152 #define DOT11_CONF_ALGO_WEP_RC4 0x00000001
    153 #define DOT11_CONF_ALGO_TKIP 0x00000002
    154 
    155 #define DOT11_AUTH_ALGO_MICHAEL 0x00000001
    156 
    157 #define DOT11_OPERATION_MODE_UNKNOWN 0x00000000
    158 #define DOT11_OPERATION_MODE_STATION 0x00000001
    159 #define DOT11_OPERATION_MODE_AP 0x00000002
    160 #define DOT11_OPERATION_MODE_EXTENSIBLE_STATION 0x00000004
    161 #define DOT11_OPERATION_MODE_EXTENSIBLE_AP 0x00000008
    162 #define DOT11_OPERATION_MODE_WFD_DEVICE 0x00000010
    163 #define DOT11_OPERATION_MODE_WFD_GROUP_OWNER 0x00000020
    164 #define DOT11_OPERATION_MODE_WFD_CLIENT 0x00000040
    165 #define DOT11_OPERATION_MODE_MANUFACTURING 0x40000000
    166 #define DOT11_OPERATION_MODE_NETWORK_MONITOR 0x80000000
    167 
    168 #define DOT11_PACKET_TYPE_DIRECTED_CTRL 0x00000001
    169 #define DOT11_PACKET_TYPE_DIRECTED_MGMT 0x00000002
    170 #define DOT11_PACKET_TYPE_DIRECTED_DATA 0x00000004
    171 #define DOT11_PACKET_TYPE_MULTICAST_CTRL 0x00000008
    172 #define DOT11_PACKET_TYPE_MULTICAST_MGMT 0x00000010
    173 #define DOT11_PACKET_TYPE_MULTICAST_DATA 0x00000020
    174 #define DOT11_PACKET_TYPE_BROADCAST_CTRL 0x00000040
    175 #define DOT11_PACKET_TYPE_BROADCAST_MGMT 0x00000080
    176 #define DOT11_PACKET_TYPE_BROADCAST_DATA 0x00000100
    177 #define DOT11_PACKET_TYPE_PROMISCUOUS_CTRL 0x00000200
    178 #define DOT11_PACKET_TYPE_PROMISCUOUS_MGMT 0x00000400
    179 #define DOT11_PACKET_TYPE_PROMISCUOUS_DATA 0x00000800
    180 #define DOT11_PACKET_TYPE_ALL_MULTICAST_CTRL 0x00001000
    181 #define DOT11_PACKET_TYPE_ALL_MULTICAST_MGMT 0x00002000
    182 #define DOT11_PACKET_TYPE_ALL_MULTICAST_DATA 0x00004000
    183 
    184 #define DOT11_PACKET_TYPE_RESERVED (~ (DOT11_PACKET_TYPE_DIRECTED_CTRL | DOT11_PACKET_TYPE_DIRECTED_MGMT | DOT11_PACKET_TYPE_DIRECTED_DATA | DOT11_PACKET_TYPE_MULTICAST_CTRL | DOT11_PACKET_TYPE_MULTICAST_MGMT | DOT11_PACKET_TYPE_MULTICAST_DATA | DOT11_PACKET_TYPE_BROADCAST_CTRL | DOT11_PACKET_TYPE_BROADCAST_MGMT | DOT11_PACKET_TYPE_BROADCAST_DATA | DOT11_PACKET_TYPE_PROMISCUOUS_CTRL | DOT11_PACKET_TYPE_PROMISCUOUS_MGMT | DOT11_PACKET_TYPE_PROMISCUOUS_DATA | DOT11_PACKET_TYPE_ALL_MULTICAST_CTRL | DOT11_PACKET_TYPE_ALL_MULTICAST_MGMT | DOT11_PACKET_TYPE_ALL_MULTICAST_DATA | 0))
    185 
    186 #define OID_DOT11_CURRENT_OFFLOAD_CAPABILITY (OID_DOT11_NDIS_START + 1)
    187 #define OID_DOT11_WEP_OFFLOAD (OID_DOT11_NDIS_START + 2)
    188 #define OID_DOT11_WEP_UPLOAD (OID_DOT11_NDIS_START + 3)
    189 #define OID_DOT11_DEFAULT_WEP_OFFLOAD (OID_DOT11_NDIS_START + 4)
    190 #define OID_DOT11_DEFAULT_WEP_UPLOAD (OID_DOT11_NDIS_START + 5)
    191 #define OID_DOT11_MPDU_MAX_LENGTH (OID_DOT11_NDIS_START + 6)
    192 #define OID_DOT11_OPERATION_MODE_CAPABILITY (OID_DOT11_NDIS_START + 7)
    193 #define OID_DOT11_CURRENT_OPERATION_MODE (OID_DOT11_NDIS_START + 8)
    194 #define OID_DOT11_CURRENT_PACKET_FILTER (OID_DOT11_NDIS_START + 9)
    195 
    196 typedef struct _DOT11_OFFLOAD_CAPABILITY {
    197   ULONG uReserved;
    198   ULONG uFlags;
    199   ULONG uSupportedWEPAlgorithms;
    200   ULONG uNumOfReplayWindows;
    201   ULONG uMaxWEPKeyMappingLength;
    202   ULONG uSupportedAuthAlgorithms;
    203   ULONG uMaxAuthKeyMappingLength;
    204 } DOT11_OFFLOAD_CAPABILITY, *PDOT11_OFFLOAD_CAPABILITY;
    205 
    206 typedef struct _DOT11_CURRENT_OFFLOAD_CAPABILITY {
    207   ULONG uReserved;
    208   ULONG uFlags;
    209 } DOT11_CURRENT_OFFLOAD_CAPABILITY, *PDOT11_CURRENT_OFFLOAD_CAPABILITY;
    210 
    211 typedef enum _DOT11_OFFLOAD_TYPE {
    212   dot11_offload_type_wep = 1,
    213   dot11_offload_type_auth = 2
    214 } DOT11_OFFLOAD_TYPE, *PDOT11_OFFLOAD_TYPE;
    215 
    216 typedef struct _DOT11_IV48_COUNTER {
    217   ULONG uIV32Counter;
    218   USHORT usIV16Counter;
    219 } DOT11_IV48_COUNTER, *PDOT11_IV48_COUNTER;
    220 
    221 typedef struct _DOT11_WEP_OFFLOAD {
    222   ULONG uReserved;
    223   HANDLE hOffloadContext;
    224   HANDLE hOffload;
    225   DOT11_OFFLOAD_TYPE dot11OffloadType;
    226   ULONG dwAlgorithm;
    227   BOOLEAN bRowIsOutbound;
    228   BOOLEAN bUseDefault;
    229   ULONG uFlags;
    230   UCHAR ucMacAddress[6];
    231   ULONG uNumOfRWsOnPeer;
    232   ULONG uNumOfRWsOnMe;
    233   DOT11_IV48_COUNTER dot11IV48Counters[16];
    234   USHORT usDot11RWBitMaps[16];
    235   USHORT usKeyLength;
    236   UCHAR ucKey[1];
    237 } DOT11_WEP_OFFLOAD, *PDOT11_WEP_OFFLOAD;
    238 
    239 typedef struct _DOT11_WEP_UPLOAD {
    240   ULONG uReserved;
    241   DOT11_OFFLOAD_TYPE dot11OffloadType;
    242   HANDLE hOffload;
    243   ULONG uNumOfRWsUsed;
    244   DOT11_IV48_COUNTER dot11IV48Counters[16];
    245   USHORT usDot11RWBitMaps[16];
    246 } DOT11_WEP_UPLOAD, *PDOT11_WEP_UPLOAD;
    247 
    248 typedef enum _DOT11_KEY_DIRECTION {
    249   dot11_key_direction_both = 1,
    250   dot11_key_direction_inbound = 2,
    251   dot11_key_direction_outbound = 3
    252 } DOT11_KEY_DIRECTION, *PDOT11_KEY_DIRECTION;
    253 
    254 typedef struct _DOT11_DEFAULT_WEP_OFFLOAD {
    255   ULONG uReserved;
    256   HANDLE hOffloadContext;
    257   HANDLE hOffload;
    258   ULONG dwIndex;
    259   DOT11_OFFLOAD_TYPE dot11OffloadType;
    260   ULONG dwAlgorithm;
    261   ULONG uFlags;
    262   DOT11_KEY_DIRECTION dot11KeyDirection;
    263   UCHAR ucMacAddress[6];
    264   ULONG uNumOfRWsOnMe;
    265   DOT11_IV48_COUNTER dot11IV48Counters[16];
    266   USHORT usDot11RWBitMaps[16];
    267   USHORT usKeyLength;
    268   UCHAR ucKey[1];
    269 } DOT11_DEFAULT_WEP_OFFLOAD, *PDOT11_DEFAULT_WEP_OFFLOAD;
    270 
    271 typedef struct _DOT11_DEFAULT_WEP_UPLOAD {
    272   ULONG uReserved;
    273   DOT11_OFFLOAD_TYPE dot11OffloadType;
    274   HANDLE hOffload;
    275   ULONG uNumOfRWsUsed;
    276   DOT11_IV48_COUNTER dot11IV48Counters[16];
    277   USHORT usDot11RWBitMaps[16];
    278 } DOT11_DEFAULT_WEP_UPLOAD, *PDOT11_DEFAULT_WEP_UPLOAD;
    279 
    280 typedef struct _DOT11_OPERATION_MODE_CAPABILITY {
    281   ULONG uReserved;
    282   ULONG uMajorVersion;
    283   ULONG uMinorVersion;
    284   ULONG uNumOfTXBuffers;
    285   ULONG uNumOfRXBuffers;
    286   ULONG uOpModeCapability;
    287 } DOT11_OPERATION_MODE_CAPABILITY, *PDOT11_OPERATION_MODE_CAPABILITY;
    288 
    289 typedef struct _DOT11_CURRENT_OPERATION_MODE {
    290   ULONG uReserved;
    291   ULONG uCurrentOpMode;
    292 } DOT11_CURRENT_OPERATION_MODE, *PDOT11_CURRENT_OPERATION_MODE;
    293 
    294 typedef enum _DOT11_SCAN_TYPE {
    295   dot11_scan_type_active = 1,
    296   dot11_scan_type_passive = 2,
    297   dot11_scan_type_auto = 3,
    298   dot11_scan_type_forced = 0x80000000
    299 } DOT11_SCAN_TYPE, *PDOT11_SCAN_TYPE;
    300 
    301 typedef struct _DOT11_SCAN_REQUEST {
    302   DOT11_BSS_TYPE dot11BSSType;
    303   DOT11_MAC_ADDRESS dot11BSSID;
    304   DOT11_SSID dot11SSID;
    305   DOT11_SCAN_TYPE dot11ScanType;
    306   BOOLEAN bRestrictedScan;
    307   BOOLEAN bUseRequestIE;
    308   ULONG uRequestIDsOffset;
    309   ULONG uNumOfRequestIDs;
    310   ULONG uPhyTypesOffset;
    311   ULONG uNumOfPhyTypes;
    312   ULONG uIEsOffset;
    313   ULONG uIEsLength;
    314   UCHAR ucBuffer[1];
    315 } DOT11_SCAN_REQUEST, *PDOT11_SCAN_REQUEST;
    316 
    317 typedef enum _CH_DESCRIPTION_TYPE {
    318   ch_description_type_logical = 1,
    319   ch_description_type_center_frequency = 2,
    320   ch_description_type_phy_specific
    321 } CH_DESCRIPTION_TYPE, *PCH_DESCRIPTION_TYPE;
    322 
    323 typedef struct _DOT11_PHY_TYPE_INFO {
    324   DOT11_PHY_TYPE dot11PhyType;
    325   BOOLEAN bUseParameters;
    326   ULONG uProbeDelay;
    327   ULONG uMinChannelTime;
    328   ULONG uMaxChannelTime;
    329   CH_DESCRIPTION_TYPE ChDescriptionType;
    330   ULONG uChannelListSize;
    331   UCHAR ucChannelListBuffer[1];
    332 } DOT11_PHY_TYPE_INFO, *PDOT11_PHY_TYPE_INFO;
    333 
    334 typedef struct _DOT11_SCAN_REQUEST_V2 {
    335   DOT11_BSS_TYPE dot11BSSType;
    336   DOT11_MAC_ADDRESS dot11BSSID;
    337   DOT11_SCAN_TYPE dot11ScanType;
    338   BOOLEAN bRestrictedScan;
    339   ULONG udot11SSIDsOffset;
    340   ULONG uNumOfdot11SSIDs;
    341   BOOLEAN bUseRequestIE;
    342   ULONG uRequestIDsOffset;
    343   ULONG uNumOfRequestIDs;
    344   ULONG uPhyTypeInfosOffset;
    345   ULONG uNumOfPhyTypeInfos;
    346   ULONG uIEsOffset;
    347   ULONG uIEsLength;
    348   UCHAR ucBuffer[1];
    349 } DOT11_SCAN_REQUEST_V2, *PDOT11_SCAN_REQUEST_V2;
    350 
    351 typedef struct DOT11_PHY_TYPE_LIST {
    352   NDIS_OBJECT_HEADER Header;
    353   ULONG uNumOfEntries;
    354   ULONG uTotalNumOfEntries;
    355   DOT11_PHY_TYPE dot11PhyType[1];
    356 } DOT11_PHY_TYPE_LIST, *PDOT11_PHY_TYPE_LIST;
    357 
    358 #define DOT11_PHY_TYPE_LIST_REVISION_1 1
    359 
    360 #define DOT11_CAPABILITY_INFO_ESS 0x0001
    361 #define DOT11_CAPABILITY_INFO_IBSS 0x0002
    362 #define DOT11_CAPABILITY_INFO_CF_POLLABLE 0x0004
    363 #define DOT11_CAPABILITY_INFO_CF_POLL_REQ 0x0008
    364 #define DOT11_CAPABILITY_INFO_PRIVACY 0x0010
    365 #define DOT11_CAPABILITY_SHORT_PREAMBLE 0x0020
    366 #define DOT11_CAPABILITY_PBCC 0x0040
    367 #define DOT11_CAPABILITY_CHANNEL_AGILITY 0x0080
    368 #define DOT11_CAPABILITY_SHORT_SLOT_TIME 0x0400
    369 #define DOT11_CAPABILITY_DSSSOFDM 0x2000
    370 
    371 #define OID_DOT11_ATIM_WINDOW (OID_DOT11_NDIS_START + 10)
    372 #define OID_DOT11_SCAN_REQUEST (OID_DOT11_NDIS_START + 11)
    373 #define OID_DOT11_CURRENT_PHY_TYPE (OID_DOT11_NDIS_START + 12)
    374 #define OID_DOT11_JOIN_REQUEST (OID_DOT11_NDIS_START + 13)
    375 #define OID_DOT11_START_REQUEST (OID_DOT11_NDIS_START + 14)
    376 #define OID_DOT11_UPDATE_IE (OID_DOT11_NDIS_START + 15)
    377 #define OID_DOT11_RESET_REQUEST (OID_DOT11_NDIS_START + 16)
    378 
    379 typedef struct _DOT11_BSS_DESCRIPTION {
    380   ULONG uReserved;
    381   DOT11_MAC_ADDRESS dot11BSSID;
    382   DOT11_BSS_TYPE dot11BSSType;
    383   USHORT usBeaconPeriod;
    384   ULONGLONG ullTimestamp;
    385   USHORT usCapabilityInformation;
    386   ULONG uBufferLength;
    387 #ifdef __WIDL__
    388   [unique, size_is (uBufferLength)] UCHAR ucBuffer[*];
    389 #else
    390   UCHAR ucBuffer[1];
    391 #endif
    392 } DOT11_BSS_DESCRIPTION, *PDOT11_BSS_DESCRIPTION;
    393 
    394 typedef struct _DOT11_JOIN_REQUEST {
    395   ULONG uJoinFailureTimeout;
    396   DOT11_RATE_SET OperationalRateSet;
    397   ULONG uChCenterFrequency;
    398   DOT11_BSS_DESCRIPTION dot11BSSDescription;
    399 } DOT11_JOIN_REQUEST, *PDOT11_JOIN_REQUEST;
    400 
    401 typedef struct _DOT11_START_REQUEST {
    402   ULONG uStartFailureTimeout;
    403   DOT11_RATE_SET OperationalRateSet;
    404   ULONG uChCenterFrequency;
    405   DOT11_BSS_DESCRIPTION dot11BSSDescription;
    406 } DOT11_START_REQUEST, *PDOT11_START_REQUEST;
    407 
    408 typedef enum _DOT11_UPDATE_IE_OP {
    409   dot11_update_ie_op_create_replace = 1,
    410   dot11_update_ie_op_delete = 2
    411 } DOT11_UPDATE_IE_OP, *PDOT11_UPDATE_IE_OP;
    412 
    413 typedef struct _DOT11_UPDATE_IE {
    414   DOT11_UPDATE_IE_OP dot11UpdateIEOp;
    415   ULONG uBufferLength;
    416   UCHAR ucBuffer[1];
    417 } DOT11_UPDATE_IE, *PDOT11_UPDATE_IE;
    418 
    419 typedef enum _DOT11_RESET_TYPE {
    420   dot11_reset_type_phy = 1,
    421   dot11_reset_type_mac = 2,
    422   dot11_reset_type_phy_and_mac = 3
    423 } DOT11_RESET_TYPE, *PDOT11_RESET_TYPE;
    424 
    425 typedef struct _DOT11_RESET_REQUEST {
    426   DOT11_RESET_TYPE dot11ResetType;
    427   DOT11_MAC_ADDRESS dot11MacAddress;
    428   BOOLEAN bSetDefaultMIB;
    429 } DOT11_RESET_REQUEST, *PDOT11_RESET_REQUEST;
    430 
    431 typedef struct _DOT11_OPTIONAL_CAPABILITY {
    432   ULONG uReserved;
    433   BOOLEAN bDot11PCF;
    434   BOOLEAN bDot11PCFMPDUTransferToPC;
    435   BOOLEAN bStrictlyOrderedServiceClass;
    436 } DOT11_OPTIONAL_CAPABILITY, *PDOT11_OPTIONAL_CAPABILITY;
    437 
    438 #define OID_DOT11_NIC_POWER_STATE (OID_DOT11_NDIS_START + 17)
    439 #define OID_DOT11_OPTIONAL_CAPABILITY (OID_DOT11_NDIS_START + 18)
    440 #define OID_DOT11_CURRENT_OPTIONAL_CAPABILITY (OID_DOT11_NDIS_START + 19)
    441 #define OID_DOT11_STATION_ID (OID_DOT11_NDIS_START + 20)
    442 #define OID_DOT11_MEDIUM_OCCUPANCY_LIMIT (OID_DOT11_NDIS_START + 21)
    443 #define OID_DOT11_CF_POLLABLE (OID_DOT11_NDIS_START + 22)
    444 #define OID_DOT11_CFP_PERIOD (OID_DOT11_NDIS_START + 23)
    445 #define OID_DOT11_CFP_MAX_DURATION (OID_DOT11_NDIS_START + 24)
    446 #define OID_DOT11_POWER_MGMT_MODE (OID_DOT11_NDIS_START + 25)
    447 #define OID_DOT11_OPERATIONAL_RATE_SET (OID_DOT11_NDIS_START + 26)
    448 #define OID_DOT11_BEACON_PERIOD (OID_DOT11_NDIS_START + 27)
    449 #define OID_DOT11_DTIM_PERIOD (OID_DOT11_NDIS_START + 28)
    450 #define OID_DOT11_WEP_ICV_ERROR_COUNT (OID_DOT11_NDIS_START + 29)
    451 #define OID_DOT11_MAC_ADDRESS (OID_DOT11_NDIS_START + 30)
    452 #define OID_DOT11_RTS_THRESHOLD (OID_DOT11_NDIS_START + 31)
    453 #define OID_DOT11_SHORT_RETRY_LIMIT (OID_DOT11_NDIS_START + 32)
    454 #define OID_DOT11_LONG_RETRY_LIMIT (OID_DOT11_NDIS_START + 33)
    455 #define OID_DOT11_FRAGMENTATION_THRESHOLD (OID_DOT11_NDIS_START + 34)
    456 #define OID_DOT11_MAX_TRANSMIT_MSDU_LIFETIME (OID_DOT11_NDIS_START + 35)
    457 #define OID_DOT11_MAX_RECEIVE_LIFETIME (OID_DOT11_NDIS_START + 36)
    458 #define OID_DOT11_COUNTERS_ENTRY (OID_DOT11_NDIS_START + 37)
    459 
    460 typedef struct _DOT11_CURRENT_OPTIONAL_CAPABILITY {
    461   ULONG uReserved;
    462   BOOLEAN bDot11CFPollable;
    463   BOOLEAN bDot11PCF;
    464   BOOLEAN bDot11PCFMPDUTransferToPC;
    465   BOOLEAN bStrictlyOrderedServiceClass;
    466 } DOT11_CURRENT_OPTIONAL_CAPABILITY, *PDOT11_CURRENT_OPTIONAL_CAPABILITY;
    467 
    468 typedef enum _DOT11_POWER_MODE {
    469   dot11_power_mode_unknown = 0,
    470   dot11_power_mode_active = 1,
    471   dot11_power_mode_powersave = 2
    472 } DOT11_POWER_MODE, *PDOT11_POWER_MODE;
    473 
    474 #define DOT11_POWER_SAVE_LEVEL_MAX_PSP 1
    475 #define DOT11_POWER_SAVE_LEVEL_FAST_PSP 2
    476 
    477 typedef struct _DOT11_POWER_MGMT_MODE {
    478   DOT11_POWER_MODE dot11PowerMode;
    479   ULONG uPowerSaveLevel;
    480   USHORT usListenInterval;
    481   USHORT usAID;
    482   BOOLEAN bReceiveDTIMs;
    483 } DOT11_POWER_MGMT_MODE, *PDOT11_POWER_MGMT_MODE;
    484 
    485 typedef struct _DOT11_COUNTERS_ENTRY {
    486   ULONG uTransmittedFragmentCount;
    487   ULONG uMulticastTransmittedFrameCount;
    488   ULONG uFailedCount;
    489   ULONG uRetryCount;
    490   ULONG uMultipleRetryCount;
    491   ULONG uFrameDuplicateCount;
    492   ULONG uRTSSuccessCount;
    493   ULONG uRTSFailureCount;
    494   ULONG uACKFailureCount;
    495   ULONG uReceivedFragmentCount;
    496   ULONG uMulticastReceivedFrameCount;
    497   ULONG uFCSErrorCount;
    498   ULONG uTransmittedFrameCount;
    499 } DOT11_COUNTERS_ENTRY, *PDOT11_COUNTERS_ENTRY;
    500 
    501 #define OID_DOT11_SUPPORTED_PHY_TYPES (OID_DOT11_NDIS_START + 38)
    502 typedef struct _DOT11_SUPPORTED_PHY_TYPES {
    503   ULONG uNumOfEntries;
    504   ULONG uTotalNumOfEntries;
    505   DOT11_PHY_TYPE dot11PHYType[1];
    506 } DOT11_SUPPORTED_PHY_TYPES, *PDOT11_SUPPORTED_PHY_TYPES;
    507 
    508 #define OID_DOT11_CURRENT_REG_DOMAIN (OID_DOT11_NDIS_START + 39)
    509 #define OID_DOT11_TEMP_TYPE (OID_DOT11_NDIS_START + 40)
    510 #define OID_DOT11_CURRENT_TX_ANTENNA (OID_DOT11_NDIS_START + 41)
    511 #define OID_DOT11_DIVERSITY_SUPPORT (OID_DOT11_NDIS_START + 42)
    512 #define OID_DOT11_CURRENT_RX_ANTENNA (OID_DOT11_NDIS_START + 43)
    513 #define OID_DOT11_SUPPORTED_POWER_LEVELS (OID_DOT11_NDIS_START + 44)
    514 #define OID_DOT11_CURRENT_TX_POWER_LEVEL (OID_DOT11_NDIS_START + 45)
    515 #define OID_DOT11_HOP_TIME (OID_DOT11_NDIS_START + 46)
    516 #define OID_DOT11_CURRENT_CHANNEL_NUMBER (OID_DOT11_NDIS_START + 47)
    517 #define OID_DOT11_MAX_DWELL_TIME (OID_DOT11_NDIS_START + 48)
    518 #define OID_DOT11_CURRENT_DWELL_TIME (OID_DOT11_NDIS_START + 49)
    519 #define OID_DOT11_CURRENT_SET (OID_DOT11_NDIS_START + 50)
    520 #define OID_DOT11_CURRENT_PATTERN (OID_DOT11_NDIS_START + 51)
    521 #define OID_DOT11_CURRENT_INDEX (OID_DOT11_NDIS_START + 52)
    522 #define OID_DOT11_CURRENT_CHANNEL (OID_DOT11_NDIS_START + 53)
    523 #define OID_DOT11_CCA_MODE_SUPPORTED (OID_DOT11_NDIS_START + 54)
    524 #define OID_DOT11_CURRENT_CCA_MODE (OID_DOT11_NDIS_START + 55)
    525 #define OID_DOT11_ED_THRESHOLD (OID_DOT11_NDIS_START + 56)
    526 #define OID_DOT11_CCA_WATCHDOG_TIMER_MAX (OID_DOT11_NDIS_START + 57)
    527 #define OID_DOT11_CCA_WATCHDOG_COUNT_MAX (OID_DOT11_NDIS_START + 58)
    528 #define OID_DOT11_CCA_WATCHDOG_TIMER_MIN (OID_DOT11_NDIS_START + 59)
    529 #define OID_DOT11_CCA_WATCHDOG_COUNT_MIN (OID_DOT11_NDIS_START + 60)
    530 #define OID_DOT11_REG_DOMAINS_SUPPORT_VALUE (OID_DOT11_NDIS_START + 61)
    531 #define OID_DOT11_SUPPORTED_TX_ANTENNA (OID_DOT11_NDIS_START + 62)
    532 #define OID_DOT11_SUPPORTED_RX_ANTENNA (OID_DOT11_NDIS_START + 63)
    533 #define OID_DOT11_DIVERSITY_SELECTION_RX (OID_DOT11_NDIS_START + 64)
    534 #define OID_DOT11_SUPPORTED_DATA_RATES_VALUE (OID_DOT11_NDIS_START + 65)
    535 #define OID_DOT11_CURRENT_FREQUENCY (OID_DOT11_NDIS_START + 66)
    536 #define OID_DOT11_TI_THRESHOLD (OID_DOT11_NDIS_START + 67)
    537 #define OID_DOT11_FREQUENCY_BANDS_SUPPORTED (OID_DOT11_NDIS_START + 68)
    538 #define OID_DOT11_SHORT_PREAMBLE_OPTION_IMPLEMENTED (OID_DOT11_NDIS_START + 69)
    539 #define OID_DOT11_PBCC_OPTION_IMPLEMENTED (OID_DOT11_NDIS_START + 70)
    540 #define OID_DOT11_CHANNEL_AGILITY_PRESENT (OID_DOT11_NDIS_START + 71)
    541 #define OID_DOT11_CHANNEL_AGILITY_ENABLED (OID_DOT11_NDIS_START + 72)
    542 #define OID_DOT11_HR_CCA_MODE_SUPPORTED (OID_DOT11_NDIS_START + 73)
    543 #define OID_DOT11_MULTI_DOMAIN_CAPABILITY_IMPLEMENTED (OID_DOT11_NDIS_START + 74)
    544 #define OID_DOT11_MULTI_DOMAIN_CAPABILITY_ENABLED (OID_DOT11_NDIS_START + 75)
    545 #define OID_DOT11_COUNTRY_STRING (OID_DOT11_NDIS_START + 76)
    546 
    547 #define DOT11_REG_DOMAIN_OTHER 0x00000000
    548 #define DOT11_REG_DOMAIN_FCC 0x00000010
    549 #define DOT11_REG_DOMAIN_DOC 0x00000020
    550 #define DOT11_REG_DOMAIN_ETSI 0x00000030
    551 #define DOT11_REG_DOMAIN_SPAIN 0x00000031
    552 #define DOT11_REG_DOMAIN_FRANCE 0x00000032
    553 #define DOT11_REG_DOMAIN_MKK 0x00000040
    554 
    555 typedef enum _DOT11_TEMP_TYPE {
    556   dot11_temp_type_unknown = 0,
    557   dot11_temp_type_1 = 1,
    558   dot11_temp_type_2 = 2
    559 } DOT11_TEMP_TYPE, *PDOT11_TEMP_TYPE;
    560 
    561 typedef enum _DOT11_DIVERSITY_SUPPORT {
    562   dot11_diversity_support_unknown = 0,
    563   dot11_diversity_support_fixedlist = 1,
    564   dot11_diversity_support_notsupported = 2,
    565   dot11_diversity_support_dynamic = 3
    566 } DOT11_DIVERSITY_SUPPORT, *PDOT11_DIVERSITY_SUPPORT;
    567 
    568 typedef struct _DOT11_SUPPORTED_POWER_LEVELS {
    569   ULONG uNumOfSupportedPowerLevels;
    570   ULONG uTxPowerLevelValues[8];
    571 } DOT11_SUPPORTED_POWER_LEVELS, *PDOT11_SUPPORTED_POWER_LEVELS;
    572 
    573 #define DOT11_CCA_MODE_ED_ONLY 0x00000001
    574 #define DOT11_CCA_MODE_CS_ONLY 0x00000002
    575 #define DOT11_CCA_MODE_ED_and_CS 0x00000004
    576 #define DOT11_CCA_MODE_CS_WITH_TIMER 0x00000008
    577 #define DOT11_CCA_MODE_HRCS_AND_ED 0x00000010
    578 
    579 typedef struct _DOT11_REG_DOMAIN_VALUE {
    580   ULONG uRegDomainsSupportIndex;
    581   ULONG uRegDomainsSupportValue;
    582 } DOT11_REG_DOMAIN_VALUE, *PDOT11_REG_DOMAIN_VALUE;
    583 
    584 typedef struct _DOT11_REG_DOMAINS_SUPPORT_VALUE {
    585   ULONG uNumOfEntries;
    586   ULONG uTotalNumOfEntries;
    587   DOT11_REG_DOMAIN_VALUE dot11RegDomainValue[1];
    588 } DOT11_REG_DOMAINS_SUPPORT_VALUE, *PDOT11_REG_DOMAINS_SUPPORT_VALUE;
    589 
    590 typedef struct _DOT11_SUPPORTED_ANTENNA {
    591   ULONG uAntennaListIndex;
    592   BOOLEAN bSupportedAntenna;
    593 } DOT11_SUPPORTED_ANTENNA, *PDOT11_SUPPORTED_ANTENNA;
    594 
    595 typedef struct _DOT11_SUPPORTED_ANTENNA_LIST {
    596   ULONG uNumOfEntries;
    597   ULONG uTotalNumOfEntries;
    598   DOT11_SUPPORTED_ANTENNA dot11SupportedAntenna[1];
    599 } DOT11_SUPPORTED_ANTENNA_LIST, *PDOT11_SUPPORTED_ANTENNA_LIST;
    600 
    601 typedef struct _DOT11_DIVERSITY_SELECTION_RX {
    602   ULONG uAntennaListIndex;
    603   BOOLEAN bDiversitySelectionRX;
    604 } DOT11_DIVERSITY_SELECTION_RX, *PDOT11_DIVERSITY_SELECTION_RX;
    605 
    606 typedef struct _DOT11_DIVERSITY_SELECTION_RX_LIST {
    607   ULONG uNumOfEntries;
    608   ULONG uTotalNumOfEntries;
    609   DOT11_DIVERSITY_SELECTION_RX dot11DiversitySelectionRx[1];
    610 } DOT11_DIVERSITY_SELECTION_RX_LIST, *PDOT11_DIVERSITY_SELECTION_RX_LIST;
    611 
    612 #define MAX_NUM_SUPPORTED_RATES 8
    613 #define MAX_NUM_SUPPORTED_RATES_V2 255
    614 
    615 typedef struct _DOT11_SUPPORTED_DATA_RATES_VALUE {
    616   UCHAR ucSupportedTxDataRatesValue[MAX_NUM_SUPPORTED_RATES];
    617   UCHAR ucSupportedRxDataRatesValue[MAX_NUM_SUPPORTED_RATES];
    618 } DOT11_SUPPORTED_DATA_RATES_VALUE, *PDOT11_SUPPORTED_DATA_RATES_VALUE;
    619 
    620 typedef struct _DOT11_SUPPORTED_DATA_RATES_VALUE_V2 {
    621   UCHAR ucSupportedTxDataRatesValue[MAX_NUM_SUPPORTED_RATES_V2];
    622   UCHAR ucSupportedRxDataRatesValue[MAX_NUM_SUPPORTED_RATES_V2];
    623 } DOT11_SUPPORTED_DATA_RATES_VALUE_V2, *PDOT11_SUPPORTED_DATA_RATES_VALUE_V2;
    624 
    625 typedef DOT11_SUPPORTED_DATA_RATES_VALUE_V2 DOT11_SUPPORTED_DATA_RATES_VALUE_V1, *PDOT11_SUPPORTED_DATA_RATES_VALUE_V1;
    626 
    627 #define DOT11_FREQUENCY_BANDS_LOWER 0x00000001
    628 #define DOT11_FREQUENCY_BANDS_MIDDLE 0x00000002
    629 #define DOT11_FREQUENCY_BANDS_UPPER 0x00000004
    630 
    631 #define DOT11_HR_CCA_MODE_ED_ONLY 0x00000001
    632 #define DOT11_HR_CCA_MODE_CS_ONLY 0x00000002
    633 #define DOT11_HR_CCA_MODE_CS_AND_ED 0x00000004
    634 #define DOT11_HR_CCA_MODE_CS_WITH_TIMER 0x00000008
    635 #define DOT11_HR_CCA_MODE_HRCS_AND_ED 0x00000010
    636 
    637 typedef struct _DOT11_MULTI_DOMAIN_CAPABILITY_ENTRY {
    638   ULONG uMultiDomainCapabilityIndex;
    639   ULONG uFirstChannelNumber;
    640   ULONG uNumberOfChannels;
    641   LONG lMaximumTransmitPowerLevel;
    642 } DOT11_MULTI_DOMAIN_CAPABILITY_ENTRY, *PDOT11_MULTI_DOMAIN_CAPABILITY_ENTRY;
    643 
    644 typedef struct _DOT11_MD_CAPABILITY_ENTRY_LIST {
    645   ULONG uNumOfEntries;
    646   ULONG uTotalNumOfEntries;
    647   DOT11_MULTI_DOMAIN_CAPABILITY_ENTRY dot11MDCapabilityEntry[1];
    648 } DOT11_MD_CAPABILITY_ENTRY_LIST, *PDOT11_MD_CAPABILITY_ENTRY_LIST;
    649 
    650 #define OID_DOT11_MULTI_DOMAIN_CAPABILITY (OID_DOT11_NDIS_START + 77)
    651 #define OID_DOT11_EHCC_PRIME_RADIX (OID_DOT11_NDIS_START + 78)
    652 #define OID_DOT11_EHCC_NUMBER_OF_CHANNELS_FAMILY_INDEX (OID_DOT11_NDIS_START + 79)
    653 #define OID_DOT11_EHCC_CAPABILITY_IMPLEMENTED (OID_DOT11_NDIS_START + 80)
    654 #define OID_DOT11_EHCC_CAPABILITY_ENABLED (OID_DOT11_NDIS_START + 81)
    655 #define OID_DOT11_HOP_ALGORITHM_ADOPTED (OID_DOT11_NDIS_START + 82)
    656 #define OID_DOT11_RANDOM_TABLE_FLAG (OID_DOT11_NDIS_START + 83)
    657 #define OID_DOT11_NUMBER_OF_HOPPING_SETS (OID_DOT11_NDIS_START + 84)
    658 #define OID_DOT11_HOP_MODULUS (OID_DOT11_NDIS_START + 85)
    659 #define OID_DOT11_HOP_OFFSET (OID_DOT11_NDIS_START + 86)
    660 #define OID_DOT11_HOPPING_PATTERN (OID_DOT11_NDIS_START + 87)
    661 #define OID_DOT11_RANDOM_TABLE_FIELD_NUMBER (OID_DOT11_NDIS_START + 88)
    662 #define OID_DOT11_WPA_TSC (OID_DOT11_NDIS_START + 89)
    663 #define OID_DOT11_RSSI_RANGE (OID_DOT11_NDIS_START + 90)
    664 #define OID_DOT11_RF_USAGE (OID_DOT11_NDIS_START + 91)
    665 #define OID_DOT11_NIC_SPECIFIC_EXTENSION (OID_DOT11_NDIS_START + 92)
    666 #define OID_DOT11_AP_JOIN_REQUEST (OID_DOT11_NDIS_START + 93)
    667 #define OID_DOT11_ERP_PBCC_OPTION_IMPLEMENTED (OID_DOT11_NDIS_START + 94)
    668 #define OID_DOT11_ERP_PBCC_OPTION_ENABLED (OID_DOT11_NDIS_START + 95)
    669 #define OID_DOT11_DSSS_OFDM_OPTION_IMPLEMENTED (OID_DOT11_NDIS_START + 96)
    670 #define OID_DOT11_DSSS_OFDM_OPTION_ENABLED (OID_DOT11_NDIS_START + 97)
    671 #define OID_DOT11_SHORT_SLOT_TIME_OPTION_IMPLEMENTED (OID_DOT11_NDIS_START + 98)
    672 #define OID_DOT11_SHORT_SLOT_TIME_OPTION_ENABLED (OID_DOT11_NDIS_START + 99)
    673 #define OID_DOT11_MAX_MAC_ADDRESS_STATES (OID_DOT11_NDIS_START + 100)
    674 #define OID_DOT11_RECV_SENSITIVITY_LIST (OID_DOT11_NDIS_START + 101)
    675 
    676 typedef enum _DOT11_HOP_ALGO_ADOPTED {
    677   dot11_hop_algo_current = 0,
    678   dot11_hop_algo_hop_index = 1,
    679   dot11_hop_algo_hcc = 2
    680 } DOT11_HOP_ALGO_ADOPTED, *PDOT11_HOP_ALGO_ADOPTED;
    681 
    682 typedef struct _DOT11_HOPPING_PATTERN_ENTRY {
    683   ULONG uHoppingPatternIndex;
    684   ULONG uRandomTableFieldNumber;
    685 } DOT11_HOPPING_PATTERN_ENTRY, *PDOT11_HOPPING_PATTERN_ENTRY;
    686 
    687 typedef struct _DOT11_HOPPING_PATTERN_ENTRY_LIST {
    688   ULONG uNumOfEntries;
    689   ULONG uTotalNumOfEntries;
    690   DOT11_HOPPING_PATTERN_ENTRY dot11HoppingPatternEntry[1];
    691 } DOT11_HOPPING_PATTERN_ENTRY_LIST, *PDOT11_HOPPING_PATTERN_ENTRY_LIST;
    692 
    693 typedef struct _DOT11_WPA_TSC {
    694   ULONG uReserved;
    695   DOT11_OFFLOAD_TYPE dot11OffloadType;
    696   HANDLE hOffload;
    697   DOT11_IV48_COUNTER dot11IV48Counter;
    698 } DOT11_WPA_TSC, *PDOT11_WPA_TSC;
    699 
    700 typedef struct _DOT11_RSSI_RANGE {
    701   DOT11_PHY_TYPE dot11PhyType;
    702   ULONG uRSSIMin;
    703   ULONG uRSSIMax;
    704 } DOT11_RSSI_RANGE, *PDOT11_RSSI_RANGE;
    705 
    706 typedef struct _DOT11_NIC_SPECIFIC_EXTENSION {
    707   ULONG uBufferLength;
    708   ULONG uTotalBufferLength;
    709   UCHAR ucBuffer[1];
    710 } DOT11_NIC_SPECIFIC_EXTENSION, *PDOT11_NIC_SPECIFIC_EXTENSION;
    711 
    712 typedef struct _DOT11_AP_JOIN_REQUEST {
    713   ULONG uJoinFailureTimeout;
    714   DOT11_RATE_SET OperationalRateSet;
    715   ULONG uChCenterFrequency;
    716   DOT11_BSS_DESCRIPTION dot11BSSDescription;
    717 } DOT11_AP_JOIN_REQUEST, *PDOT11_AP_JOIN_REQUEST;
    718 
    719 typedef struct _DOT11_RECV_SENSITIVITY {
    720   UCHAR ucDataRate;
    721   LONG lRSSIMin;
    722   LONG lRSSIMax;
    723 } DOT11_RECV_SENSITIVITY, *PDOT11_RECV_SENSITIVITY;
    724 
    725 typedef struct _DOT11_RECV_SENSITIVITY_LIST {
    726   __C89_NAMELESS union {
    727     DOT11_PHY_TYPE dot11PhyType;
    728     ULONG uPhyId;
    729   };
    730   ULONG uNumOfEntries;
    731   ULONG uTotalNumOfEntries;
    732   DOT11_RECV_SENSITIVITY dot11RecvSensitivity[1];
    733 } DOT11_RECV_SENSITIVITY_LIST, *PDOT11_RECV_SENSITIVITY_LIST;
    734 
    735 #define OID_DOT11_WME_IMPLEMENTED (OID_DOT11_NDIS_START + 102)
    736 #define OID_DOT11_WME_ENABLED (OID_DOT11_NDIS_START + 103)
    737 #define OID_DOT11_WME_AC_PARAMETERS (OID_DOT11_NDIS_START + 104)
    738 #define OID_DOT11_WME_UPDATE_IE (OID_DOT11_NDIS_START + 105)
    739 #define OID_DOT11_QOS_TX_QUEUES_SUPPORTED (OID_DOT11_NDIS_START + 106)
    740 #define OID_DOT11_QOS_TX_DURATION (OID_DOT11_NDIS_START + 107)
    741 
    742 typedef enum _DOT11_AC_PARAM {
    743   dot11_AC_param_BE = 0,
    744   dot11_AC_param_BK = 1,
    745   dot11_AC_param_VI = 2,
    746   dot11_AC_param_VO = 3,
    747   dot11_AC_param_max
    748 } DOT11_AC_PARAM, *PDOT11_AC_PARAM;
    749 
    750 typedef struct _DOT11_WME_AC_PARAMETERS {
    751   UCHAR ucAccessCategoryIndex;
    752   UCHAR ucAIFSN;
    753   UCHAR ucECWmin;
    754   UCHAR ucECWmax;
    755   USHORT usTXOPLimit;
    756 } DOT11_WME_AC_PARAMETERS, *PDOT11_WME_AC_PARAMETERS;
    757 
    758 typedef struct _DOT11_WME_AC_PARAMTERS_LIST {
    759   ULONG uNumOfEntries;
    760   ULONG uTotalNumOfEntries;
    761   DOT11_WME_AC_PARAMETERS dot11WMEACParameters[1];
    762 } DOT11_WME_AC_PARAMETERS_LIST, *PDOT11_WME_AC_PARAMETERS_LIST;
    763 
    764 typedef struct _DOT11_WME_UPDATE_IE {
    765   ULONG uParamElemMinBeaconIntervals;
    766   ULONG uWMEInfoElemOffset;
    767   ULONG uWMEInfoElemLength;
    768   ULONG uWMEParamElemOffset;
    769   ULONG uWMEParamElemLength;
    770   UCHAR ucBuffer[1];
    771 } DOT11_WME_UPDATE_IE, *PDOT11_WME_UPDATE_IE;
    772 
    773 typedef struct _DOT11_QOS_TX_DURATION {
    774   ULONG uNominalMSDUSize;
    775   ULONG uMinPHYRate;
    776   ULONG uDuration;
    777 } DOT11_QOS_TX_DURATION, *PDOT11_QOS_TX_DURATION;
    778 
    779 typedef struct _DOT11_QOS_TX_MEDIUM_TIME {
    780   DOT11_MAC_ADDRESS dot11PeerAddress;
    781   UCHAR ucQoSPriority;
    782   ULONG uMediumTimeAdmited;
    783 } DOT11_QOS_TX_MEDIUM_TIME, *PDOT11_QOS_TX_MEDIUM_TIME;
    784 
    785 typedef struct _DOT11_SUPPORTED_OFDM_FREQUENCY {
    786   ULONG uCenterFrequency;
    787 } DOT11_SUPPORTED_OFDM_FREQUENCY, *PDOT11_SUPPORTED_OFDM_FREQUENCY;
    788 
    789 typedef struct _DOT11_SUPPORTED_OFDM_FREQUENCY_LIST {
    790   ULONG uNumOfEntries;
    791   ULONG uTotalNumOfEntries;
    792   DOT11_SUPPORTED_OFDM_FREQUENCY dot11SupportedOFDMFrequency[1];
    793 } DOT11_SUPPORTED_OFDM_FREQUENCY_LIST, *PDOT11_SUPPORTED_OFDM_FREQUENCY_LIST;
    794 
    795 typedef struct _DOT11_SUPPORTED_DSSS_CHANNEL {
    796   ULONG uChannel;
    797 } DOT11_SUPPORTED_DSSS_CHANNEL, *PDOT11_SUPPORTED_DSSS_CHANNEL;
    798 
    799 typedef struct _DOT11_SUPPORTED_DSSS_CHANNEL_LIST {
    800   ULONG uNumOfEntries;
    801   ULONG uTotalNumOfEntries;
    802   DOT11_SUPPORTED_DSSS_CHANNEL dot11SupportedDSSSChannel[1];
    803 } DOT11_SUPPORTED_DSSS_CHANNEL_LIST, *PDOT11_SUPPORTED_DSSS_CHANNEL_LIST;
    804 
    805 typedef struct DOT11_BYTE_ARRAY {
    806   NDIS_OBJECT_HEADER Header;
    807   ULONG uNumOfBytes;
    808   ULONG uTotalNumOfBytes;
    809   UCHAR ucBuffer[1];
    810 } DOT11_BYTE_ARRAY, *PDOT11_BYTE_ARRAY;
    811 
    812 #define OID_DOT11_QOS_TX_MEDIUM_TIME (OID_DOT11_NDIS_START + 108)
    813 #define OID_DOT11_SUPPORTED_OFDM_FREQUENCY_LIST (OID_DOT11_NDIS_START + 109)
    814 #define OID_DOT11_SUPPORTED_DSSS_CHANNEL_LIST (OID_DOT11_NDIS_START + 110)
    815 
    816 #define OID_DOT11_AUTO_CONFIG_ENABLED NWF_DEFINE_OID (120, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
    817 #define OID_DOT11_ENUM_BSS_LIST NWF_DEFINE_OID (121, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
    818 #define OID_DOT11_FLUSH_BSS_LIST NWF_DEFINE_OID (122, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
    819 #define OID_DOT11_POWER_MGMT_REQUEST NWF_DEFINE_OID (123, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
    820 #define OID_DOT11_DESIRED_SSID_LIST NWF_DEFINE_OID (124, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
    821 #define OID_DOT11_EXCLUDED_MAC_ADDRESS_LIST NWF_DEFINE_OID (125, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
    822 
    823 #define DOT11_PHY_AUTO_CONFIG_ENABLED_FLAG 0x00000001U
    824 #define DOT11_MAC_AUTO_CONFIG_ENABLED_FLAG 0x00000002U
    825 
    826 #define DOT11_BSS_ENTRY_BYTE_ARRAY_REVISION_1 1
    827 
    828 #ifndef __WIDL__
    829 typedef union DOT11_BSS_ENTRY_PHY_SPECIFIC_INFO {
    830   ULONG uChCenterFrequency;
    831   struct {
    832     ULONG uHopPattern;
    833     ULONG uHopSet;
    834     ULONG uDwellTime;
    835   } FHSS;
    836 } DOT11_BSS_ENTRY_PHY_SPECIFIC_INFO, *PDOT11_BSS_ENTRY_PHY_SPECIFIC_INFO;
    837 
    838 typedef struct DOT11_BSS_ENTRY {
    839   ULONG uPhyId;
    840   DOT11_BSS_ENTRY_PHY_SPECIFIC_INFO PhySpecificInfo;
    841   DOT11_MAC_ADDRESS dot11BSSID;
    842   DOT11_BSS_TYPE dot11BSSType;
    843   LONG lRSSI;
    844   ULONG uLinkQuality;
    845   BOOLEAN bInRegDomain;
    846   USHORT usBeaconPeriod;
    847   ULONGLONG ullTimestamp;
    848   ULONGLONG ullHostTimestamp;
    849   USHORT usCapabilityInformation;
    850   ULONG uBufferLength;
    851   UCHAR ucBuffer[1];
    852 } DOT11_BSS_ENTRY, *PDOT11_BSS_ENTRY;
    853 #endif
    854 
    855 #define DOT11_POWER_SAVING_NO_POWER_SAVING 0
    856 #define DOT11_POWER_SAVING_FAST_PSP 8
    857 #define DOT11_POWER_SAVING_MAX_PSP 16
    858 #define DOT11_POWER_SAVING_MAXIMUM_LEVEL 24
    859 
    860 #define DOT11_SSID_LIST_REVISION_1 1
    861 #define DOT11_MAC_ADDRESS_LIST_REVISION_1 1
    862 #define DOT11_PMKID_LIST_REVISION_1 1
    863 
    864 typedef struct DOT11_SSID_LIST {
    865   NDIS_OBJECT_HEADER Header;
    866   ULONG uNumOfEntries;
    867   ULONG uTotalNumOfEntries;
    868 #ifdef __WIDL__
    869   [unique, size_is (uTotalNumOfEntries)] DOT11_SSID SSIDs[*];
    870 #else
    871   DOT11_SSID SSIDs[1];
    872 #endif
    873 } DOT11_SSID_LIST, *PDOT11_SSID_LIST;
    874 
    875 typedef struct DOT11_MAC_ADDRESS_LIST {
    876   NDIS_OBJECT_HEADER Header;
    877   ULONG uNumOfEntries;
    878   ULONG uTotalNumOfEntries;
    879   DOT11_MAC_ADDRESS MacAddrs[1];
    880 } DOT11_MAC_ADDRESS_LIST, *PDOT11_MAC_ADDRESS_LIST;
    881 
    882 #define OID_DOT11_DESIRED_BSSID_LIST NWF_DEFINE_OID (126, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
    883 #define OID_DOT11_DESIRED_BSS_TYPE NWF_DEFINE_OID (127, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
    884 #define OID_DOT11_PMKID_LIST NWF_DEFINE_OID (128, NWF_OPERATIONAL_OID, NWF_OPTIONAL_OID)
    885 #define OID_DOT11_CONNECT_REQUEST NWF_DEFINE_OID (129, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
    886 #define OID_DOT11_EXCLUDE_UNENCRYPTED NWF_DEFINE_OID (130, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
    887 #define OID_DOT11_STATISTICS NWF_DEFINE_OID (131, NWF_STATISTICS_OID, NWF_MANDATORY_OID)
    888 #define OID_DOT11_PRIVACY_EXEMPTION_LIST NWF_DEFINE_OID (132, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
    889 #define OID_DOT11_ENABLED_AUTHENTICATION_ALGORITHM NWF_DEFINE_OID (133, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
    890 
    891 typedef UCHAR DOT11_PMKID_VALUE[16];
    892 
    893 typedef struct DOT11_PMKID_ENTRY {
    894   DOT11_MAC_ADDRESS BSSID;
    895   DOT11_PMKID_VALUE PMKID;
    896   ULONG uFlags;
    897 } DOT11_PMKID_ENTRY, *PDOT11_PMKID_ENTRY;
    898 
    899 typedef struct DOT11_PMKID_LIST {
    900   NDIS_OBJECT_HEADER Header;
    901   ULONG uNumOfEntries;
    902   ULONG uTotalNumOfEntries;
    903   DOT11_PMKID_ENTRY PMKIDs[1];
    904 } DOT11_PMKID_LIST, *PDOT11_PMKID_LIST;
    905 
    906 #define DOT11_STATISTICS_UNKNOWN (ULONGLONG) (-1LL)
    907 
    908 typedef struct DOT11_PHY_FRAME_STATISTICS {
    909   ULONGLONG ullTransmittedFrameCount;
    910   ULONGLONG ullMulticastTransmittedFrameCount;
    911   ULONGLONG ullFailedCount;
    912   ULONGLONG ullRetryCount;
    913   ULONGLONG ullMultipleRetryCount;
    914   ULONGLONG ullMaxTXLifetimeExceededCount;
    915   ULONGLONG ullTransmittedFragmentCount;
    916   ULONGLONG ullRTSSuccessCount;
    917   ULONGLONG ullRTSFailureCount;
    918   ULONGLONG ullACKFailureCount;
    919   ULONGLONG ullReceivedFrameCount;
    920   ULONGLONG ullMulticastReceivedFrameCount;
    921   ULONGLONG ullPromiscuousReceivedFrameCount;
    922   ULONGLONG ullMaxRXLifetimeExceededCount;
    923   ULONGLONG ullFrameDuplicateCount;
    924   ULONGLONG ullReceivedFragmentCount;
    925   ULONGLONG ullPromiscuousReceivedFragmentCount;
    926   ULONGLONG ullFCSErrorCount;
    927 } DOT11_PHY_FRAME_STATISTICS, *PDOT11_PHY_FRAME_STATISTICS;
    928 
    929 typedef struct DOT11_MAC_FRAME_STATISTICS {
    930   ULONGLONG ullTransmittedFrameCount;
    931   ULONGLONG ullReceivedFrameCount;
    932   ULONGLONG ullTransmittedFailureFrameCount;
    933   ULONGLONG ullReceivedFailureFrameCount;
    934   ULONGLONG ullWEPExcludedCount;
    935   ULONGLONG ullTKIPLocalMICFailures;
    936   ULONGLONG ullTKIPReplays;
    937   ULONGLONG ullTKIPICVErrorCount;
    938   ULONGLONG ullCCMPReplays;
    939   ULONGLONG ullCCMPDecryptErrors;
    940   ULONGLONG ullWEPUndecryptableCount;
    941   ULONGLONG ullWEPICVErrorCount;
    942   ULONGLONG ullDecryptSuccessCount;
    943   ULONGLONG ullDecryptFailureCount;
    944 } DOT11_MAC_FRAME_STATISTICS, *PDOT11_MAC_FRAME_STATISTICS;
    945 
    946 #define DOT11_STATISTICS_REVISION_1 1
    947 #define DOT11_PRIVACY_EXEMPTION_LIST_REVISION_1 1
    948 
    949 typedef struct DOT11_STATISTICS {
    950   NDIS_OBJECT_HEADER Header;
    951   ULONGLONG ullFourWayHandshakeFailures;
    952   ULONGLONG ullTKIPCounterMeasuresInvoked;
    953   ULONGLONG ullReserved;
    954   DOT11_MAC_FRAME_STATISTICS MacUcastCounters;
    955   DOT11_MAC_FRAME_STATISTICS MacMcastCounters;
    956   DOT11_PHY_FRAME_STATISTICS PhyCounters[1];
    957 } DOT11_STATISTICS, *PDOT11_STATISTICS;
    958 
    959 #define DOT11_EXEMPT_NO_EXEMPTION 0
    960 #define DOT11_EXEMPT_ALWAYS 1
    961 #define DOT11_EXEMPT_ON_KEY_MAPPING_KEY_UNAVAILABLE 2
    962 
    963 #define DOT11_EXEMPT_UNICAST 1
    964 #define DOT11_EXEMPT_MULTICAST 2
    965 #define DOT11_EXEMPT_BOTH 3
    966 
    967 typedef struct DOT11_PRIVACY_EXEMPTION {
    968   USHORT usEtherType;
    969   USHORT usExemptionActionType;
    970   USHORT usExemptionPacketType;
    971 } DOT11_PRIVACY_EXEMPTION, *PDOT11_PRIVACY_EXEMPTION;
    972 
    973 typedef struct DOT11_PRIVACY_EXEMPTION_LIST {
    974   NDIS_OBJECT_HEADER Header;
    975   ULONG uNumOfEntries;
    976   ULONG uTotalNumOfEntries;
    977 #ifdef __WIDL__
    978   [unique, size_is (uTotalNumOfEntries)] DOT11_PRIVACY_EXEMPTION PrivacyExemptionEntries[*];
    979 #else
    980   DOT11_PRIVACY_EXEMPTION PrivacyExemptionEntries[1];
    981 #endif
    982 } DOT11_PRIVACY_EXEMPTION_LIST, *PDOT11_PRIVACY_EXEMPTION_LIST;
    983 
    984 #define DOT11_AUTH_ALGORITHM_LIST_REVISION_1 1
    985 #define DOT11_AUTH_CIPHER_PAIR_LIST_REVISION_1 1
    986 #define DOT11_CIPHER_ALGORITHM_LIST_REVISION_1 1
    987 #define DOT11_CIPHER_DEFAULT_KEY_VALUE_REVISION_1 1
    988 
    989 #define OID_DOT11_SUPPORTED_UNICAST_ALGORITHM_PAIR NWF_DEFINE_OID (134, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
    990 #define OID_DOT11_ENABLED_UNICAST_CIPHER_ALGORITHM NWF_DEFINE_OID (135, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
    991 #define OID_DOT11_SUPPORTED_MULTICAST_ALGORITHM_PAIR NWF_DEFINE_OID (136, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
    992 #define OID_DOT11_ENABLED_MULTICAST_CIPHER_ALGORITHM NWF_DEFINE_OID (137, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
    993 #define OID_DOT11_CIPHER_DEFAULT_KEY_ID NWF_DEFINE_OID (138, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
    994 #define OID_DOT11_CIPHER_DEFAULT_KEY NWF_DEFINE_OID (139, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
    995 
    996 typedef struct DOT11_AUTH_ALGORITHM_LIST {
    997   NDIS_OBJECT_HEADER Header;
    998   ULONG uNumOfEntries;
    999   ULONG uTotalNumOfEntries;
   1000   DOT11_AUTH_ALGORITHM AlgorithmIds[1];
   1001 } DOT11_AUTH_ALGORITHM_LIST, *PDOT11_AUTH_ALGORITHM_LIST;
   1002 
   1003 typedef struct DOT11_AUTH_CIPHER_PAIR_LIST {
   1004   NDIS_OBJECT_HEADER Header;
   1005   ULONG uNumOfEntries;
   1006   ULONG uTotalNumOfEntries;
   1007   DOT11_AUTH_CIPHER_PAIR AuthCipherPairs[1];
   1008 } DOT11_AUTH_CIPHER_PAIR_LIST, *PDOT11_AUTH_CIPHER_PAIR_LIST;
   1009 
   1010 typedef struct DOT11_CIPHER_ALGORITHM_LIST {
   1011   NDIS_OBJECT_HEADER Header;
   1012   ULONG uNumOfEntries;
   1013   ULONG uTotalNumOfEntries;
   1014   DOT11_CIPHER_ALGORITHM AlgorithmIds[1];
   1015 } DOT11_CIPHER_ALGORITHM_LIST, *PDOT11_CIPHER_ALGORITHM_LIST;
   1016 
   1017 typedef struct DOT11_CIPHER_DEFAULT_KEY_VALUE {
   1018   NDIS_OBJECT_HEADER Header;
   1019   ULONG uKeyIndex;
   1020   DOT11_CIPHER_ALGORITHM AlgorithmId;
   1021   DOT11_MAC_ADDRESS MacAddr;
   1022   BOOLEAN bDelete;
   1023   BOOLEAN bStatic;
   1024   USHORT usKeyLength;
   1025 #ifdef __WIDL__
   1026   [unique, size_is (usKeyLength)] UCHAR ucKey[*];
   1027 #else
   1028   UCHAR ucKey[1];
   1029 #endif
   1030 } DOT11_CIPHER_DEFAULT_KEY_VALUE, *PDOT11_CIPHER_DEFAULT_KEY_VALUE;
   1031 
   1032 typedef struct DOT11_KEY_ALGO_TKIP_MIC {
   1033   UCHAR ucIV48Counter[6];
   1034   ULONG ulTKIPKeyLength;
   1035   ULONG ulMICKeyLength;
   1036   UCHAR ucTKIPMICKeys[1];
   1037 } DOT11_KEY_ALGO_TKIP_MIC, *PDOT11_KEY_ALGO_TKIP_MIC;
   1038 
   1039 typedef struct DOT11_KEY_ALGO_CCMP {
   1040   UCHAR ucIV48Counter[6];
   1041   ULONG ulCCMPKeyLength;
   1042   UCHAR ucCCMPKey[1];
   1043 } DOT11_KEY_ALGO_CCMP, *PDOT11_KEY_ALGO_CCMP;
   1044 
   1045 typedef struct DOT11_KEY_ALGO_GCMP {
   1046   UCHAR ucIV48Counter[6];
   1047   ULONG ulGCMPKeyLength;
   1048   UCHAR ucGCMPKey[1];
   1049 } DOT11_KEY_ALGO_GCMP, *PDOT11_KEY_ALGO_GCMP;
   1050 
   1051 typedef struct DOT11_KEY_ALGO_GCMP_256 {
   1052   UCHAR ucIV48Counter[6];
   1053   ULONG ulGCMP256KeyLength;
   1054   UCHAR ucGCMP256Key[1];
   1055 } DOT11_KEY_ALGO_GCMP_256, *PDOT11_KEY_ALGO_GCMP_256;
   1056 
   1057 typedef struct DOT11_KEY_ALGO_BIP {
   1058   UCHAR ucIPN[6];
   1059   ULONG ulBIPKeyLength;
   1060   UCHAR ucBIPKey[1];
   1061 } DOT11_KEY_ALGO_BIP, *PDOT11_KEY_ALGO_BIP;
   1062 
   1063 typedef struct DOT11_KEY_ALGO_BIP_GMAC_256 {
   1064   UCHAR ucIPN[6];
   1065   ULONG ulBIPGmac256KeyLength;
   1066   UCHAR ucBIPGmac256Key[1];
   1067 } DOT11_KEY_ALGO_BIP_GMAC_256, *PDOT11_KEY_ALGO_BIP_GMAC_256;
   1068 
   1069 #define DOT11_CIPHER_KEY_MAPPING_KEY_VALUE_BYTE_ARRAY_REVISION_1 1
   1070 #define DOT11_ASSOCIATION_INFO_LIST_REVISION_1 1
   1071 
   1072 #define OID_DOT11_CIPHER_KEY_MAPPING_KEY NWF_DEFINE_OID (140, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
   1073 #define OID_DOT11_ENUM_ASSOCIATION_INFO NWF_DEFINE_OID (141, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
   1074 
   1075 typedef enum DOT11_DIRECTION {
   1076   DOT11_DIR_INBOUND = 1,
   1077   DOT11_DIR_OUTBOUND,
   1078   DOT11_DIR_BOTH
   1079 } DOT11_DIRECTION, *PDOT11_DIRECTION;
   1080 
   1081 typedef struct DOT11_CIPHER_KEY_MAPPING_KEY_VALUE {
   1082   DOT11_MAC_ADDRESS PeerMacAddr;
   1083   DOT11_CIPHER_ALGORITHM AlgorithmId;
   1084   DOT11_DIRECTION Direction;
   1085   BOOLEAN bDelete;
   1086   BOOLEAN bStatic;
   1087   USHORT usKeyLength;
   1088 #ifdef __WIDL__
   1089   [unique, size_is (usKeyLength)] UCHAR ucKey[*];
   1090 #else
   1091   UCHAR ucKey[1];
   1092 #endif
   1093 } DOT11_CIPHER_KEY_MAPPING_KEY_VALUE, *PDOT11_CIPHER_KEY_MAPPING_KEY_VALUE;
   1094 
   1095 typedef enum _DOT11_ASSOCIATION_STATE {
   1096   dot11_assoc_state_zero = 0,
   1097   dot11_assoc_state_unauth_unassoc = 1,
   1098   dot11_assoc_state_auth_unassoc = 2,
   1099   dot11_assoc_state_auth_assoc = 3
   1100 } DOT11_ASSOCIATION_STATE, *PDOT11_ASSOCIATION_STATE;
   1101 
   1102 typedef struct _DOT11_ASSOCIATION_INFO_EX {
   1103   DOT11_MAC_ADDRESS PeerMacAddress;
   1104   DOT11_MAC_ADDRESS BSSID;
   1105   USHORT usCapabilityInformation;
   1106   USHORT usListenInterval;
   1107   UCHAR ucPeerSupportedRates[MAX_NUM_SUPPORTED_RATES_V2];
   1108   USHORT usAssociationID;
   1109   DOT11_ASSOCIATION_STATE dot11AssociationState;
   1110   DOT11_POWER_MODE dot11PowerMode;
   1111   LARGE_INTEGER liAssociationUpTime;
   1112   ULONGLONG ullNumOfTxPacketSuccesses;
   1113   ULONGLONG ullNumOfTxPacketFailures;
   1114   ULONGLONG ullNumOfRxPacketSuccesses;
   1115   ULONGLONG ullNumOfRxPacketFailures;
   1116 } DOT11_ASSOCIATION_INFO_EX, *PDOT11_ASSOCIATION_INFO_EX;
   1117 
   1118 typedef struct DOT11_ASSOCIATION_INFO_LIST {
   1119   NDIS_OBJECT_HEADER Header;
   1120   ULONG uNumOfEntries;
   1121   ULONG uTotalNumOfEntries;
   1122   DOT11_ASSOCIATION_INFO_EX dot11AssocInfo[1];
   1123 } DOT11_ASSOCIATION_INFO_LIST, *PDOT11_ASSOCIATION_INFO_LIST;
   1124 
   1125 typedef struct DOT11_PHY_ID_LIST {
   1126   NDIS_OBJECT_HEADER Header;
   1127   ULONG uNumOfEntries;
   1128   ULONG uTotalNumOfEntries;
   1129   ULONG dot11PhyId[1];
   1130 } DOT11_PHY_ID_LIST, *PDOT11_PHY_ID_LIST;
   1131 
   1132 #define DOT11_PHY_ID_ANY (0xffffffffU)
   1133 
   1134 #define OID_DOT11_DISCONNECT_REQUEST NWF_DEFINE_OID (142, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
   1135 #define OID_DOT11_UNICAST_USE_GROUP_ENABLED NWF_DEFINE_OID (143, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
   1136 #define OID_DOT11_HARDWARE_PHY_STATE NWF_DEFINE_OID (144, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
   1137 #define OID_DOT11_DESIRED_PHY_LIST NWF_DEFINE_OID (145, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
   1138 #define OID_DOT11_CURRENT_PHY_ID NWF_DEFINE_OID (146, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
   1139 #define OID_DOT11_MEDIA_STREAMING_ENABLED NWF_DEFINE_OID (147, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
   1140 #define OID_DOT11_UNREACHABLE_DETECTION_THRESHOLD NWF_DEFINE_OID (148, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
   1141 #define OID_DOT11_ACTIVE_PHY_LIST NWF_DEFINE_OID (149, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
   1142 #define OID_DOT11_EXTSTA_CAPABILITY NWF_DEFINE_OID (150, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
   1143 
   1144 #define DOT11_PHY_ID_LIST_REVISION_1 1
   1145 #define DOT11_EXTSTA_CAPABILITY_REVISION_1 1
   1146 
   1147 typedef struct DOT11_EXTSTA_CAPABILITY {
   1148   NDIS_OBJECT_HEADER Header;
   1149   ULONG uScanSSIDListSize;
   1150   ULONG uDesiredBSSIDListSize;
   1151   ULONG uDesiredSSIDListSize;
   1152   ULONG uExcludedMacAddressListSize;
   1153   ULONG uPrivacyExemptionListSize;
   1154   ULONG uKeyMappingTableSize;
   1155   ULONG uDefaultKeyTableSize;
   1156   ULONG uWEPKeyValueMaxLength;
   1157   ULONG uPMKIDCacheSize;
   1158   ULONG uMaxNumPerSTADefaultKeyTables;
   1159 } DOT11_EXTSTA_CAPABILITY, *PDOT11_EXTSTA_CAPABILITY;
   1160 
   1161 typedef struct DOT11_DATA_RATE_MAPPING_ENTRY {
   1162   UCHAR ucDataRateIndex;
   1163   UCHAR ucDataRateFlag;
   1164   USHORT usDataRateValue;
   1165 } DOT11_DATA_RATE_MAPPING_ENTRY, *PDOT11_DATA_RATE_MAPPING_ENTRY;
   1166 
   1167 typedef struct _DOT11_DATA_RATE_MAPPING_TABLE {
   1168   NDIS_OBJECT_HEADER Header;
   1169   ULONG uDataRateMappingLength;
   1170   DOT11_DATA_RATE_MAPPING_ENTRY DataRateMappingEntries[DOT11_RATE_SET_MAX_LENGTH];
   1171 } DOT11_DATA_RATE_MAPPING_TABLE, *PDOT11_DATA_RATE_MAPPING_TABLE;
   1172 
   1173 typedef struct DOT11_COUNTRY_OR_REGION_STRING_LIST {
   1174   NDIS_OBJECT_HEADER Header;
   1175   ULONG uNumOfEntries;
   1176   ULONG uTotalNumOfEntries;
   1177   DOT11_COUNTRY_OR_REGION_STRING CountryOrRegionStrings[1];
   1178 } DOT11_COUNTRY_OR_REGION_STRING_LIST, *PDOT11_COUNTRY_OR_REGION_STRING_LIST;
   1179 
   1180 typedef struct DOT11_PORT_STATE_NOTIFICATION {
   1181   NDIS_OBJECT_HEADER Header;
   1182   DOT11_MAC_ADDRESS PeerMac;
   1183   BOOLEAN bOpen;
   1184 } DOT11_PORT_STATE_NOTIFICATION, *PDOT11_PORT_STATE_NOTIFICATION;
   1185 
   1186 typedef struct DOT11_IBSS_PARAMS {
   1187   NDIS_OBJECT_HEADER Header;
   1188   BOOLEAN bJoinOnly;
   1189   ULONG uIEsOffset;
   1190   ULONG uIEsLength;
   1191 } DOT11_IBSS_PARAMS, *PDOT11_IBSS_PARAMS;
   1192 
   1193 typedef struct DOT11_QOS_PARAMS {
   1194   NDIS_OBJECT_HEADER Header;
   1195   UCHAR ucEnabledQoSProtocolFlags;
   1196 } DOT11_QOS_PARAMS, *PDOT11_QOS_PARAMS;
   1197 
   1198 #define DOT11_DATA_RATE_NON_STANDARD 0x01U
   1199 #define DOT11_DATA_RATE_INDEX_MASK 0x7fU
   1200 
   1201 #define DOT11_QOS_PROTOCOL_FLAG_WMM (0x01U)
   1202 #define DOT11_QOS_PROTOCOL_FLAG_11E (0x02U)
   1203 
   1204 #define OID_DOT11_DATA_RATE_MAPPING_TABLE NWF_DEFINE_OID (151, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
   1205 #define OID_DOT11_SUPPORTED_COUNTRY_OR_REGION_STRING NWF_DEFINE_OID (152, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
   1206 #define OID_DOT11_DESIRED_COUNTRY_OR_REGION_STRING NWF_DEFINE_OID (153, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
   1207 #define OID_DOT11_PORT_STATE_NOTIFICATION NWF_DEFINE_OID (154, NWF_OPERATIONAL_OID, NWF_OPTIONAL_OID)
   1208 #define OID_DOT11_IBSS_PARAMS NWF_DEFINE_OID (155, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
   1209 #define OID_DOT11_QOS_PARAMS NWF_DEFINE_OID (156, NWF_OPERATIONAL_OID, NWF_OPTIONAL_OID)
   1210 #define OID_DOT11_SAFE_MODE_ENABLED NWF_DEFINE_OID (157, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
   1211 #define OID_DOT11_HIDDEN_NETWORK_ENABLED NWF_DEFINE_OID (158, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
   1212 #define OID_DOT11_ASSOCIATION_PARAMS NWF_DEFINE_OID (159, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
   1213 #define OID_DOT11_SAFE_MODE_HT_ENABLED NWF_DEFINE_OID(160,NWF_OPERATIONAL_OID,NWF_MANDATORY_OID)
   1214 
   1215 #define DOT11_DATA_RATE_MAPPING_TABLE_REVISION_1 1
   1216 #define DOT11_COUNTRY_OR_REGION_STRING_LIST_REVISION_1 1
   1217 #define DOT11_PORT_STATE_NOTIFICATION_REVISION_1 1
   1218 #define DOT11_IBSS_PARAMS_REVISION_1 1
   1219 #define DOT11_QOS_PARAMS_REVISION_1 1
   1220 #define DOT11_ASSOCIATION_PARAMS_REVISION_1 1
   1221 
   1222 typedef struct DOT11_ASSOCIATION_PARAMS {
   1223   NDIS_OBJECT_HEADER Header;
   1224   DOT11_MAC_ADDRESS BSSID;
   1225   ULONG uAssocRequestIEsOffset;
   1226   ULONG uAssocRequestIEsLength;
   1227 } DOT11_ASSOCIATION_PARAMS, *PDOT11_ASSOCIATION_PARAMS;
   1228 
   1229 #define DOT11_MAX_NUM_OF_FRAGMENTS 16
   1230 
   1231 #define DOT11_PRIORITY_CONTENTION 0
   1232 #define DOT11_PRIORITY_CONTENTION_FREE 1
   1233 
   1234 #define DOT11_SERVICE_CLASS_REORDERABLE_MULTICAST 0
   1235 #define DOT11_SERVICE_CLASS_STRICTLY_ORDERED 1
   1236 
   1237 #define DOT11_FLAGS_80211B_SHORT_PREAMBLE 0x00000001
   1238 #define DOT11_FLAGS_80211B_PBCC 0x00000002
   1239 #define DOT11_FLAGS_80211B_CHANNEL_AGILITY 0x00000004
   1240 #define DOT11_FLAGS_PS_ON 0x00000008
   1241 #define DOT11_FLAGS_80211G_DSSS_OFDM 0x00000010
   1242 #define DOT11_FLAGS_80211G_USE_PROTECTION 0x00000020
   1243 #define DOT11_FLAGS_80211G_NON_ERP_PRESENT 0x00000040
   1244 #define DOT11_FLAGS_80211G_BARKER_PREAMBLE_MODE 0x00000080
   1245 #define DOT11_WME_PACKET 0x00000100
   1246 
   1247 typedef struct _DOT11_FRAGMENT_DESCRIPTOR {
   1248   ULONG uOffset;
   1249   ULONG uLength;
   1250 } DOT11_FRAGMENT_DESCRIPTOR, *PDOT11_FRAGMENT_DESCRIPTOR;
   1251 
   1252 typedef struct _DOT11_PER_MSDU_COUNTERS {
   1253   ULONG uTransmittedFragmentCount;
   1254   ULONG uRetryCount;
   1255   ULONG uRTSSuccessCount;
   1256   ULONG uRTSFailureCount;
   1257   ULONG uACKFailureCount;
   1258 } DOT11_PER_MSDU_COUNTERS, *PDOT11_PER_MSDU_COUNTERS;
   1259 
   1260 typedef struct DOT11_PHY_ATTRIBUTES DOT11_PHY_ATTRIBUTES, *PDOT11_PHY_ATTRIBUTES;
   1261 
   1262 typedef struct DOT11_HRDSSS_PHY_ATTRIBUTES {
   1263   BOOLEAN bShortPreambleOptionImplemented;
   1264   BOOLEAN bPBCCOptionImplemented;
   1265   BOOLEAN bChannelAgilityPresent;
   1266   ULONG uHRCCAModeSupported;
   1267 } DOT11_HRDSSS_PHY_ATTRIBUTES, *PDOT11_HRDSSS_PHY_ATTRIBUTES;
   1268 
   1269 typedef struct DOT11_OFDM_PHY_ATTRIBUTES {
   1270   ULONG uFrequencyBandsSupported;
   1271 } DOT11_OFDM_PHY_ATTRIBUTES, *PDOT11_OFDM_PHY_ATTRIBUTES;
   1272 
   1273 typedef struct DOT11_ERP_PHY_ATTRIBUTES {
   1274 #ifdef __cplusplus
   1275   DOT11_HRDSSS_PHY_ATTRIBUTES HRDSSSAttributes;
   1276 #else
   1277   __C89_NAMELESS struct {
   1278     BOOLEAN bShortPreambleOptionImplemented;
   1279     BOOLEAN bPBCCOptionImplemented;
   1280     BOOLEAN bChannelAgilityPresent;
   1281     ULONG uHRCCAModeSupported;
   1282   };
   1283 #endif
   1284   BOOLEAN bERPPBCCOptionImplemented;
   1285   BOOLEAN bDSSSOFDMOptionImplemented;
   1286   BOOLEAN bShortSlotTimeOptionImplemented;
   1287 } DOT11_ERP_PHY_ATTRIBUTES, *PDOT11_ERP_PHY_ATTRIBUTES;
   1288 
   1289 #define DOT11_PHY_ATTRIBUTES_REVISION_1 1
   1290 
   1291 struct DOT11_PHY_ATTRIBUTES {
   1292   NDIS_OBJECT_HEADER Header;
   1293   DOT11_PHY_TYPE PhyType;
   1294   BOOLEAN bHardwarePhyState;
   1295   BOOLEAN bSoftwarePhyState;
   1296   BOOLEAN bCFPollable;
   1297   ULONG uMPDUMaxLength;
   1298   DOT11_TEMP_TYPE TempType;
   1299   DOT11_DIVERSITY_SUPPORT DiversitySupport;
   1300 #ifdef __WIDL__
   1301   [switch_is (PhyType)]
   1302 #else
   1303   __C89_NAMELESS
   1304 #endif
   1305   union {
   1306 #ifdef __WIDL__
   1307     [case (dot11_phy_type_hrdsss)]
   1308 #endif
   1309     DOT11_HRDSSS_PHY_ATTRIBUTES HRDSSSAttributes;
   1310 #ifdef __WIDL__
   1311     [case (dot11_phy_type_ofdm)]
   1312 #endif
   1313     DOT11_OFDM_PHY_ATTRIBUTES OFDMAttributes;
   1314 #ifdef __WIDL__
   1315     [case (dot11_phy_type_erp)]
   1316 #endif
   1317     DOT11_ERP_PHY_ATTRIBUTES ERPAttributes;
   1318 #ifdef __WIDL__
   1319     [case (dot11_phy_type_ht)] ;
   1320     [default]
   1321     ;
   1322 #endif
   1323   }
   1324 #ifdef __cplusplus
   1325   PhySpecificAttributes
   1326 #endif
   1327     ;
   1328   ULONG uNumberSupportedPowerLevels;
   1329   ULONG TxPowerLevels[8];
   1330   ULONG uNumDataRateMappingEntries;
   1331   DOT11_DATA_RATE_MAPPING_ENTRY DataRateMappingEntries[DOT11_RATE_SET_MAX_LENGTH];
   1332   DOT11_SUPPORTED_DATA_RATES_VALUE_V2 SupportedDataRatesValue;
   1333 };
   1334 
   1335 #define DOT11_EXTSTA_ATTRIBUTES_SAFEMODE_OID_SUPPORTED 0x1
   1336 #define DOT11_EXTSTA_ATTRIBUTES_SAFEMODE_CERTIFIED 0x2
   1337 #define DOT11_EXTSTA_ATTRIBUTES_SAFEMODE_RESERVED 0xc
   1338 
   1339 #define DOT11_EXTSTA_ATTRIBUTES_REVISION_1 1
   1340 #define DOT11_EXTSTA_ATTRIBUTES_REVISION_2 2
   1341 #define DOT11_EXTSTA_ATTRIBUTES_REVISION_3 3
   1342 #define DOT11_EXTSTA_ATTRIBUTES_REVISION_4 4
   1343 
   1344 typedef struct DOT11_EXTSTA_ATTRIBUTES DOT11_EXTSTA_ATTRIBUTES, *PDOT11_EXTSTA_ATTRIBUTES;
   1345 
   1346 struct DOT11_EXTSTA_ATTRIBUTES {
   1347   NDIS_OBJECT_HEADER Header;
   1348   ULONG uScanSSIDListSize;
   1349   ULONG uDesiredBSSIDListSize;
   1350   ULONG uDesiredSSIDListSize;
   1351   ULONG uExcludedMacAddressListSize;
   1352   ULONG uPrivacyExemptionListSize;
   1353   ULONG uKeyMappingTableSize;
   1354   ULONG uDefaultKeyTableSize;
   1355   ULONG uWEPKeyValueMaxLength;
   1356   ULONG uPMKIDCacheSize;
   1357   ULONG uMaxNumPerSTADefaultKeyTables;
   1358   BOOLEAN bStrictlyOrderedServiceClassImplemented;
   1359   UCHAR ucSupportedQoSProtocolFlags;
   1360   BOOLEAN bSafeModeImplemented;
   1361   ULONG uNumSupportedCountryOrRegionStrings;
   1362 #ifdef __WIDL__
   1363   [size_is (uNumSupportedCountryOrRegionStrings)]
   1364 #endif
   1365   PDOT11_COUNTRY_OR_REGION_STRING pSupportedCountryOrRegionStrings;
   1366   ULONG uInfraNumSupportedUcastAlgoPairs;
   1367 #ifdef __WIDL__
   1368   [size_is (uInfraNumSupportedUcastAlgoPairs)]
   1369 #endif
   1370   PDOT11_AUTH_CIPHER_PAIR pInfraSupportedUcastAlgoPairs;
   1371   ULONG uInfraNumSupportedMcastAlgoPairs;
   1372 #ifdef __WIDL__
   1373   [size_is (uInfraNumSupportedMcastAlgoPairs)]
   1374 #endif
   1375   PDOT11_AUTH_CIPHER_PAIR pInfraSupportedMcastAlgoPairs;
   1376   ULONG uAdhocNumSupportedUcastAlgoPairs;
   1377 #ifdef __WIDL__
   1378   [size_is (uAdhocNumSupportedUcastAlgoPairs)]
   1379 #endif
   1380   PDOT11_AUTH_CIPHER_PAIR pAdhocSupportedUcastAlgoPairs;
   1381   ULONG uAdhocNumSupportedMcastAlgoPairs;
   1382 #ifdef __WIDL__
   1383   [size_is (uAdhocNumSupportedMcastAlgoPairs)]
   1384 #endif
   1385   PDOT11_AUTH_CIPHER_PAIR pAdhocSupportedMcastAlgoPairs;
   1386   BOOLEAN bAutoPowerSaveMode;
   1387   ULONG uMaxNetworkOffloadListSize;
   1388   BOOLEAN bMFPCapable;
   1389   ULONG uInfraNumSupportedMcastMgmtAlgoPairs;
   1390 #ifdef __WIDL__
   1391   [size_is (uInfraNumSupportedMcastMgmtAlgoPairs)]
   1392 #endif
   1393   PDOT11_AUTH_CIPHER_PAIR pInfraSupportedMcastMgmtAlgoPairs;
   1394 };
   1395 
   1396 #if defined (_NDIS_) || defined (NDIS_WRAPPER)
   1397 #define DOT11_SEND_CONTEXT_REVISION_1 1
   1398 
   1399 #define DOT11_SEND_CONTEXT_SIZE ((sizeof (DOT11_SEND_CONTEXT) + MEMORY_ALLOCATION_ALIGNMENT - 1) &~ (MEMORY_ALLOCATION_ALIGNMENT-1))
   1400 
   1401 typedef struct _DOT11_SEND_CONTEXT {
   1402   NDIS_OBJECT_HEADER Header;
   1403   PVOID pvReserved;
   1404   ULONG uFlags;
   1405   ULONG uPSLifetime;
   1406   ULONG uDelayedSleepValue;
   1407   UCHAR ucTXDataRates[8];
   1408   BOOLEAN bIndicateAssociatedACKs;
   1409   BOOLEAN bIndicateTXStatus;
   1410   UCHAR ucPriority;
   1411   BOOLEAN bDontFragment;
   1412   ULONG dwExtendedStatus;
   1413   HANDLE hIntegrityOffload;
   1414   HANDLE hWEPOffload;
   1415   UCHAR ucWPAMSDUPriority;
   1416   UCHAR ucNumOfRWsOnPeer;
   1417   USHORT usAID;
   1418   PDOT11_PER_MSDU_COUNTERS pDot11PerMSDUCounters;
   1419 } DOT11_SEND_CONTEXT, *PDOT11_SEND_CONTEXT;
   1420 
   1421 typedef struct _DOT11_SEND_EXTENSION_INFO {
   1422   ULONG uVersion;
   1423   NDIS_OBJECT_HEADER Header;
   1424   PVOID pvReserved;
   1425   ULONG uFlags;
   1426   ULONG uPSLifetime;
   1427   ULONG uDelayedSleepValue;
   1428   UCHAR ucTXDataRates[8];
   1429   BOOLEAN bIndicateAssociatedACKs;
   1430   BOOLEAN bIndicateTXStatus;
   1431   UCHAR ucPriority;
   1432   BOOLEAN bDontFragment;
   1433   ULONG dwExtendedStatus;
   1434   HANDLE hIntegrityOffload;
   1435   HANDLE hWEPOffload;
   1436   UCHAR ucWPAMSDUPriority;
   1437   UCHAR ucNumOfRWsOnPeer;
   1438   USHORT usAID;
   1439   PDOT11_PER_MSDU_COUNTERS pDot11PerMSDUCounters;
   1440   USHORT usNumberOfFragments;
   1441   DOT11_FRAGMENT_DESCRIPTOR Dot11FragmentDescriptors[1];
   1442 } DOT11_SEND_EXTENSION_INFO, *PDOT11_SEND_EXTENSION_INFO;
   1443 
   1444 typedef enum _DOT11_ACK_POLICY {
   1445   dot11_ack_policy_none = 0,
   1446   dot11_ack_policy_acknowledge = 1,
   1447   dot11_ack_policy_do_not_acknowledge = 2
   1448 } DOT11_ACK_POLICY, *PDOT11_ACK_POLICY;
   1449 
   1450 typedef struct _DOT11_SEND_EXTENSION_INFO_V2 {
   1451   UCHAR ucQoSPriority:4;
   1452   UCHAR ucAckPolicy:4;
   1453   USHORT usExtendedTXDataRatesOffset;
   1454   UCHAR ucNumOfExtendedTXDataRates;
   1455   UCHAR ucBuffer[1];
   1456 } DOT11_SEND_EXTENSION_INFO_V2, *PDOT11_SEND_EXTENSION_INFO_V2;
   1457 
   1458 #define DOT11_RECV_CONTEXT_REVISION_1 1
   1459 
   1460 typedef struct _DOT11_RECV_CONTEXT {
   1461   NDIS_OBJECT_HEADER Header;
   1462   PVOID pvReserved;
   1463   DOT11_PHY_TYPE dot11PhyType;
   1464   ULONG uChCenterFrequency;
   1465   LONG lRSSI;
   1466   ULONG uRSSI;
   1467   UCHAR ucPriority;
   1468   UCHAR ucDataRate;
   1469   UCHAR ucPeerMacAddress[6];
   1470   ULONG dwExtendedStatus;
   1471   HANDLE hWEPOffloadContext;
   1472   HANDLE hAuthOffloadContext;
   1473   USHORT usWEPAppliedMask;
   1474   USHORT usWPAMSDUPriority;
   1475   DOT11_IV48_COUNTER dot11LowestIV48Counter;
   1476   USHORT usDot11LeftRWBitMap;
   1477   DOT11_IV48_COUNTER dot11HighestIV48Counter;
   1478   USHORT usDot11RightRWBitMap;
   1479   USHORT usNumberOfMPDUsReceived;
   1480 } DOT11_RECV_CONTEXT, *PDOT11_RECV_CONTEXT;
   1481 
   1482 #define DOT11_RECV_CONTEXT_SIZE ((sizeof (DOT11_RECV_CONTEXT) + MEMORY_ALLOCATION_ALIGNMENT - 1) &~ (MEMORY_ALLOCATION_ALIGNMENT-1))
   1483 #else
   1484 typedef struct _DOT11_RECV_EXTENSION_INFO {
   1485   ULONG uVersion;
   1486   PVOID pvReserved;
   1487   DOT11_PHY_TYPE dot11PhyType;
   1488   ULONG uChCenterFrequency;
   1489   LONG lRSSI;
   1490   LONG lRSSIMin;
   1491   LONG lRSSIMax;
   1492   ULONG uRSSI;
   1493   UCHAR ucPriority;
   1494   UCHAR ucDataRate;
   1495   UCHAR ucPeerMacAddress[6];
   1496   ULONG dwExtendedStatus;
   1497   HANDLE hWEPOffloadContext;
   1498   HANDLE hAuthOffloadContext;
   1499   USHORT usWEPAppliedMask;
   1500   USHORT usWPAMSDUPriority;
   1501   DOT11_IV48_COUNTER dot11LowestIV48Counter;
   1502   USHORT usDot11LeftRWBitMap;
   1503   DOT11_IV48_COUNTER dot11HighestIV48Counter;
   1504   USHORT usDot11RightRWBitMap;
   1505   USHORT usNumberOfMPDUsReceived;
   1506   USHORT usNumberOfFragments;
   1507   PVOID pNdisPackets[1];
   1508 } DOT11_RECV_EXTENSION_INFO, *PDOT11_RECV_EXTENSION_INFO;
   1509 
   1510 typedef struct _DOT11_RECV_EXTENSION_INFO_V2 {
   1511   ULONG uVersion;
   1512   PVOID pvReserved;
   1513   DOT11_PHY_TYPE dot11PhyType;
   1514   ULONG uChCenterFrequency;
   1515   LONG lRSSI;
   1516   ULONG uRSSI;
   1517   UCHAR ucPriority;
   1518   UCHAR ucDataRate;
   1519   UCHAR ucPeerMacAddress[6];
   1520   ULONG dwExtendedStatus;
   1521   HANDLE hWEPOffloadContext;
   1522   HANDLE hAuthOffloadContext;
   1523   USHORT usWEPAppliedMask;
   1524   USHORT usWPAMSDUPriority;
   1525   DOT11_IV48_COUNTER dot11LowestIV48Counter;
   1526   USHORT usDot11LeftRWBitMap;
   1527   DOT11_IV48_COUNTER dot11HighestIV48Counter;
   1528   USHORT usDot11RightRWBitMap;
   1529   USHORT usNumberOfMPDUsReceived;
   1530   USHORT usNumberOfFragments;
   1531   PVOID pNdisPackets[1];
   1532 } DOT11_RECV_EXTENSION_INFO_V2, *PDOT11_RECV_EXTENSION_INFO_V2;
   1533 #endif
   1534 
   1535 #define DOT11_STATUS_SUCCESS 0x00000001
   1536 #define DOT11_STATUS_RETRY_LIMIT_EXCEEDED 0x00000002
   1537 #define DOT11_STATUS_UNSUPPORTED_PRIORITY 0x00000004
   1538 #define DOT11_STATUS_UNSUPPORTED_SERVICE_CLASS 0x00000008
   1539 #define DOT11_STATUS_UNAVAILABLE_PRIORITY 0x00000010
   1540 #define DOT11_STATUS_UNAVAILABLE_SERVICE_CLASS 0x00000020
   1541 #define DOT11_STATUS_XMIT_MSDU_TIMER_EXPIRED 0x00000040
   1542 #define DOT11_STATUS_UNAVAILABLE_BSS 0x00000080
   1543 #define DOT11_STATUS_EXCESSIVE_DATA_LENGTH 0x00000100
   1544 #define DOT11_STATUS_ENCRYPTION_FAILED 0x00000200
   1545 #define DOT11_STATUS_WEP_KEY_UNAVAILABLE 0x00000400
   1546 #define DOT11_STATUS_ICV_VERIFIED 0x00000800
   1547 #define DOT11_STATUS_PACKET_REASSEMBLED 0x00001000
   1548 #define DOT11_STATUS_PACKET_NOT_REASSEMBLED 0x00002000
   1549 #define DOT11_STATUS_GENERATE_AUTH_FAILED 0x00004000
   1550 #define DOT11_STATUS_AUTH_NOT_VERIFIED 0x00008000
   1551 #define DOT11_STATUS_AUTH_VERIFIED 0x00010000
   1552 #define DOT11_STATUS_AUTH_FAILED 0x00020000
   1553 #define DOT11_STATUS_PS_LIFETIME_EXPIRED 0x00040000
   1554 
   1555 typedef struct _DOT11_STATUS_INDICATION {
   1556   ULONG uStatusType;
   1557   NDIS_STATUS ndisStatus;
   1558 } DOT11_STATUS_INDICATION, *PDOT11_STATUS_INDICATION;
   1559 
   1560 typedef struct DOT11_MPDU_MAX_LENGTH_INDICATION {
   1561   NDIS_OBJECT_HEADER Header;
   1562   ULONG uPhyId;
   1563   ULONG uMPDUMaxLength;
   1564 } DOT11_MPDU_MAX_LENGTH_INDICATION, *PDOT11_MPDU_MAX_LENGTH_INDICATION;
   1565 
   1566 #define DOT11_MPDU_MAX_LENGTH_INDICATION_REVISION_1 1
   1567 #define DOT11_ASSOCIATION_START_PARAMETERS_REVISION_1 1
   1568 
   1569 typedef struct DOT11_ASSOCIATION_START_PARAMETERS {
   1570   NDIS_OBJECT_HEADER Header;
   1571   DOT11_MAC_ADDRESS MacAddr;
   1572   DOT11_SSID SSID;
   1573   ULONG uIHVDataOffset, uIHVDataSize;
   1574 } DOT11_ASSOCIATION_START_PARAMETERS, *PDOT11_ASSOCIATION_START_PARAMETERS;
   1575 
   1576 typedef struct DOT11_ENCAP_ENTRY {
   1577   USHORT usEtherType;
   1578   USHORT usEncapType;
   1579 } DOT11_ENCAP_ENTRY, *PDOT11_ENCAP_ENTRY;
   1580 
   1581 typedef enum DOT11_DS_INFO {
   1582   DOT11_DS_CHANGED,
   1583   DOT11_DS_UNCHANGED,
   1584   DOT11_DS_UNKNOWN
   1585 } DOT11_DS_INFO, *PDOT11_DS_INFO;
   1586 
   1587 typedef ULONG DOT11_ASSOC_STATUS;
   1588 
   1589 #define DOT11_ENCAP_RFC_1042 1
   1590 #define DOT11_ENCAP_802_1H 2
   1591 
   1592 #define DOT11_STATUS_SCAN_CONFIRM 1
   1593 #define DOT11_STATUS_JOIN_CONFIRM 2
   1594 #define DOT11_STATUS_START_CONFIRM 3
   1595 #define DOT11_STATUS_RESET_CONFIRM 4
   1596 #define DOT11_STATUS_AP_JOIN_CONFIRM 5
   1597 #define DOT11_STATUS_MPDU_MAX_LENGTH_CHANGED 6
   1598 
   1599 #define DOT11_ASSOC_STATUS_SUCCESS 0
   1600 #define DOT11_ASSOC_STATUS_FAILURE 0x00000001U
   1601 #define DOT11_ASSOC_STATUS_UNREACHABLE 0x00000002U
   1602 #define DOT11_ASSOC_STATUS_RADIO_OFF 0x00000003U
   1603 #define DOT11_ASSOC_STATUS_PHY_DISABLED 0x00000004U
   1604 #define DOT11_ASSOC_STATUS_CANCELLED 0x00000005U
   1605 #define DOT11_ASSOC_STATUS_CANDIDATE_LIST_EXHAUSTED 0x00000006U
   1606 #define DOT11_ASSOC_STATUS_DISASSOCIATED_BY_OS 0x00000007U
   1607 #define DOT11_ASSOC_STATUS_DISASSOCIATED_BY_ROAMING 0x00000008U
   1608 #define DOT11_ASSOC_STATUS_DISASSOCIATED_BY_RESET 0x00000009U
   1609 #define DOT11_ASSOC_STATUS_SYSTEM_ERROR 0x0000000aU
   1610 #define DOT11_ASSOC_STATUS_ROAMING_BETTER_AP_FOUND 0x0000000bU
   1611 #define DOT11_ASSOC_STATUS_ROAMING_ASSOCIATION_LOST 0x0000000cU
   1612 #define DOT11_ASSOC_STATUS_ROAMING_ADHOC 0x0000000dU
   1613 
   1614 #define DOT11_ASSOC_STATUS_PEER_DEAUTHENTICATED 0x00010000U
   1615 #define DOT11_ASSOC_STATUS_PEER_DEAUTHENTICATED_START DOT11_ASSOC_STATUS_PEER_DEAUTHENTICATED
   1616 #define DOT11_ASSOC_STATUS_PEER_DEAUTHENTICATED_END 0x0001ffffU
   1617 
   1618 #define DOT11_ASSOC_STATUS_PEER_DISASSOCIATED 0x00020000U
   1619 #define DOT11_ASSOC_STATUS_PEER_DISASSOCIATED_START DOT11_ASSOC_STATUS_PEER_DISASSOCIATED
   1620 #define DOT11_ASSOC_STATUS_PEER_DISASSOCIATED_END 0x0002ffffU
   1621 
   1622 #define DOT11_ASSOC_STATUS_ASSOCIATION_RESPONSE 0x00030000U
   1623 #define DOT11_ASSOC_STATUS_ASSOCIATION_RESPONSE_START DOT11_ASSOC_STATUS_ASSOCIATION_RESPONSE
   1624 #define DOT11_ASSOC_STATUS_ASSOCIATION_RESPONSE_END 0x0003ffffU
   1625 
   1626 #define DOT11_ASSOC_STATUS_REASON_CODE_MASK 0xffffU
   1627 
   1628 #define DOT11_ASSOC_STATUS_IHV_START 0x80000000U
   1629 #define DOT11_ASSOC_STATUS_IHV_END 0xffffffffU
   1630 
   1631 #define DOT11_ASSOCIATION_COMPLETION_PARAMETERS_REVISION_1 1
   1632 #define DOT11_ASSOCIATION_COMPLETION_PARAMETERS_REVISION_2 2
   1633 
   1634 typedef struct DOT11_ASSOCIATION_COMPLETION_PARAMETERS {
   1635   NDIS_OBJECT_HEADER Header;
   1636   DOT11_MAC_ADDRESS MacAddr;
   1637   DOT11_ASSOC_STATUS uStatus;
   1638   BOOLEAN bReAssocReq;
   1639   BOOLEAN bReAssocResp;
   1640   ULONG uAssocReqOffset, uAssocReqSize;
   1641   ULONG uAssocRespOffset, uAssocRespSize;
   1642   ULONG uBeaconOffset, uBeaconSize;
   1643   ULONG uIHVDataOffset, uIHVDataSize;
   1644   DOT11_AUTH_ALGORITHM AuthAlgo;
   1645   DOT11_CIPHER_ALGORITHM UnicastCipher;
   1646   DOT11_CIPHER_ALGORITHM MulticastCipher;
   1647   ULONG uActivePhyListOffset, uActivePhyListSize;
   1648   BOOLEAN bFourAddressSupported;
   1649   BOOLEAN bPortAuthorized;
   1650   UCHAR ucActiveQoSProtocol;
   1651   DOT11_DS_INFO DSInfo;
   1652   ULONG uEncapTableOffset, uEncapTableSize;
   1653 #if NTDDI_VERSION >= NTDDI_WIN8
   1654   DOT11_CIPHER_ALGORITHM MulticastMgmtCipher;
   1655   ULONG uAssocComebackTime;
   1656 #endif
   1657 } DOT11_ASSOCIATION_COMPLETION_PARAMETERS, *PDOT11_ASSOCIATION_COMPLETION_PARAMETERS;
   1658 
   1659 #define DOT11_CONNECTION_STATUS_SUCCESS DOT11_ASSOC_STATUS_SUCCESS
   1660 #define DOT11_CONNECTION_STATUS_FAILURE DOT11_ASSOC_STATUS_FAILURE
   1661 #define DOT11_CONNECTION_STATUS_CANDIDATE_LIST_EXHAUSTED DOT11_ASSOC_STATUS_CANDIDATE_LIST_EXHAUSTED
   1662 #define DOT11_CONNECTION_STATUS_PHY_POWER_DOWN DOT11_ASSOC_STATUS_RADIO_OFF
   1663 #define DOT11_CONNECTION_STATUS_CANCELLED DOT11_ASSOC_STATUS_CANCELLED
   1664 #define DOT11_CONNECTION_STATUS_IHV_START DOT11_ASSOC_STATUS_IHV_START
   1665 #define DOT11_CONNECTION_STATUS_IHV_END DOT11_ASSOC_STATUS_IHV_END
   1666 
   1667 #define DOT11_ROAMING_REASON_BETTER_AP_FOUND DOT11_ASSOC_STATUS_ROAMING_BETTER_AP_FOUND
   1668 #define DOT11_ROAMING_REASON_ASSOCIATION_LOST DOT11_ASSOC_STATUS_ROAMING_ASSOCIATION_LOST
   1669 #define DOT11_ROAMING_REASON_ADHOC DOT11_ASSOC_STATUS_ROAMING_ADHOC
   1670 #define DOT11_ROAMING_REASON_IHV_START DOT11_ASSOC_STATUS_IHV_START
   1671 #define DOT11_ROAMING_REASON_IHV_END DOT11_ASSOC_STATUS_IHV_END
   1672 
   1673 #define DOT11_DISASSOC_REASON_OS DOT11_ASSOC_STATUS_DISASSOCIATED_BY_OS
   1674 #define DOT11_DISASSOC_REASON_PEER_UNREACHABLE DOT11_ASSOC_STATUS_UNREACHABLE
   1675 #define DOT11_DISASSOC_REASON_PEER_DEAUTHENTICATED DOT11_ASSOC_STATUS_PEER_DEAUTHENTICATED
   1676 #define DOT11_DISASSOC_REASON_PEER_DISASSOCIATED DOT11_ASSOC_STATUS_PEER_DISASSOCIATED
   1677 #define DOT11_DISASSOC_REASON_RADIO_OFF DOT11_ASSOC_STATUS_RADIO_OFF
   1678 #define DOT11_DISASSOC_REASON_PHY_DISABLED DOT11_ASSOC_STATUS_PHY_DISABLED
   1679 #define DOT11_DISASSOC_REASON_IHV_START DOT11_ASSOC_STATUS_IHV_START
   1680 #define DOT11_DISASSOC_REASON_IHV_END DOT11_ASSOC_STATUS_IHV_END
   1681 
   1682 #define DOT11_CONNECTION_START_PARAMETERS_REVISION_1 1
   1683 #define DOT11_CONNECTION_COMPLETION_PARAMETERS_REVISION_1 1
   1684 #define DOT11_ROAMING_START_PARAMETERS_REVISION_1 1
   1685 #define DOT11_ROAMING_COMPLETION_PARAMETERS_REVISION_1 1
   1686 #define DOT11_DISASSOCIATION_PARAMETERS_REVISION_1 1
   1687 #define DOT11_TKIPMIC_FAILURE_PARAMETERS_REVISION_1 1
   1688 #define DOT11_PMKID_CANDIDATE_LIST_PARAMETERS_REVISION_1 1
   1689 #define DOT11_PHY_STATE_PARAMETERS_REVISION_1 1
   1690 #define DOT11_LINK_QUALITY_PARAMETERS_REVISION_1 1
   1691 #define DOT11_EXTSTA_SEND_CONTEXT_REVISION_1 1
   1692 #define DOT11_EXTSTA_RECV_CONTEXT_REVISION_1 1
   1693 
   1694 typedef struct DOT11_CONNECTION_START_PARAMETERS {
   1695   NDIS_OBJECT_HEADER Header;
   1696   DOT11_BSS_TYPE BSSType;
   1697   DOT11_MAC_ADDRESS AdhocBSSID;
   1698   DOT11_SSID AdhocSSID;
   1699 } DOT11_CONNECTION_START_PARAMETERS, *PDOT11_CONNECTION_START_PARAMETERS;
   1700 
   1701 typedef struct DOT11_CONNECTION_COMPLETION_PARAMETERS {
   1702   NDIS_OBJECT_HEADER Header;
   1703   DOT11_ASSOC_STATUS uStatus;
   1704 } DOT11_CONNECTION_COMPLETION_PARAMETERS, *PDOT11_CONNECTION_COMPLETION_PARAMETERS;
   1705 
   1706 typedef struct DOT11_ROAMING_START_PARAMETERS {
   1707   NDIS_OBJECT_HEADER Header;
   1708   DOT11_MAC_ADDRESS AdhocBSSID;
   1709   DOT11_SSID AdhocSSID;
   1710   DOT11_ASSOC_STATUS uRoamingReason;
   1711 } DOT11_ROAMING_START_PARAMETERS, *PDOT11_ROAMING_START_PARAMETERS;
   1712 
   1713 typedef struct DOT11_ROAMING_COMPLETION_PARAMETERS {
   1714   NDIS_OBJECT_HEADER Header;
   1715   DOT11_ASSOC_STATUS uStatus;
   1716 } DOT11_ROAMING_COMPLETION_PARAMETERS, *PDOT11_ROAMING_COMPLETION_PARAMETERS;
   1717 
   1718 typedef struct DOT11_DISASSOCIATION_PARAMETERS {
   1719   NDIS_OBJECT_HEADER Header;
   1720   DOT11_MAC_ADDRESS MacAddr;
   1721   DOT11_ASSOC_STATUS uReason;
   1722   ULONG uIHVDataOffset, uIHVDataSize;
   1723 } DOT11_DISASSOCIATION_PARAMETERS, *PDOT11_DISASSOCIATION_PARAMETERS;
   1724 
   1725 typedef struct DOT11_TKIPMIC_FAILURE_PARAMETERS {
   1726   NDIS_OBJECT_HEADER Header;
   1727   BOOLEAN bDefaultKeyFailure;
   1728   ULONG uKeyIndex;
   1729   DOT11_MAC_ADDRESS PeerMac;
   1730 } DOT11_TKIPMIC_FAILURE_PARAMETERS, *PDOT11_TKIPMIC_FAILURE_PARAMETERS;
   1731 
   1732 typedef struct DOT11_PMKID_CANDIDATE_LIST_PARAMETERS {
   1733   NDIS_OBJECT_HEADER Header;
   1734   ULONG uCandidateListSize;
   1735   ULONG uCandidateListOffset;
   1736 } DOT11_PMKID_CANDIDATE_LIST_PARAMETERS, *PDOT11_PMKID_CANDIDATE_LIST_PARAMETERS;
   1737 
   1738 typedef struct DOT11_BSSID_CANDIDATE {
   1739   DOT11_MAC_ADDRESS BSSID;
   1740   ULONG uFlags;
   1741 } DOT11_BSSID_CANDIDATE, *PDOT11_BSSID_CANDIDATE;
   1742 
   1743 typedef struct DOT11_PHY_STATE_PARAMETERS {
   1744   NDIS_OBJECT_HEADER Header;
   1745   ULONG uPhyId;
   1746   BOOLEAN bHardwarePhyState;
   1747   BOOLEAN bSoftwarePhyState;
   1748 } DOT11_PHY_STATE_PARAMETERS, *PDOT11_PHY_STATE_PARAMETERS;
   1749 
   1750 typedef struct DOT11_LINK_QUALITY_ENTRY {
   1751   DOT11_MAC_ADDRESS PeerMacAddr;
   1752   UCHAR ucLinkQuality;
   1753 } DOT11_LINK_QUALITY_ENTRY, *PDOT11_LINK_QUALITY_ENTRY;
   1754 
   1755 typedef struct DOT11_LINK_QUALITY_PARAMETERS {
   1756   NDIS_OBJECT_HEADER Header;
   1757   ULONG uLinkQualityListSize;
   1758   ULONG uLinkQualityListOffset;
   1759 } DOT11_LINK_QUALITY_PARAMETERS, *PDOT11_LINK_QUALITY_PARAMETERS;
   1760 
   1761 typedef struct DOT11_EXTSTA_SEND_CONTEXT {
   1762   NDIS_OBJECT_HEADER Header;
   1763   USHORT usExemptionActionType;
   1764   ULONG uPhyId;
   1765   ULONG uDelayedSleepValue;
   1766 #ifdef __WIDL__
   1767   ULONG_PTR pvMediaSpecificInfo;
   1768 #else
   1769   PVOID pvMediaSpecificInfo;
   1770 #endif
   1771   ULONG uSendFlags;
   1772 } DOT11_EXTSTA_SEND_CONTEXT, *PDOT11_EXTSTA_SEND_CONTEXT;
   1773 
   1774 typedef struct DOT11_EXTSTA_RECV_CONTEXT {
   1775   NDIS_OBJECT_HEADER Header;
   1776   ULONG uReceiveFlags;
   1777   ULONG uPhyId;
   1778   ULONG uChCenterFrequency;
   1779   USHORT usNumberOfMPDUsReceived;
   1780   LONG lRSSI;
   1781   UCHAR ucDataRate;
   1782   ULONG uSizeMediaSpecificInfo;
   1783 #ifdef __WIDL__
   1784   ULONG_PTR pvMediaSpecificInfo;
   1785 #else
   1786   PVOID pvMediaSpecificInfo;
   1787 #endif
   1788   ULONGLONG ullTimestamp;
   1789 } DOT11_EXTSTA_RECV_CONTEXT, *PDOT11_EXTSTA_RECV_CONTEXT;
   1790 
   1791 #define OID_DOT11_PRIVATE_OIDS_START (OID_DOT11_NDIS_START + 1024)
   1792 
   1793 #define OID_DOT11_CURRENT_ADDRESS (OID_DOT11_PRIVATE_OIDS_START + 2)
   1794 #define OID_DOT11_PERMANENT_ADDRESS (OID_DOT11_PRIVATE_OIDS_START + 3)
   1795 #define OID_DOT11_MULTICAST_LIST (OID_DOT11_PRIVATE_OIDS_START + 4)
   1796 #define OID_DOT11_MAXIMUM_LIST_SIZE (OID_DOT11_PRIVATE_OIDS_START + 5)
   1797 
   1798 #define DOT11_RECV_FLAG_RAW_PACKET 0x00000001U
   1799 #define DOT11_RECV_FLAG_RAW_PACKET_FCS_FAILURE 0x00000002U
   1800 #define DOT11_RECV_FLAG_RAW_PACKET_TIMESTAMP 0x00000004U
   1801 
   1802 #define DOT11_PMKID_CANDIDATE_PREAUTH_ENABLED 0x00000001U
   1803 
   1804 #define DEFINE_NWF_GUID(NAME, ORD) DEFINE_GUID (NAME, 0x6cb9a43e + (ORD), 0xc45f, 0x4039, 0x9f, 0xe6, 0xd0, 0x8c, 0xb0, 0x57, 0x18, 0x4c)
   1805 
   1806 DEFINE_NWF_GUID (GUID_NWF_OFFLOAD_CAPABILITY, 0);
   1807 DEFINE_NWF_GUID (GUID_NWF_CURRENT_OFFLOAD_CAPABILITY, 1);
   1808 DEFINE_NWF_GUID (GUID_NWF_WEP_OFFLOAD, 2);
   1809 DEFINE_NWF_GUID (GUID_NWF_WEP_UPLOAD, 3);
   1810 DEFINE_NWF_GUID (GUID_NWF_DEFAULT_WEP_OFFLOAD, 4);
   1811 DEFINE_NWF_GUID (GUID_NWF_DEFAULT_WEP_UPLOAD, 5);
   1812 DEFINE_NWF_GUID (GUID_NWF_MPDU_MAX_LENGTH, 6);
   1813 DEFINE_NWF_GUID (GUID_NWF_OPERATION_MODE_CAPABILITY, 7);
   1814 DEFINE_NWF_GUID (GUID_NWF_CURRENT_OPERATION_MODE, 8);
   1815 DEFINE_NWF_GUID (GUID_NWF_CURRENT_PACKET_FILTER, 9);
   1816 DEFINE_NWF_GUID (GUID_NWF_ATIM_WINDOW, 10);
   1817 DEFINE_NWF_GUID (GUID_NWF_SCAN_REQUEST, 11);
   1818 DEFINE_NWF_GUID (GUID_NWF_CURRENT_PHY_TYPE, 12);
   1819 DEFINE_NWF_GUID (GUID_NWF_JOIN_REQUEST, 13);
   1820 DEFINE_NWF_GUID (GUID_NWF_START_REQUEST, 14);
   1821 DEFINE_NWF_GUID (GUID_NWF_UPDATE_IE, 15);
   1822 DEFINE_NWF_GUID (GUID_NWF_RESET_REQUEST, 16);
   1823 DEFINE_NWF_GUID (GUID_NWF_NIC_POWER_STATE, 17);
   1824 DEFINE_NWF_GUID (GUID_NWF_OPTIONAL_CAPABILITY, 18);
   1825 DEFINE_NWF_GUID (GUID_NWF_CURRENT_OPTIONAL_CAPABILITY, 19);
   1826 DEFINE_NWF_GUID (GUID_NWF_STATION_ID, 20);
   1827 DEFINE_NWF_GUID (GUID_NWF_MEDIUM_OCCUPANCY_LIMIT, 21);
   1828 DEFINE_NWF_GUID (GUID_NWF_CF_POLLABLE, 22);
   1829 DEFINE_NWF_GUID (GUID_NWF_CFP_PERIOD, 23);
   1830 DEFINE_NWF_GUID (GUID_NWF_CFP_MAX_DURATION, 24);
   1831 DEFINE_NWF_GUID (GUID_NWF_POWER_MGMT_MODE, 25);
   1832 DEFINE_NWF_GUID (GUID_NWF_OPERATIONAL_RATE_SET, 26);
   1833 DEFINE_NWF_GUID (GUID_NWF_BEACON_PERIOD, 27);
   1834 DEFINE_NWF_GUID (GUID_NWF_DTIM_PERIOD, 28);
   1835 DEFINE_NWF_GUID (GUID_NWF_WEP_ICV_ERROR_COUNT, 29);
   1836 DEFINE_NWF_GUID (GUID_NWF_MAC_ADDRESS, 30);
   1837 DEFINE_NWF_GUID (GUID_NWF_RTS_THRESHOLD, 31);
   1838 DEFINE_NWF_GUID (GUID_NWF_SHORT_RETRY_LIMIT, 32);
   1839 DEFINE_NWF_GUID (GUID_NWF_LONG_RETRY_LIMIT, 33);
   1840 DEFINE_NWF_GUID (GUID_NWF_FRAGMENTATION_THRESHOLD, 34);
   1841 DEFINE_NWF_GUID (GUID_NWF_MAX_TRANSMIT_MSDU_LIFETIME, 35);
   1842 DEFINE_NWF_GUID (GUID_NWF_MAX_RECEIVE_LIFETIME, 36);
   1843 DEFINE_NWF_GUID (GUID_NWF_COUNTERS_ENTRY, 37);
   1844 DEFINE_NWF_GUID (GUID_NWF_SUPPORTED_PHY_TYPES, 38);
   1845 DEFINE_NWF_GUID (GUID_NWF_CURRENT_REG_DOMAIN, 39);
   1846 DEFINE_NWF_GUID (GUID_NWF_TEMP_TYPE, 40);
   1847 DEFINE_NWF_GUID (GUID_NWF_CURRENT_TX_ANTENNA, 41);
   1848 DEFINE_NWF_GUID (GUID_NWF_DIVERSITY_SUPPORT, 42);
   1849 DEFINE_NWF_GUID (GUID_NWF_CURRENT_RX_ANTENNA, 43);
   1850 DEFINE_NWF_GUID (GUID_NWF_SUPPORTED_POWER_LEVELS, 44);
   1851 DEFINE_NWF_GUID (GUID_NWF_CURRENT_TX_POWER_LEVEL, 45);
   1852 DEFINE_NWF_GUID (GUID_NWF_HOP_TIME, 46);
   1853 DEFINE_NWF_GUID (GUID_NWF_CURRENT_CHANNEL_NUMBER, 47);
   1854 DEFINE_NWF_GUID (GUID_NWF_MAX_DWELL_TIME, 48);
   1855 DEFINE_NWF_GUID (GUID_NWF_CURRENT_DWELL_TIME, 49);
   1856 DEFINE_NWF_GUID (GUID_NWF_CURRENT_SET, 50);
   1857 DEFINE_NWF_GUID (GUID_NWF_CURRENT_PATTERN, 51);
   1858 DEFINE_NWF_GUID (GUID_NWF_CURRENT_INDEX, 52);
   1859 DEFINE_NWF_GUID (GUID_NWF_CURRENT_CHANNEL, 53);
   1860 DEFINE_NWF_GUID (GUID_NWF_CCA_MODE_SUPPORTED, 54);
   1861 DEFINE_NWF_GUID (GUID_NWF_CURRENT_CCA_MODE, 55);
   1862 DEFINE_NWF_GUID (GUID_NWF_ED_THRESHOLD, 56);
   1863 DEFINE_NWF_GUID (GUID_NWF_CCA_WATCHDOG_TIMER_MAX, 57);
   1864 DEFINE_NWF_GUID (GUID_NWF_CCA_WATCHDOG_COUNT_MAX, 58);
   1865 DEFINE_NWF_GUID (GUID_NWF_CCA_WATCHDOG_TIMER_MIN, 59);
   1866 DEFINE_NWF_GUID (GUID_NWF_CCA_WATCHDOG_COUNT_MIN, 60);
   1867 DEFINE_NWF_GUID (GUID_NWF_REG_DOMAINS_SUPPORT_VALUE, 61);
   1868 DEFINE_NWF_GUID (GUID_NWF_SUPPORTED_TX_ANTENNA, 62);
   1869 DEFINE_NWF_GUID (GUID_NWF_SUPPORTED_RX_ANTENNA, 63);
   1870 DEFINE_NWF_GUID (GUID_NWF_DIVERSITY_SELECTION_RX, 64);
   1871 DEFINE_NWF_GUID (GUID_NWF_SUPPORTED_DATA_RATES_VALUE, 65);
   1872 DEFINE_NWF_GUID (GUID_NWF_CURRENT_FREQUENCY, 66);
   1873 DEFINE_NWF_GUID (GUID_NWF_TI_THRESHOLD, 67);
   1874 DEFINE_NWF_GUID (GUID_NWF_FREQUENCY_BANDS_SUPPORTED, 68);
   1875 DEFINE_NWF_GUID (GUID_NWF_SHORT_PREAMBLE_OPTION_IMPLEMENTED, 69);
   1876 DEFINE_NWF_GUID (GUID_NWF_PBCC_OPTION_IMPLEMENTED, 70);
   1877 DEFINE_NWF_GUID (GUID_NWF_CHANNEL_AGILITY_PRESENT, 71);
   1878 DEFINE_NWF_GUID (GUID_NWF_CHANNEL_AGILITY_ENABLED, 72);
   1879 DEFINE_NWF_GUID (GUID_NWF_HR_CCA_MODE_SUPPORTED, 73);
   1880 DEFINE_NWF_GUID (GUID_NWF_MULTI_DOMAIN_CAPABILITY_IMPLEMENTED, 74);
   1881 DEFINE_NWF_GUID (GUID_NWF_MULTI_DOMAIN_CAPABILITY_ENABLED, 75);
   1882 DEFINE_NWF_GUID (GUID_NWF_COUNTRY_STRING, 76);
   1883 DEFINE_NWF_GUID (GUID_NWF_MULTI_DOMAIN_CAPABILITY, 77);
   1884 DEFINE_NWF_GUID (GUID_NWF_EHCC_PRIME_RADIX, 78);
   1885 DEFINE_NWF_GUID (GUID_NWF_EHCC_NUMBER_OF_CHANNELS_FAMILY_INDEX, 79);
   1886 DEFINE_NWF_GUID (GUID_NWF_EHCC_CAPABILITY_IMPLEMENTED, 80);
   1887 DEFINE_NWF_GUID (GUID_NWF_EHCC_CAPABILITY_ENABLED, 81);
   1888 DEFINE_NWF_GUID (GUID_NWF_HOP_ALGORITHM_ADOPTED, 82);
   1889 DEFINE_NWF_GUID (GUID_NWF_RANDOM_TABLE_FLAG, 83);
   1890 DEFINE_NWF_GUID (GUID_NWF_NUMBER_OF_HOPPING_SETS, 84);
   1891 DEFINE_NWF_GUID (GUID_NWF_HOP_MODULUS, 85);
   1892 DEFINE_NWF_GUID (GUID_NWF_HOP_OFFSET, 86);
   1893 DEFINE_NWF_GUID (GUID_NWF_HOPPING_PATTERN, 87);
   1894 DEFINE_NWF_GUID (GUID_NWF_RANDOM_TABLE_FIELD_NUMBER, 88);
   1895 DEFINE_NWF_GUID (GUID_NWF_WPA_TSC, 89);
   1896 DEFINE_NWF_GUID (GUID_NWF_RSSI_RANGE, 90);
   1897 DEFINE_NWF_GUID (GUID_NWF_RF_USAGE, 91);
   1898 DEFINE_NWF_GUID (GUID_NWF_NIC_SPECIFIC_EXTENSION, 92);
   1899 DEFINE_NWF_GUID (GUID_NWF_AP_JOIN_REQUEST, 93);
   1900 DEFINE_NWF_GUID (GUID_NWF_ERP_PBCC_OPTION_IMPLEMENTED, 94);
   1901 DEFINE_NWF_GUID (GUID_NWF_ERP_PBCC_OPTION_ENABLED, 95);
   1902 DEFINE_NWF_GUID (GUID_NWF_DSSS_OFDM_OPTION_IMPLEMENTED, 96);
   1903 DEFINE_NWF_GUID (GUID_NWF_DSSS_OFDM_OPTION_ENABLED, 97);
   1904 DEFINE_NWF_GUID (GUID_NWF_SHORT_SLOT_TIME_OPTION_IMPLEMENTED, 98);
   1905 DEFINE_NWF_GUID (GUID_NWF_SHORT_SLOT_TIME_OPTION_ENABLED, 99);
   1906 DEFINE_NWF_GUID (GUID_NWF_MAX_MAC_ADDRESS_STATES, 100);
   1907 DEFINE_NWF_GUID (GUID_NWF_RECV_SENSITIVITY_LIST, 101);
   1908 DEFINE_NWF_GUID (GUID_NWF_WME_IMPLEMENTED, 102);
   1909 DEFINE_NWF_GUID (GUID_NWF_WME_ENABLED, 103);
   1910 DEFINE_NWF_GUID (GUID_NWF_WME_AC_PARAMETERS, 104);
   1911 DEFINE_NWF_GUID (GUID_NWF_WME_UPDATE_IE, 105);
   1912 DEFINE_NWF_GUID (GUID_NWF_QOS_TX_QUEUES_SUPPORTED, 106);
   1913 DEFINE_NWF_GUID (GUID_NWF_QOS_TX_DURATION, 107);
   1914 DEFINE_NWF_GUID (GUID_NWF_QOS_TX_MEDIUM_TIME, 108);
   1915 DEFINE_NWF_GUID (GUID_NWF_SUPPORTED_OFDM_FREQUENCY_LIST, 109);
   1916 DEFINE_NWF_GUID (GUID_NWF_SUPPORTED_DSSS_CHANNEL_LIST, 110);
   1917 DEFINE_NWF_GUID (GUID_NWF_AUTO_CONFIG_ENABLED, 120);
   1918 DEFINE_NWF_GUID (GUID_NWF_ENUM_BSS_LIST, 121);
   1919 DEFINE_NWF_GUID (GUID_NWF_FLUSH_BSS_LIST, 122);
   1920 DEFINE_NWF_GUID (GUID_NWF_POWER_MGMT_REQUEST, 123);
   1921 DEFINE_NWF_GUID (GUID_NWF_DESIRED_SSID_LIST, 124);
   1922 DEFINE_NWF_GUID (GUID_NWF_EXCLUDED_MAC_ADDRESS_LIST, 125);
   1923 DEFINE_NWF_GUID (GUID_NWF_DESIRED_BSSID_LIST, 126);
   1924 DEFINE_NWF_GUID (GUID_NWF_DESIRED_BSS_TYPE, 127);
   1925 DEFINE_NWF_GUID (GUID_NWF_PMKID_LIST, 128);
   1926 DEFINE_NWF_GUID (GUID_NWF_CONNECT_REQUEST, 129);
   1927 DEFINE_NWF_GUID (GUID_NWF_EXCLUDE_UNENCRYPTED, 130);
   1928 DEFINE_NWF_GUID (GUID_NWF_STATISTICS, 131);
   1929 DEFINE_NWF_GUID (GUID_NWF_PRIVACY_EXEMPTION_LIST, 132);
   1930 DEFINE_NWF_GUID (GUID_NWF_ENABLED_AUTHENTICATION_ALGORITHM, 133);
   1931 DEFINE_NWF_GUID (GUID_NWF_SUPPORTED_UNICAST_ALGORITHM_PAIR, 134);
   1932 DEFINE_NWF_GUID (GUID_NWF_ENABLED_UNICAST_CIPHER_ALGORITHM, 135);
   1933 DEFINE_NWF_GUID (GUID_NWF_SUPPORTED_MULTICAST_ALGORITHM_PAIR, 136);
   1934 DEFINE_NWF_GUID (GUID_NWF_ENABLED_MULTICAST_CIPHER_ALGORITHM, 137);
   1935 DEFINE_NWF_GUID (GUID_NWF_CIPHER_DEFAULT_KEY_ID, 138);
   1936 DEFINE_NWF_GUID (GUID_NWF_CIPHER_DEFAULT_KEY, 139);
   1937 DEFINE_NWF_GUID (GUID_NWF_CIPHER_KEY_MAPPING_KEY, 140);
   1938 DEFINE_NWF_GUID (GUID_NWF_ENUM_ASSOCIATION_INFO, 141);
   1939 DEFINE_NWF_GUID (GUID_NWF_DISCONNECT_REQUEST, 142);
   1940 DEFINE_NWF_GUID (GUID_NWF_UNICAST_USE_GROUP_ENABLED, 143);
   1941 DEFINE_NWF_GUID (GUID_NWF_PHY_STATE, 144);
   1942 DEFINE_NWF_GUID (GUID_NWF_DESIRED_PHY_LIST, 145);
   1943 DEFINE_NWF_GUID (GUID_NWF_CURRENT_PHY_ID, 146);
   1944 DEFINE_NWF_GUID (GUID_NWF_MEDIA_STREAMING_ENABLED, 147);
   1945 DEFINE_NWF_GUID (GUID_NWF_UNREACHABLE_DETECTION_THRESHOLD, 148);
   1946 DEFINE_NWF_GUID (GUID_NWF_ACTIVE_PHY_LIST, 149);
   1947 DEFINE_NWF_GUID (GUID_NWF_EXTSTA_CAPABILITY, 150);
   1948 DEFINE_NWF_GUID (GUID_NWF_DATA_RATE_MAPPING_TABLE, 151);
   1949 DEFINE_NWF_GUID (GUID_NWF_SUPPORTED_COUNTRY_OR_REGION_STRING, 152);
   1950 DEFINE_NWF_GUID (GUID_NWF_DESIRED_COUNTRY_OR_REGION_STRING, 153);
   1951 DEFINE_NWF_GUID (GUID_NWF_PORT_STATE_NOTIFICATION, 154);
   1952 DEFINE_NWF_GUID (GUID_NWF_IBSS_PARAMS, 155);
   1953 DEFINE_NWF_GUID (GUID_NWF_QOS_PARAMS, 156);
   1954 DEFINE_NWF_GUID (GUID_NWF_SAFE_MODE_ENABLED, 157);
   1955 DEFINE_NWF_GUID (GUID_NWF_HIDDEN_NETWORK_ENABLED, 158);
   1956 DEFINE_NWF_GUID (GUID_NWF_ASSOCIATION_PARAMS, 159);
   1957 DEFINE_NWF_GUID (GUID_NWF_CURRENT_ADDRESS, 1026);
   1958 DEFINE_NWF_GUID (GUID_NWF_PERMANENT_ADDRESS, 1027);
   1959 DEFINE_NWF_GUID (GUID_NWF_MULTICAST_LIST, 1028);
   1960 DEFINE_NWF_GUID (GUID_NWF_MAXIMUM_LIST_SIZE, 1029);
   1961 #endif
   1962 
   1963 #ifdef NWF_EXTAP_SUPPORTED
   1964 #define NWF_EXTAP_OID (0x03U)
   1965 
   1966 #define OID_DOT11_WPS_ENABLED NWF_DEFINE_OID (0x01, NWF_EXTAP_OID, NWF_MANDATORY_OID)
   1967 #define OID_DOT11_START_AP_REQUEST NWF_DEFINE_OID (0x02, NWF_EXTAP_OID, NWF_MANDATORY_OID)
   1968 #define OID_DOT11_AVAILABLE_CHANNEL_LIST NWF_DEFINE_OID (0x03, NWF_EXTAP_OID, NWF_MANDATORY_OID)
   1969 #define OID_DOT11_AVAILABLE_FREQUENCY_LIST NWF_DEFINE_OID (0x04, NWF_EXTAP_OID, NWF_MANDATORY_OID)
   1970 #define OID_DOT11_DISASSOCIATE_PEER_REQUEST NWF_DEFINE_OID (0x05, NWF_EXTAP_OID, NWF_MANDATORY_OID)
   1971 #define OID_DOT11_INCOMING_ASSOCIATION_DECISION NWF_DEFINE_OID (0x06, NWF_EXTAP_OID, NWF_MANDATORY_OID)
   1972 #define OID_DOT11_ADDITIONAL_IE NWF_DEFINE_OID (0x07, NWF_EXTAP_OID, NWF_MANDATORY_OID)
   1973 #define OID_DOT11_ENUM_PEER_INFO NWF_DEFINE_OID (0x08, NWF_EXTAP_OID, NWF_MANDATORY_OID)
   1974 
   1975 #define DOT11_ASSOC_ERROR_SOURCE_OS 0x0
   1976 #define DOT11_ASSOC_ERROR_SOURCE_REMOTE 0x01
   1977 #define DOT11_ASSOC_ERROR_SOURCE_OTHER 0xff
   1978 
   1979 #define DOT11_STOP_AP_REASON_FREQUENCY_NOT_AVAILABLE 0x1
   1980 #define DOT11_STOP_AP_REASON_CHANNEL_NOT_AVAILABLE 0x2
   1981 #define DOT11_STOP_AP_REASON_AP_ACTIVE 0x3
   1982 
   1983 #define DOT11_STOP_AP_REASON_IHV_START 0xff000000
   1984 #define DOT11_STOP_AP_REASON_IHV_END 0xffffffff
   1985 
   1986 #define DOT11_CAN_SUSTAIN_AP_REASON_IHV_START 0xff000000
   1987 #define DOT11_CAN_SUSTAIN_AP_REASON_IHV_END 0xffffffff
   1988 
   1989 #define DOT11_EXTAP_ATTRIBUTES_REVISION_1 1
   1990 #define DOT11_INCOMING_ASSOC_STARTED_PARAMETERS_REVISION_1 1
   1991 #define DOT11_INCOMING_ASSOC_REQUEST_RECEIVED_PARAMETERS_REVISION_1 1
   1992 #define DOT11_INCOMING_ASSOC_COMPLETION_PARAMETERS_REVISION_1 1
   1993 #define DOT11_STOP_AP_PARAMETERS_REVISION_1 1
   1994 #define DOT11_PHY_FREQUENCY_ADOPTED_PARAMETERS_REVISION_1 1
   1995 #define DOT11_CAN_SUSTAIN_AP_PARAMETERS_REVISION_1 1
   1996 #define DOT11_AVAILABLE_CHANNEL_LIST_REVISION_1 1
   1997 #define DOT11_AVAILABLE_FREQUENCY_LIST_REVISION_1 1
   1998 #define DOT11_DISASSOCIATE_PEER_REQUEST_REVISION_1 1
   1999 #define DOT11_INCOMING_ASSOC_DECISION_REVISION_1 1
   2000 #define DOT11_ADDITIONAL_IE_REVISION_1 1
   2001 #define DOT11_EXTAP_SEND_CONTEXT_REVISION_1 1
   2002 #define DOT11_EXTAP_RECV_CONTEXT_REVISION_1 1
   2003 #define DOT11_PEER_INFO_LIST_REVISION_1 1
   2004 #ifdef NWF_WFD_SUPPORTED
   2005 #define DOT11_INCOMING_ASSOC_DECISION_REVISION_2 2
   2006 #endif
   2007 
   2008 #define NDIS_SIZEOF_DOT11_EXTAP_ATTRIBUTES_REVISION_1 sizeof (DOT11_EXTAP_ATTRIBUTES)
   2009 #define DOT11_SIZEOF_INCOMING_ASSOC_DECISION_REVISION_1 sizeof (DOT11_INCOMING_ASSOC_DECISION)
   2010 #ifdef NWF_WFD_SUPPORTED
   2011 #define DOT11_SIZEOF_INCOMING_ASSOC_DECISION_REVISION_2 sizeof (DOT11_INCOMING_ASSOC_DECISION_V2)
   2012 #endif
   2013 
   2014 typedef struct _DOT11_EXTAP_ATTRIBUTES {
   2015   NDIS_OBJECT_HEADER Header;
   2016   ULONG uScanSSIDListSize;
   2017   ULONG uDesiredSSIDListSize;
   2018   ULONG uPrivacyExemptionListSize;
   2019   ULONG uAssociationTableSize;
   2020   ULONG uDefaultKeyTableSize;
   2021   ULONG uWEPKeyValueMaxLength;
   2022   BOOLEAN bStrictlyOrderedServiceClassImplemented;
   2023   ULONG uNumSupportedCountryOrRegionStrings;
   2024 #ifdef __WIDL__
   2025   [size_is (uNumSupportedCountryOrRegionStrings)]
   2026 #endif
   2027   PDOT11_COUNTRY_OR_REGION_STRING pSupportedCountryOrRegionStrings;
   2028   ULONG uInfraNumSupportedUcastAlgoPairs;
   2029 #ifdef __WIDL__
   2030   [size_is (uInfraNumSupportedUcastAlgoPairs)]
   2031 #endif
   2032   PDOT11_AUTH_CIPHER_PAIR pInfraSupportedUcastAlgoPairs;
   2033   ULONG uInfraNumSupportedMcastAlgoPairs;
   2034 #ifdef __WIDL__
   2035   [size_is (uInfraNumSupportedMcastAlgoPairs)]
   2036 #endif
   2037   PDOT11_AUTH_CIPHER_PAIR pInfraSupportedMcastAlgoPairs;
   2038 } DOT11_EXTAP_ATTRIBUTES, *PDOT11_EXTAP_ATTRIBUTES;
   2039 
   2040 typedef struct _DOT11_INCOMING_ASSOC_STARTED_PARAMETERS {
   2041   NDIS_OBJECT_HEADER Header;
   2042   DOT11_MAC_ADDRESS PeerMacAddr;
   2043 } DOT11_INCOMING_ASSOC_STARTED_PARAMETERS, *PDOT11_INCOMING_ASSOC_STARTED_PARAMETERS;
   2044 
   2045 typedef struct _DOT11_INCOMING_ASSOC_REQUEST_RECEIVED_PARAMETERS {
   2046   NDIS_OBJECT_HEADER Header;
   2047   DOT11_MAC_ADDRESS PeerMacAddr;
   2048   BOOLEAN bReAssocReq;
   2049   ULONG uAssocReqOffset;
   2050   ULONG uAssocReqSize;
   2051 } DOT11_INCOMING_ASSOC_REQUEST_RECEIVED_PARAMETERS, *PDOT11_INCOMING_ASSOC_REQUEST_RECEIVED_PARAMETERS;
   2052 
   2053 typedef struct _DOT11_INCOMING_ASSOC_COMPLETION_PARAMETERS {
   2054   NDIS_OBJECT_HEADER Header;
   2055   DOT11_MAC_ADDRESS PeerMacAddr;
   2056   ULONG uStatus;
   2057   UCHAR ucErrorSource;
   2058   BOOLEAN bReAssocReq;
   2059   BOOLEAN bReAssocResp;
   2060   ULONG uAssocReqOffset;
   2061   ULONG uAssocReqSize;
   2062   ULONG uAssocRespOffset;
   2063   ULONG uAssocRespSize;
   2064   DOT11_AUTH_ALGORITHM AuthAlgo;
   2065   DOT11_CIPHER_ALGORITHM UnicastCipher;
   2066   DOT11_CIPHER_ALGORITHM MulticastCipher;
   2067   ULONG uActivePhyListOffset;
   2068   ULONG uActivePhyListSize;
   2069   ULONG uBeaconOffset;
   2070   ULONG uBeaconSize;
   2071 } DOT11_INCOMING_ASSOC_COMPLETION_PARAMETERS, *PDOT11_INCOMING_ASSOC_COMPLETION_PARAMETERS;
   2072 
   2073 typedef struct _DOT11_STOP_AP_PARAMETERS {
   2074   NDIS_OBJECT_HEADER Header;
   2075   ULONG ulReason;
   2076 } DOT11_STOP_AP_PARAMETERS, *PDOT11_STOP_AP_PARAMETERS;
   2077 
   2078 typedef struct _DOT11_PHY_FREQUENCY_ADOPTED_PARAMETERS {
   2079   NDIS_OBJECT_HEADER Header;
   2080   ULONG ulPhyId;
   2081   __C89_NAMELESS union {
   2082     ULONG ulChannel;
   2083     ULONG ulFrequency;
   2084   };
   2085 } DOT11_PHY_FREQUENCY_ADOPTED_PARAMETERS, *PDOT11_PHY_FREQUENCY_ADOPTED_PARAMETERS;
   2086 
   2087 typedef struct _DOT11_CAN_SUSTAIN_AP_PARAMETERS {
   2088   NDIS_OBJECT_HEADER Header;
   2089   ULONG ulReason;
   2090 } DOT11_CAN_SUSTAIN_AP_PARAMETERS, *PDOT11_CAN_SUSTAIN_AP_PARAMETERS;
   2091 
   2092 typedef struct _DOT11_AVAILABLE_CHANNEL_LIST {
   2093   NDIS_OBJECT_HEADER Header;
   2094   ULONG uNumOfEntries;
   2095   ULONG uTotalNumOfEntries;
   2096   ULONG uChannelNumber[1];
   2097 } DOT11_AVAILABLE_CHANNEL_LIST, *PDOT11_AVAILABLE_CHANNEL_LIST;
   2098 
   2099 typedef struct _DOT11_AVAILABLE_FREQUENCY_LIST {
   2100   NDIS_OBJECT_HEADER Header;
   2101   ULONG uNumOfEntries;
   2102   ULONG uTotalNumOfEntries;
   2103   ULONG uFrequencyValue[1];
   2104 } DOT11_AVAILABLE_FREQUENCY_LIST, *PDOT11_AVAILABLE_FREQUENCY_LIST;
   2105 
   2106 typedef struct _DOT11_DISASSOCIATE_PEER_REQUEST {
   2107   NDIS_OBJECT_HEADER Header;
   2108   DOT11_MAC_ADDRESS PeerMacAddr;
   2109   USHORT usReason;
   2110 } DOT11_DISASSOCIATE_PEER_REQUEST, *PDOT11_DISASSOCIATE_PEER_REQUEST;
   2111 
   2112 typedef struct _DOT11_INCOMING_ASSOC_DECISION {
   2113   NDIS_OBJECT_HEADER Header;
   2114   DOT11_MAC_ADDRESS PeerMacAddr;
   2115   BOOLEAN bAccept;
   2116   USHORT usReasonCode;
   2117   ULONG uAssocResponseIEsOffset;
   2118   ULONG uAssocResponseIEsLength;
   2119 } DOT11_INCOMING_ASSOC_DECISION, *PDOT11_INCOMING_ASSOC_DECISION;
   2120 
   2121 #ifdef NWF_WFD_SUPPORTED
   2122 typedef struct _DOT11_INCOMING_ASSOC_DECISION_V2 {
   2123   NDIS_OBJECT_HEADER Header;
   2124   DOT11_MAC_ADDRESS PeerMacAddr;
   2125   BOOLEAN bAccept;
   2126   USHORT usReasonCode;
   2127   ULONG uAssocResponseIEsOffset;
   2128   ULONG uAssocResponseIEsLength;
   2129   DOT11_WFD_STATUS_CODE WFDStatus;
   2130 } DOT11_INCOMING_ASSOC_DECISION_V2, *PDOT11_INCOMING_ASSOC_DECISION_V2;
   2131 #endif
   2132 
   2133 typedef struct _DOT11_ADDITIONAL_IE {
   2134   NDIS_OBJECT_HEADER Header;
   2135   ULONG uBeaconIEsOffset;
   2136   ULONG uBeaconIEsLength;
   2137   ULONG uResponseIEsOffset;
   2138   ULONG uResponseIEsLength;
   2139 } DOT11_ADDITIONAL_IE, *PDOT11_ADDITIONAL_IE;
   2140 
   2141 typedef struct DOT11_EXTSTA_SEND_CONTEXT DOT11_EXTAP_SEND_CONTEXT, *PDOT11_EXTAP_SEND_CONTEXT;
   2142 typedef struct DOT11_EXTSTA_RECV_CONTEXT DOT11_EXTAP_RECV_CONTEXT, *PDOT11_EXTAP_RECV_CONTEXT;
   2143 
   2144 typedef struct _DOT11_PEER_STATISTICS {
   2145   ULONGLONG ullDecryptSuccessCount;
   2146   ULONGLONG ullDecryptFailureCount;
   2147   ULONGLONG ullTxPacketSuccessCount;
   2148   ULONGLONG ullTxPacketFailureCount;
   2149   ULONGLONG ullRxPacketSuccessCount;
   2150   ULONGLONG ullRxPacketFailureCount;
   2151 } DOT11_PEER_STATISTICS, *PDOT11_PEER_STATISTICS;
   2152 
   2153 typedef struct _DOT11_PEER_INFO {
   2154   DOT11_MAC_ADDRESS MacAddress;
   2155   USHORT usCapabilityInformation;
   2156   DOT11_AUTH_ALGORITHM AuthAlgo;
   2157   DOT11_CIPHER_ALGORITHM UnicastCipherAlgo;
   2158   DOT11_CIPHER_ALGORITHM MulticastCipherAlgo;
   2159   BOOLEAN bWpsEnabled;
   2160   USHORT usListenInterval;
   2161   UCHAR ucSupportedRates[MAX_NUM_SUPPORTED_RATES_V2];
   2162   USHORT usAssociationID;
   2163   DOT11_ASSOCIATION_STATE AssociationState;
   2164   DOT11_POWER_MODE PowerMode;
   2165   LARGE_INTEGER liAssociationUpTime;
   2166   DOT11_PEER_STATISTICS Statistics;
   2167 } DOT11_PEER_INFO, *PDOT11_PEER_INFO;
   2168 
   2169 typedef struct _DOT11_PEER_INFO_LIST {
   2170   NDIS_OBJECT_HEADER Header;
   2171   ULONG uNumOfEntries;
   2172   ULONG uTotalNumOfEntries;
   2173   DOT11_PEER_INFO PeerInfo[1];
   2174 } DOT11_PEER_INFO_LIST, *PDOT11_PEER_INFO_LIST;
   2175 #endif
   2176 
   2177 #ifdef NWF_VWIFI_SUPPORTED
   2178 
   2179 #define DOT11_VWIFI_COMBINATION_REVISION_1 1
   2180 typedef struct _DOT11_VWIFI_COMBINATION {
   2181   NDIS_OBJECT_HEADER Header;
   2182   ULONG uNumInfrastructure;
   2183   ULONG uNumAdhoc;
   2184   ULONG uNumSoftAP;
   2185 } DOT11_VWIFI_COMBINATION, *PDOT11_VWIFI_COMBINATION;
   2186 #define DOT11_SIZEOF_VWIFI_COMBINATION_REVISION_1 sizeof (DOT11_VWIFI_COMBINATION)
   2187 
   2188 #define DOT11_VWIFI_COMBINATION_REVISION_2 2
   2189 
   2190 typedef struct _DOT11_VWIFI_COMBINATION_V2 {
   2191   NDIS_OBJECT_HEADER Header;
   2192   ULONG uNumInfrastructure;
   2193   ULONG uNumAdhoc;
   2194   ULONG uNumSoftAP;
   2195   ULONG uNumVirtualStation;
   2196 } DOT11_VWIFI_COMBINATION_V2, *PDOT11_VWIFI_COMBINATION_V2;
   2197 
   2198 #define DOT11_SIZEOF_VWIFI_COMBINATION_REVISION_2 sizeof (DOT11_VWIFI_COMBINATION_V2)
   2199 
   2200 #ifdef NWF_WFD_SUPPORTED
   2201 #define DOT11_VWIFI_COMBINATION_REVISION_3 3
   2202 
   2203 #define DOT11_SIZEOF_VWIFI_COMBINATION_REVISION_3 sizeof (DOT11_VWIFI_COMBINATION_V3)
   2204 
   2205 typedef struct _DOT11_VWIFI_COMBINATION_V3 {
   2206   NDIS_OBJECT_HEADER Header;
   2207   ULONG uNumInfrastructure;
   2208   ULONG uNumAdhoc;
   2209   ULONG uNumSoftAP;
   2210   ULONG uNumVirtualStation;
   2211   ULONG uNumWFDGroup;
   2212 } DOT11_VWIFI_COMBINATION_V3, *PDOT11_VWIFI_COMBINATION_V3;
   2213 #endif
   2214 
   2215 #define NWF_VWIFI_OID (0x04U)
   2216 
   2217 #define OID_DOT11_CREATE_MAC NWF_DEFINE_OID (0x01, NWF_VWIFI_OID, NWF_MANDATORY_OID)
   2218 #define OID_DOT11_DELETE_MAC NWF_DEFINE_OID (0x02, NWF_VWIFI_OID, NWF_MANDATORY_OID)
   2219 #define OID_DOT11_PREFERRED_MAC NWF_DEFINE_OID (0x03, NWF_VWIFI_OID, NWF_MANDATORY_OID)
   2220 #define OID_DOT11_VIRTUAL_STATION_CAPABILITY NWF_DEFINE_OID (0x04, NWF_VWIFI_OID, NWF_OPTIONAL_OID)
   2221 
   2222 #define DOT11_VWIFI_ATTRIBUTES_REVISION_1 1
   2223 #define DOT11_MAC_PARAMETERS_REVISION_1 1
   2224 
   2225 #define DOT11_SIZEOF_MAC_PARAMETERS_REVISION_1 sizeof (DOT11_MAC_PARAMETERS)
   2226 
   2227 typedef struct DOT11_VWIFI_ATTRIBUTES {
   2228   NDIS_OBJECT_HEADER Header;
   2229   ULONG uTotalNumOfEntries;
   2230 #ifdef __WIDL__
   2231   [unique, size_is (uTotalNumOfEntries)] DOT11_VWIFI_COMBINATION Combinations[*];
   2232 #else
   2233   DOT11_VWIFI_COMBINATION Combinations[1];
   2234 #endif
   2235 } DOT11_VWIFI_ATTRIBUTES, *PDOT11_VWIFI_ATTRIBUTES;
   2236 
   2237 typedef struct _DOT11_MAC_PARAMETERS {
   2238   NDIS_OBJECT_HEADER Header;
   2239   ULONG uOpmodeMask;
   2240 } DOT11_MAC_PARAMETERS, *PDOT11_MAC_PARAMETERS;
   2241 
   2242 typedef struct DOT11_MAC_INFO {
   2243   ULONG uReserved;
   2244   ULONG uNdisPortNumber;
   2245   DOT11_MAC_ADDRESS MacAddr;
   2246 } DOT11_MAC_INFO, *PDOT11_MAC_INFO;
   2247 #endif
   2248 
   2249 #ifdef NWF_WFD_SUPPORTED
   2250 
   2251 #define DOT11_WFD_ATTRIBUTES_REVISION_1 1
   2252 
   2253 #define DOT11_SIZEOF_WFD_ATTRIBUTES_REVISION_1 sizeof (DOT11_WFD_ATTRIBUTES)
   2254 
   2255 typedef struct _DOT11_WFD_ATTRIBUTES {
   2256   NDIS_OBJECT_HEADER Header;
   2257   ULONG uNumConcurrentGORole;
   2258   ULONG uNumConcurrentClientRole;
   2259   ULONG WPSVersionsSupported;
   2260   BOOLEAN bServiceDiscoverySupported;
   2261   BOOLEAN bClientDiscoverabilitySupported;
   2262   BOOLEAN bInfrastructureManagementSupported;
   2263   ULONG uMaxSecondaryDeviceTypeListSize;
   2264   DOT11_MAC_ADDRESS DeviceAddress;
   2265   ULONG uInterfaceAddressListCount;
   2266   PDOT11_MAC_ADDRESS pInterfaceAddressList;
   2267   ULONG uNumSupportedCountryOrRegionStrings;
   2268 #ifdef __WIDL__
   2269   [size_is (uNumSupportedCountryOrRegionStrings)]
   2270 #endif
   2271   PDOT11_COUNTRY_OR_REGION_STRING pSupportedCountryOrRegionStrings;
   2272   ULONG uDiscoveryFilterListSize;
   2273   ULONG uGORoleClientTableSize;
   2274 } DOT11_WFD_ATTRIBUTES, *PDOT11_WFD_ATTRIBUTES;
   2275 
   2276 typedef UCHAR DOT11_WFD_GROUP_CAPABILITY;
   2277 
   2278 #define DOT11_WFD_STATUS_SUCCESS 0
   2279 #define DOT11_WFD_STATUS_FAILED_INFORMATION_IS_UNAVAILABLE 1
   2280 #define DOT11_WFD_STATUS_FAILED_INCOMPATIBLE_PARAMETERS 2
   2281 #define DOT11_WFD_STATUS_FAILED_LIMIT_REACHED 3
   2282 #define DOT11_WFD_STATUS_FAILED_INVALID_PARAMETERS 4
   2283 #define DOT11_WFD_STATUS_FAILED_UNABLE_TO_ACCOMODATE_REQUEST 5
   2284 #define DOT11_WFD_STATUS_FAILED_PREVIOUS_PROTOCOL_ERROR 6
   2285 #define DOT11_WFD_STATUS_FAILED_NO_COMMON_CHANNELS 7
   2286 #define DOT11_WFD_STATUS_FAILED_UNKNOWN_WFD_GROUP 8
   2287 #define DOT11_WFD_STATUS_FAILED_MATCHING_MAX_INTENT 9
   2288 #define DOT11_WFD_STATUS_FAILED_INCOMPATIBLE_PROVISIONING_METHOD 10
   2289 #define DOT11_WFD_STATUS_FAILED_REJECTED_BY_USER 11
   2290 #define DOT11_WFD_STATUS_SUCCESS_ACCEPTED_BY_USER 12
   2291 #define WFD_STATUS_SUCCEEDED(status) (((DOT11_WFD_STATUS_CODE)(status)) == DOT11_WFD_STATUS_SUCCESS || ((DOT11_WFD_STATUS_CODE)(status)) == DOT11_WFD_STATUS_SUCCESS_ACCEPTED_BY_USER)
   2292 #define WFD_STATUS_FAILED(status) (((DOT11_WFD_STATUS_CODE)(status)) != DOT11_WFD_STATUS_SUCCESS && ((DOT11_WFD_STATUS_CODE)(status)) != DOT11_WFD_STATUS_SUCCESS_ACCEPTED_BY_USER)
   2293 
   2294 #define DOT11_WFD_MINOR_REASON_SUCCESS 0
   2295 #define DOT11_WFD_MINOR_REASON_DISASSOCIATED_FROM_WLAN_CROSS_CONNECTION_POLICY 1
   2296 #define DOT11_WFD_MINOR_REASON_DISASSOCIATED_NOT_MANAGED_INFRASTRUCTURE_CAPABLE 2
   2297 #define DOT11_WFD_MINOR_REASON_DISASSOCIATED_WFD_COEXISTENCE_POLICY 3
   2298 #define DOT11_WFD_MINOR_REASON_DISASSOCIATED_INFRASTRUCTURE_MANAGED_POLICY 4
   2299 
   2300 #define DOT11_WPS_VERSION_1_0 0x01
   2301 #define DOT11_WPS_VERSION_2_0 0x02
   2302 
   2303 #define DOT11_WFD_DEVICE_CAPABILITY_SERVICE_DISCOVERY 0x01
   2304 #define DOT11_WFD_DEVICE_CAPABILITY_P2P_CLIENT_DISCOVERABILITY 0x02
   2305 #define DOT11_WFD_DEVICE_CAPABILITY_CONCURRENT_OPERATION 0x04
   2306 #define DOT11_WFD_DEVICE_CAPABILITY_P2P_INFRASTRUCTURE_MANAGED 0x08
   2307 #define DOT11_WFD_DEVICE_CAPABILITY_P2P_DEVICE_LIMIT 0x10
   2308 #define DOT11_WFD_DEVICE_CAPABILITY_P2P_INVITATION_PROCEDURE 0x20
   2309 #define DOT11_WFD_DEVICE_CAPABILITY_RESERVED_6 0x40
   2310 #define DOT11_WFD_DEVICE_CAPABILITY_RESERVED_7 0x80
   2311 
   2312 #define DOT11_WFD_GROUP_CAPABILITY_NONE 0x00
   2313 #define DOT11_WFD_GROUP_CAPABILITY_GROUP_OWNER 0x01
   2314 #define DOT11_WFD_GROUP_CAPABILITY_PERSISTENT_GROUP 0x02
   2315 #define DOT11_WFD_GROUP_CAPABILITY_GROUP_LIMIT_REACHED 0x04
   2316 #define DOT11_WFD_GROUP_CAPABILITY_INTRABSS_DISTRIBUTION_SUPPORTED 0x08
   2317 #define DOT11_WFD_GROUP_CAPABILITY_CROSS_CONNECTION_SUPPORTED 0x10
   2318 #define DOT11_WFD_GROUP_CAPABILITY_PERSISTENT_RECONNECT_SUPPORTED 0x20
   2319 #define DOT11_WFD_GROUP_CAPABILITY_IN_GROUP_FORMATION 0x40
   2320 #define DOT11_WFD_GROUP_CAPABILITY_RESERVED_7 0x80
   2321 #define DOT11_WFD_GROUP_CAPABILITY_EAPOL_KEY_IP_ADDRESS_ALLOCATION_SUPPORTED 0x80
   2322 
   2323 #define DOT11_WPS_DEVICE_NAME_MAX_LENGTH 32
   2324 #define DOT11_WPS_MAX_PASSKEY_LENGTH 8
   2325 #define DOT11_WPS_MAX_MODEL_NAME_LENGTH 32
   2326 #define DOT11_WPS_MAX_MODEL_NUMBER_LENGTH 32
   2327 
   2328 typedef struct _DOT11_WFD_DEVICE_TYPE {
   2329   USHORT CategoryID;
   2330   USHORT SubCategoryID;
   2331   UCHAR OUI[4];
   2332 } DOT11_WFD_DEVICE_TYPE, *PDOT11_WFD_DEVICE_TYPE;
   2333 
   2334 typedef struct _DOT11_WPS_DEVICE_NAME {
   2335   ULONG uDeviceNameLength;
   2336   UCHAR ucDeviceName[DOT11_WPS_DEVICE_NAME_MAX_LENGTH];
   2337 } DOT11_WPS_DEVICE_NAME, *PDOT11_WPS_DEVICE_NAME;
   2338 
   2339 typedef struct _DOT11_WFD_CONFIGURATION_TIMEOUT {
   2340   UCHAR GOTimeout;
   2341   UCHAR ClientTimeout;
   2342 } DOT11_WFD_CONFIGURATION_TIMEOUT, *PDOT11_WFD_CONFIGURATION_TIMEOUT;
   2343 
   2344 typedef struct _DOT11_WFD_GROUP_ID {
   2345   DOT11_MAC_ADDRESS DeviceAddress;
   2346   DOT11_SSID SSID;
   2347 } DOT11_WFD_GROUP_ID, *PDOT11_WFD_GROUP_ID;
   2348 
   2349 typedef struct _DOT11_WFD_GO_INTENT {
   2350   UCHAR TieBreaker:1;
   2351   UCHAR Intent:7;
   2352 } DOT11_WFD_GO_INTENT, *PDOT11_WFD_GO_INTENT;
   2353 
   2354 typedef struct _DOT11_WFD_CHANNEL {
   2355   DOT11_COUNTRY_OR_REGION_STRING CountryRegionString;
   2356   UCHAR OperatingClass;
   2357   UCHAR ChannelNumber;
   2358 } DOT11_WFD_CHANNEL, *PDOT11_WFD_CHANNEL;
   2359 
   2360 typedef enum _DOT11_WPS_CONFIG_METHOD {
   2361   DOT11_WPS_CONFIG_METHOD_NULL = 0,
   2362   DOT11_WPS_CONFIG_METHOD_DISPLAY = 0x0008,
   2363   DOT11_WPS_CONFIG_METHOD_NFC_TAG = 0x0020,
   2364   DOT11_WPS_CONFIG_METHOD_NFC_INTERFACE = 0x0040,
   2365   DOT11_WPS_CONFIG_METHOD_PUSHBUTTON = 0x0080,
   2366   DOT11_WPS_CONFIG_METHOD_KEYPAD = 0x0100,
   2367   DOT11_WPS_CONFIG_METHOD_WFDS_DEFAULT = 0x1000
   2368 } DOT11_WPS_CONFIG_METHOD, *PDOT11_WPS_CONFIG_METHOD;
   2369 
   2370 typedef enum _DOT11_WPS_DEVICE_PASSWORD_ID {
   2371   DOT11_WPS_PASSWORD_ID_DEFAULT = 0x0000,
   2372   DOT11_WPS_PASSWORD_ID_USER_SPECIFIED = 0x0001,
   2373   DOT11_WPS_PASSWORD_ID_MACHINE_SPECIFIED = 0x0002,
   2374   DOT11_WPS_PASSWORD_ID_REKEY = 0x0003,
   2375   DOT11_WPS_PASSWORD_ID_PUSHBUTTON = 0x0004,
   2376   DOT11_WPS_PASSWORD_ID_REGISTRAR_SPECIFIED = 0x0005,
   2377   DOT11_WPS_PASSWORD_ID_NFC_CONNECTION_HANDOVER = 0x0007,
   2378   DOT11_WPS_PASSWORD_ID_WFD_SERVICES = 0x0008,
   2379   DOT11_WPS_PASSWORD_ID_OOB_RANGE_MIN = 0x0010,
   2380   DOT11_WPS_PASSWORD_ID_OOB_RANGE_MAX = 0xffff
   2381 } DOT11_WPS_DEVICE_PASSWORD_ID, *PDOT11_WPS_DEVICE_PASSWORD_ID;
   2382 
   2383 #define DOT11_WFD_DISCOVER_COMPLETE_PARAMETERS_REVISION_1 1
   2384 #define DOT11_GO_NEGOTIATION_REQUEST_SEND_COMPLETE_PARAMETERS_REVISION_1 1
   2385 #define DOT11_RECEIVED_GO_NEGOTIATION_REQUEST_PARAMETERS_REVISION_1 1
   2386 #define DOT11_GO_NEGOTIATION_RESPONSE_SEND_COMPLETE_PARAMETERS_REVISION_1 1
   2387 #define DOT11_RECEIVED_GO_NEGOTIATION_RESPONSE_PARAMETERS_REVISION_1 1
   2388 #define DOT11_GO_NEGOTIATION_CONFIRMATION_SEND_COMPLETE_PARAMETERS_REVISION_1 1
   2389 
   2390 #define DOT11_SIZEOF_WFD_DISCOVER_COMPLETE_PARAMETERS_REVISION_1 sizeof (DOT11_WFD_DISCOVER_COMPLETE_PARAMETERS)
   2391 #define DOT11_SIZEOF_GO_NEGOTIATION_REQUEST_SEND_COMPLETE_PARAMETERS_REVISION_1 sizeof (DOT11_GO_NEGOTIATION_REQUEST_SEND_COMPLETE_PARAMETERS)
   2392 #define DOT11_SIZEOF_RECEIVED_GO_NEGOTIATION_REQUEST_PARAMETERS_REVISION_1 sizeof (DOT11_RECEIVED_GO_NEGOTIATION_REQUEST_PARAMETERS)
   2393 #define DOT11_SIZEOF_GO_NEGOTIATION_RESPONSE_SEND_COMPLETE_PARAMETERS_REVISION_1 sizeof (DOT11_GO_NEGOTIATION_RESPONSE_SEND_COMPLETE_PARAMETERS)
   2394 #define DOT11_SIZEOF_RECEIVED_GO_NEGOTIATION_RESPONSE_PARAMETERS_REVISION_1 sizeof (DOT11_RECEIVED_GO_NEGOTIATION_RESPONSE_PARAMETERS)
   2395 #define DOT11_SIZEOF_GO_NEGOTIATION_CONFIRMATION_SEND_COMPLETE_PARAMETERS_REVISION_1 sizeof (DOT11_GO_NEGOTIATION_CONFIRMATION_SEND_COMPLETE_PARAMETERS)
   2396 
   2397 #define DOT11_WFD_DISCOVER_COMPLETE_MAX_LIST_SIZE 128
   2398 
   2399 typedef struct _DOT11_WFD_DISCOVER_COMPLETE_PARAMETERS {
   2400   NDIS_OBJECT_HEADER Header;
   2401   NDIS_STATUS Status;
   2402   ULONG uNumOfEntries;
   2403   ULONG uTotalNumOfEntries;
   2404   ULONG uListOffset;
   2405   ULONG uListLength;
   2406 } DOT11_WFD_DISCOVER_COMPLETE_PARAMETERS, *PDOT11_WFD_DISCOVER_COMPLETE_PARAMETERS;
   2407 
   2408 typedef struct _DOT11_GO_NEGOTIATION_REQUEST_SEND_COMPLETE_PARAMETERS {
   2409   NDIS_OBJECT_HEADER Header;
   2410   DOT11_MAC_ADDRESS PeerDeviceAddress;
   2411   DOT11_DIALOG_TOKEN DialogToken;
   2412   NDIS_STATUS Status;
   2413   ULONG uIEsOffset;
   2414   ULONG uIEsLength;
   2415 } DOT11_GO_NEGOTIATION_REQUEST_SEND_COMPLETE_PARAMETERS, *PDOT11_GO_NEGOTIATION_REQUEST_SEND_COMPLETE_PARAMETERS;
   2416 
   2417 typedef struct _DOT11_RECEIVED_GO_NEGOTIATION_REQUEST_PARAMETERS {
   2418   NDIS_OBJECT_HEADER Header;
   2419   DOT11_MAC_ADDRESS PeerDeviceAddress;
   2420   DOT11_DIALOG_TOKEN DialogToken;
   2421   PVOID RequestContext;
   2422   ULONG uIEsOffset;
   2423   ULONG uIEsLength;
   2424 } DOT11_RECEIVED_GO_NEGOTIATION_REQUEST_PARAMETERS, *PDOT11_RECEIVED_GO_NEGOTIATION_REQUEST_PARAMETERS;
   2425 
   2426 typedef struct _DOT11_GO_NEGOTIATION_RESPONSE_SEND_COMPLETE_PARAMETERS {
   2427   NDIS_OBJECT_HEADER Header;
   2428   DOT11_MAC_ADDRESS PeerDeviceAddress;
   2429   DOT11_DIALOG_TOKEN DialogToken;
   2430   NDIS_STATUS Status;
   2431   ULONG uIEsOffset;
   2432   ULONG uIEsLength;
   2433 } DOT11_GO_NEGOTIATION_RESPONSE_SEND_COMPLETE_PARAMETERS, *PDOT11_GO_NEGOTIATION_RESPONSE_SEND_COMPLETE_PARAMETERS;
   2434 
   2435 typedef struct _DOT11_RECEIVED_GO_NEGOTIATION_RESPONSE_PARAMETERS {
   2436   NDIS_OBJECT_HEADER Header;
   2437   DOT11_MAC_ADDRESS PeerDeviceAddress;
   2438   DOT11_DIALOG_TOKEN DialogToken;
   2439   PVOID ResponseContext;
   2440   ULONG uIEsOffset;
   2441   ULONG uIEsLength;
   2442 } DOT11_RECEIVED_GO_NEGOTIATION_RESPONSE_PARAMETERS, *PDOT11_RECEIVED_GO_NEGOTIATION_RESPONSE_PARAMETERS;
   2443 
   2444 typedef struct _DOT11_GO_NEGOTIATION_CONFIRMATION_SEND_COMPLETE_PARAMETERS {
   2445   NDIS_OBJECT_HEADER Header;
   2446   DOT11_MAC_ADDRESS PeerDeviceAddress;
   2447   DOT11_DIALOG_TOKEN DialogToken;
   2448   NDIS_STATUS Status;
   2449   ULONG uIEsOffset;
   2450   ULONG uIEsLength;
   2451 } DOT11_GO_NEGOTIATION_CONFIRMATION_SEND_COMPLETE_PARAMETERS, *PDOT11_GO_NEGOTIATION_CONFIRMATION_SEND_COMPLETE_PARAMETERS;
   2452 
   2453 #define DOT11_RECEIVED_GO_NEGOTIATION_CONFIRMATION_PARAMETERS_REVISION_1 1
   2454 typedef struct _DOT11_RECEIVED_GO_NEGOTIATION_CONFIRMATION_PARAMETERS {
   2455   NDIS_OBJECT_HEADER Header;
   2456   DOT11_MAC_ADDRESS PeerDeviceAddress;
   2457   DOT11_DIALOG_TOKEN DialogToken;
   2458   ULONG uIEsOffset;
   2459   ULONG uIEsLength;
   2460 } DOT11_RECEIVED_GO_NEGOTIATION_CONFIRMATION_PARAMETERS, *PDOT11_RECEIVED_GO_NEGOTIATION_CONFIRMATION_PARAMETERS;
   2461 #define DOT11_SIZEOF_RECEIVED_GO_NEGOTIATION_CONFIRMATION_PARAMETERS_REVISION_1 sizeof (DOT11_RECEIVED_GO_NEGOTIATION_CONFIRMATION_PARAMETERS)
   2462 
   2463 #define DOT11_INVITATION_REQUEST_SEND_COMPLETE_PARAMETERS_REVISION_1 1
   2464 typedef struct _DOT11_INVITATION_REQUEST_SEND_COMPLETE_PARAMETERS {
   2465   NDIS_OBJECT_HEADER Header;
   2466   DOT11_MAC_ADDRESS PeerDeviceAddress;
   2467   DOT11_MAC_ADDRESS ReceiverAddress;
   2468   DOT11_DIALOG_TOKEN DialogToken;
   2469   NDIS_STATUS Status;
   2470   ULONG uIEsOffset;
   2471   ULONG uIEsLength;
   2472 } DOT11_INVITATION_REQUEST_SEND_COMPLETE_PARAMETERS, *PDOT11_INVITATION_REQUEST_SEND_COMPLETE_PARAMETERS;
   2473 #define DOT11_SIZEOF_INVITATION_REQUEST_SEND_COMPLETE_PARAMETERS_REVISION_1 sizeof (DOT11_INVITATION_REQUEST_SEND_COMPLETE_PARAMETERS)
   2474 
   2475 #define DOT11_RECEIVED_INVITATION_REQUEST_PARAMETERS_REVISION_1 1
   2476 typedef struct _DOT11_RECEIVED_INVITATION_REQUEST_PARAMETERS {
   2477   NDIS_OBJECT_HEADER Header;
   2478   DOT11_MAC_ADDRESS TransmitterDeviceAddress;
   2479   DOT11_MAC_ADDRESS BSSID;
   2480   DOT11_DIALOG_TOKEN DialogToken;
   2481   PVOID RequestContext;
   2482   ULONG uIEsOffset;
   2483   ULONG uIEsLength;
   2484 } DOT11_RECEIVED_INVITATION_REQUEST_PARAMETERS, *PDOT11_RECEIVED_INVITATION_REQUEST_PARAMETERS;
   2485 #define DOT11_SIZEOF_RECEIVED_INVITATION_REQUEST_PARAMETERS_REVISION_1 sizeof (DOT11_RECEIVED_INVITATION_REQUEST_PARAMETERS)
   2486 
   2487 #define DOT11_INVITATION_RESPONSE_SEND_COMPLETE_PARAMETERS_REVISION_1 1
   2488 typedef struct _DOT11_INVITATION_RESPONSE_SEND_COMPLETE_PARAMETERS {
   2489   NDIS_OBJECT_HEADER Header;
   2490   DOT11_MAC_ADDRESS ReceiverDeviceAddress;
   2491   DOT11_DIALOG_TOKEN DialogToken;
   2492   NDIS_STATUS Status;
   2493   ULONG uIEsOffset;
   2494   ULONG uIEsLength;
   2495 } DOT11_INVITATION_RESPONSE_SEND_COMPLETE_PARAMETERS, *PDOT11_INVITATION_RESPONSE_SEND_COMPLETE_PARAMETERS;
   2496 #define DOT11_SIZEOF_INVITATION_RESPONSE_SEND_COMPLETE_PARAMETERS_REVISION_1 sizeof (DOT11_INVITATION_RESPONSE_SEND_COMPLETE_PARAMETERS)
   2497 
   2498 #define DOT11_RECEIVED_INVITATION_RESPONSE_PARAMETERS_REVISION_1 1
   2499 typedef struct _DOT11_RECEIVED_INVITATION_RESPONSE_PARAMETERS {
   2500   NDIS_OBJECT_HEADER Header;
   2501   DOT11_MAC_ADDRESS TransmitterDeviceAddress;
   2502   DOT11_MAC_ADDRESS BSSID;
   2503   DOT11_DIALOG_TOKEN DialogToken;
   2504   ULONG uIEsOffset;
   2505   ULONG uIEsLength;
   2506 } DOT11_RECEIVED_INVITATION_RESPONSE_PARAMETERS, *PDOT11_RECEIVED_INVITATION_RESPONSE_PARAMETERS;
   2507 #define DOT11_SIZEOF_RECEIVED_INVITATION_RESPONSE_PARAMETERS_REVISION_1 sizeof (DOT11_RECEIVED_INVITATION_RESPONSE_PARAMETERS)
   2508 
   2509 #define DOT11_PROVISION_DISCOVERY_REQUEST_SEND_COMPLETE_PARAMETERS_REVISION_1 1
   2510 typedef struct _DOT11_PROVISION_DISCOVERY_REQUEST_SEND_COMPLETE_PARAMETERS {
   2511   NDIS_OBJECT_HEADER Header;
   2512   DOT11_MAC_ADDRESS PeerDeviceAddress;
   2513   DOT11_MAC_ADDRESS ReceiverAddress;
   2514   DOT11_DIALOG_TOKEN DialogToken;
   2515   NDIS_STATUS Status;
   2516   ULONG uIEsOffset;
   2517   ULONG uIEsLength;
   2518 } DOT11_PROVISION_DISCOVERY_REQUEST_SEND_COMPLETE_PARAMETERS, *PDOT11_PROVISION_DISCOVERY_REQUEST_SEND_COMPLETE_PARAMETERS;
   2519 
   2520 #define NWF_WFD_DEVICE_OID (0x05U)
   2521 #define NWF_WFD_ROLE_OID (0x06U)
   2522 
   2523 #define DOT11_RECEIVED_PROVISION_DISCOVERY_REQUEST_PARAMETERS_REVISION_1 1
   2524 #define DOT11_PROVISION_DISCOVERY_RESPONSE_SEND_COMPLETE_PARAMETERS_REVISION_1 1
   2525 #define DOT11_RECEIVED_PROVISION_DISCOVERY_RESPONSE_PARAMETERS_REVISION_1 1
   2526 #define DOT11_WFD_DEVICE_CAPABILITY_CONFIG_REVISION_1 1
   2527 #define DOT11_WFD_GROUP_OWNER_CAPABILITY_CONFIG_REVISION_1 1
   2528 #define DOT11_WFD_DEVICE_INFO_REVISION_1 1
   2529 #define DOT11_WFD_DISCOVER_DEVICE_FILTER_REVISION_1
   2530 #define DOT11_SIZEOF_WFD_DISCOVER_DEVICE_FILTER_REVISION_1
   2531 #define DOT11_WFD_SECONDARY_DEVICE_TYPE_LIST_REVISION_1 1
   2532 #define DOT11_WFD_DISCOVER_REQUEST_REVISION_1 1
   2533 #define DOT11_WFD_ADDITIONAL_IE_REVISION_1 1
   2534 
   2535 #define DOT11_SIZEOF_PROVISION_DISCOVERY_REQUEST_SEND_COMPLETE_PARAMETERS_REVISION_1 sizeof (DOT11_PROVISION_DISCOVERY_REQUEST_SEND_COMPLETE_PARAMETERS)
   2536 #define DOT11_SIZEOF_RECEIVED_PROVISION_DISCOVERY_REQUEST_PARAMETERS_REVISION_1 sizeof (DOT11_RECEIVED_PROVISION_DISCOVERY_REQUEST_PARAMETERS)
   2537 #define DOT11_SIZEOF_PROVISION_DISCOVERY_RESPONSE_SEND_COMPLETE_PARAMETERS_REVISION_1 sizeof (DOT11_PROVISION_DISCOVERY_RESPONSE_SEND_COMPLETE_PARAMETERS)
   2538 #define DOT11_SIZEOF_RECEIVED_PROVISION_DISCOVERY_RESPONSE_PARAMETERS_REVISION_1 sizeof (DOT11_RECEIVED_PROVISION_DISCOVERY_RESPONSE_PARAMETERS)
   2539 #define DOT11_SIZEOF_WFD_DEVICE_CAPABILITY_CONFIG_1 sizeof (DOT11_WFD_DEVICE_CAPABILITY_CONFIG)
   2540 #define DOT11_SIZEOF_WFD_GROUP_CAPABILITY_CONFIG_1 sizeof (DOT11_WFD_GROUP_OWNER_CAPABILITY_CONFIG)
   2541 #define DOT11_SIZEOF_WFD_DEVICE_INFO_REVISION_1 sizeof (DOT11_WFD_DEVICE_INFO)
   2542 #define DOT11_SIZEOF_WFD_SECONDARY_DEVICE_TYPE_LIST_REVISION_1 FIELD_OFFSET (DOT11_WFD_SECONDARY_DEVICE_TYPE_LIST, SecondaryDeviceTypes)
   2543 #define DOT11_SIZEOF_WFD_DISCOVER_REQUEST_REVISION_1 sizeof (DOT11_WFD_DISCOVER_REQUEST)
   2544 
   2545 #define OID_DOT11_WFD_DEVICE_CAPABILITY NWF_DEFINE_OID (0x01, NWF_WFD_DEVICE_OID, NWF_MANDATORY_OID)
   2546 #define OID_DOT11_WFD_GROUP_OWNER_CAPABILITY NWF_DEFINE_OID (0x02, NWF_WFD_DEVICE_OID, NWF_MANDATORY_OID)
   2547 #define OID_DOT11_WFD_DEVICE_INFO NWF_DEFINE_OID (0x03, NWF_WFD_DEVICE_OID, NWF_MANDATORY_OID)
   2548 #define OID_DOT11_WFD_SECONDARY_DEVICE_TYPE_LIST NWF_DEFINE_OID (0x04, NWF_WFD_DEVICE_OID, NWF_MANDATORY_OID)
   2549 #define OID_DOT11_WFD_DISCOVER_REQUEST NWF_DEFINE_OID (0x05, NWF_WFD_DEVICE_OID, NWF_MANDATORY_OID)
   2550 #define OID_DOT11_WFD_ENUM_DEVICE_LIST NWF_DEFINE_OID (0x06, NWF_WFD_DEVICE_OID, NWF_MANDATORY_OID)
   2551 #define OID_DOT11_WFD_LISTEN_STATE_DISCOVERABILITY NWF_DEFINE_OID (0x07, NWF_WFD_DEVICE_OID, NWF_MANDATORY_OID)
   2552 #define OID_DOT11_WFD_ADDITIONAL_IE NWF_DEFINE_OID (0x08, NWF_WFD_DEVICE_OID, NWF_MANDATORY_OID)
   2553 
   2554 #define DOT11_WFD_DEVICE_ENTRY_GET_DEVICE_SIZE(DEV) (sizeof (DOT11_WFD_DEVICE_ENTRY) + (DEV)->uBeaconIEsLength + (DEV)->uProbeResponseIEsLength)
   2555 
   2556 typedef struct _DOT11_RECEIVED_PROVISION_DISCOVERY_REQUEST_PARAMETERS {
   2557   NDIS_OBJECT_HEADER Header;
   2558   DOT11_MAC_ADDRESS TransmitterDeviceAddress;
   2559   DOT11_MAC_ADDRESS BSSID;
   2560   DOT11_DIALOG_TOKEN DialogToken;
   2561   PVOID RequestContext;
   2562   ULONG uIEsOffset;
   2563   ULONG uIEsLength;
   2564 } DOT11_RECEIVED_PROVISION_DISCOVERY_REQUEST_PARAMETERS, *PDOT11_RECEIVED_PROVISION_DISCOVERY_REQUEST_PARAMETERS;
   2565 
   2566 typedef struct _DOT11_PROVISION_DISCOVERY_RESPONSE_SEND_COMPLETE_PARAMETERS {
   2567   NDIS_OBJECT_HEADER Header;
   2568   DOT11_MAC_ADDRESS ReceiverDeviceAddress;
   2569   DOT11_DIALOG_TOKEN DialogToken;
   2570   NDIS_STATUS Status;
   2571   ULONG uIEsOffset;
   2572   ULONG uIEsLength;
   2573 } DOT11_PROVISION_DISCOVERY_RESPONSE_SEND_COMPLETE_PARAMETERS, *PDOT11_PROVISION_DISCOVERY_RESPONSE_SEND_COMPLETE_PARAMETERS;
   2574 
   2575 typedef struct _DOT11_RECEIVED_PROVISION_DISCOVERY_RESPONSE_PARAMETERS {
   2576   NDIS_OBJECT_HEADER Header;
   2577   DOT11_MAC_ADDRESS TransmitterDeviceAddress;
   2578   DOT11_MAC_ADDRESS BSSID;
   2579   DOT11_DIALOG_TOKEN DialogToken;
   2580   ULONG uIEsOffset;
   2581   ULONG uIEsLength;
   2582 } DOT11_RECEIVED_PROVISION_DISCOVERY_RESPONSE_PARAMETERS, *PDOT11_RECEIVED_PROVISION_DISCOVERY_RESPONSE_PARAMETERS;
   2583 
   2584 typedef struct _DOT11_WFD_DEVICE_CAPABILITY_CONFIG {
   2585   NDIS_OBJECT_HEADER Header;
   2586   BOOLEAN bServiceDiscoveryEnabled;
   2587   BOOLEAN bClientDiscoverabilityEnabled;
   2588   BOOLEAN bConcurrentOperationSupported;
   2589   BOOLEAN bInfrastructureManagementEnabled;
   2590   BOOLEAN bDeviceLimitReached;
   2591   BOOLEAN bInvitationProcedureEnabled;
   2592   ULONG WPSVersionsEnabled;
   2593 } DOT11_WFD_DEVICE_CAPABILITY_CONFIG, *PDOT11_WFD_DEVICE_CAPABILITY_CONFIG;
   2594 
   2595 typedef struct _DOT11_WFD_GROUP_OWNER_CAPABILITY_CONFIG {
   2596   NDIS_OBJECT_HEADER Header;
   2597   BOOLEAN bPersistentGroupEnabled;
   2598   BOOLEAN bIntraBSSDistributionSupported;
   2599   BOOLEAN bCrossConnectionSupported;
   2600   BOOLEAN bPersistentReconnectSupported;
   2601   BOOLEAN bGroupFormationEnabled;
   2602   ULONG uMaximumGroupLimit;
   2603 } DOT11_WFD_GROUP_OWNER_CAPABILITY_CONFIG, *PDOT11_WFD_GROUP_OWNER_CAPABILITY_CONFIG;
   2604 
   2605 typedef struct _DOT11_WFD_DEVICE_INFO {
   2606   NDIS_OBJECT_HEADER Header;
   2607   DOT11_MAC_ADDRESS DeviceAddress;
   2608   USHORT ConfigMethods;
   2609   DOT11_WFD_DEVICE_TYPE PrimaryDeviceType;
   2610   DOT11_WPS_DEVICE_NAME DeviceName;
   2611 } DOT11_WFD_DEVICE_INFO, *PDOT11_WFD_DEVICE_INFO;
   2612 
   2613 typedef struct _DOT11_WFD_SECONDARY_DEVICE_TYPE_LIST {
   2614   NDIS_OBJECT_HEADER Header;
   2615   ULONG uNumOfEntries;
   2616   ULONG uTotalNumOfEntries;
   2617   DOT11_WFD_DEVICE_TYPE SecondaryDeviceTypes[1];
   2618 } DOT11_WFD_SECONDARY_DEVICE_TYPE_LIST, *PDOT11_WFD_SECONDARY_DEVICE_TYPE_LIST;
   2619 
   2620 typedef enum _DOT11_WFD_DISCOVER_TYPE {
   2621   dot11_wfd_discover_type_scan_only = 1,
   2622   dot11_wfd_discover_type_find_only = 2,
   2623   dot11_wfd_discover_type_auto = 3,
   2624   dot11_wfd_discover_type_scan_social_channels = 4,
   2625   dot11_wfd_discover_type_forced = 0x80000000
   2626 } DOT11_WFD_DISCOVER_TYPE, *PDOT11_WFD_DISCOVER_TYPE;
   2627 
   2628 typedef enum _DOT11_WFD_SCAN_TYPE {
   2629   dot11_wfd_scan_type_active = 1,
   2630   dot11_wfd_scan_type_passive = 2,
   2631   dot11_wfd_scan_type_auto = 3
   2632 } DOT11_WFD_SCAN_TYPE, *PDOT11_WFD_SCAN_TYPE;
   2633 
   2634 #define DISCOVERY_FILTER_BITMASK_DEVICE 0x1
   2635 #define DISCOVERY_FILTER_BITMASK_GO 0x2
   2636 #define DISCOVERY_FILTER_BITMASK_ANY 0xf
   2637 
   2638 typedef struct _DOT11_WFD_DISCOVER_DEVICE_FILTER {
   2639   DOT11_MAC_ADDRESS DeviceID;
   2640   UCHAR ucBitmask;
   2641   DOT11_SSID GroupSSID;
   2642 } DOT11_WFD_DISCOVER_DEVICE_FILTER, *PDOT11_WFD_DISCOVER_DEVICE_FILTER;
   2643 
   2644 typedef struct _DOT11_WFD_DISCOVER_REQUEST {
   2645   NDIS_OBJECT_HEADER Header;
   2646   DOT11_WFD_DISCOVER_TYPE DiscoverType;
   2647   DOT11_WFD_SCAN_TYPE ScanType;
   2648   ULONG uDiscoverTimeout;
   2649   ULONG uDeviceFilterListOffset;
   2650   ULONG uNumDeviceFilters;
   2651   ULONG uIEsOffset;
   2652   ULONG uIEsLength;
   2653   BOOLEAN bForceScanLegacyNetworks;
   2654 } DOT11_WFD_DISCOVER_REQUEST, *PDOT11_WFD_DISCOVER_REQUEST;
   2655 
   2656 #ifndef __WIDL__
   2657 #define DOT11_DEVICE_ENTRY_BYTE_ARRAY_REVISION_1 1
   2658 typedef struct _DOT11_WFD_DEVICE_ENTRY {
   2659   ULONG uPhyId;
   2660   DOT11_BSS_ENTRY_PHY_SPECIFIC_INFO PhySpecificInfo;
   2661   DOT11_MAC_ADDRESS dot11BSSID;
   2662   DOT11_BSS_TYPE dot11BSSType;
   2663   DOT11_MAC_ADDRESS TransmitterAddress;
   2664   LONG lRSSI;
   2665   ULONG uLinkQuality;
   2666   USHORT usBeaconPeriod;
   2667   ULONGLONG ullTimestamp;
   2668   ULONGLONG ullBeaconHostTimestamp;
   2669   ULONGLONG ullProbeResponseHostTimestamp;
   2670   USHORT usCapabilityInformation;
   2671   ULONG uBeaconIEsOffset;
   2672   ULONG uBeaconIEsLength;
   2673   ULONG uProbeResponseIEsOffset;
   2674   ULONG uProbeResponseIEsLength;
   2675 } DOT11_WFD_DEVICE_ENTRY, *PDOT11_WFD_DEVICE_ENTRY;
   2676 #endif
   2677 
   2678 #define DOT11_WFD_DEVICE_NOT_DISCOVERABLE 0
   2679 #define DOT11_WFD_DEVICE_AUTO_AVAILABILITY 16
   2680 #define DOT11_WFD_DEVICE_HIGH_AVAILABILITY 24
   2681 
   2682 typedef struct _DOT11_WFD_ADDITIONAL_IE {
   2683   NDIS_OBJECT_HEADER Header;
   2684   ULONG uBeaconIEsOffset;
   2685   ULONG uBeaconIEsLength;
   2686   ULONG uProbeResponseIEsOffset;
   2687   ULONG uProbeResponseIEsLength;
   2688   ULONG uDefaultRequestIEsOffset;
   2689   ULONG uDefaultRequestIEsLength;
   2690 } DOT11_WFD_ADDITIONAL_IE, *PDOT11_WFD_ADDITIONAL_IE;
   2691 
   2692 #define DOT11_SIZEOF_WFD_ADDITIONAL_IE_REVISION_1 sizeof (DOT11_WFD_ADDITIONAL_IE)
   2693 
   2694 #define DOT11_WFD_ADDITIONAL_IE_GET_HEADER_SIZE(ADDIE) (sizeof (DOT11_WFD_ADDITIONAL_IE))
   2695 #define DOT11_WFD_ADDITIONAL_IE_GET_HEADER_END(ADDIE) (((PCHAR) (ADDIE))+sizeof (DOT11_WFD_ADDITIONAL_IE))
   2696 #define DOT11_WFD_ADDITIONAL_IE_GET_BEACON_IE(ADDIE) (((PCHAR) (ADDIE))+ (ADDIE)->uBeaconIEsOffset)
   2697 #define DOT11_WFD_ADDITIONAL_IE_SET_BEACON_IE(ADDIE, B) (ADDIE)->uBeaconIEsOffset = (DWORD) (((SIZE_T) (B))- ((SIZE_T) (ADDIE)))
   2698 #define DOT11_WFD_ADDITIONAL_IE_GET_BEACON_IE_SIZE(ADDIE) ((ADDIE)->uBeaconIEsLength)
   2699 #define DOT11_WFD_ADDITIONAL_IE_SET_BEACON_IE_SIZE(ADDIE, SZ) (ADDIE)->uBeaconIEsLength = (DWORD) (SZ)
   2700 #define DOT11_WFD_ADDITIONAL_IE_GET_BEACON_IE_END(ADDIE) (((PCHAR) (ADDIE))+ (ADDIE)->uBeaconIEsOffset+DOT11_WFD_ADDITIONAL_IE_GET_BEACON_IE_SIZE (ADDIE))
   2701 #define DOT11_WFD_ADDITIONAL_IE_GET_PROBE_RESPONSE_IE(ADDIE) (((PCHAR) (ADDIE))+ (ADDIE)->uProbeResponseIEsOffset)
   2702 #define DOT11_WFD_ADDITIONAL_IE_SET_PROBE_RESPONSE_IE(ADDIE, _response_) (ADDIE)->uProbeResponseIEsOffset = (DWORD) (((SIZE_T) (_response_))- ((SIZE_T) (ADDIE)))
   2703 #define DOT11_WFD_ADDITIONAL_IE_GET_PROBE_RESPONSE_IE_SIZE(ADDIE) ((ADDIE)->uProbeResponseIEsLength)
   2704 #define DOT11_WFD_ADDITIONAL_IE_SET_PROBE_RESPONSE_IE_SIZE(ADDIE, SZ) (ADDIE)->uProbeResponseIEsLength = (DWORD) (SZ)
   2705 #define DOT11_WFD_ADDITIONAL_IE_GET_PROBE_RESPONSE_IE_END(ADDIE) (((PCHAR) (ADDIE))+ (ADDIE)->uProbeResponseIEsOffset+DOT11_WFD_ADDITIONAL_IE_GET_PROBE_RESPONSE_IE_SIZE (ADDIE))
   2706 #define DOT11_WFD_ADDITIONAL_IE_GET_PROBE_REQUEST_IE(ADDIE) (((PCHAR) (ADDIE))+ (ADDIE)->uDefaultRequestIEsOffset)
   2707 #define DOT11_WFD_ADDITIONAL_IE_SET_PROBE_REQUEST_IE(ADDIE, REQ) (ADDIE)->uDefaultRequestIEsOffset = (DWORD) (((SIZE_T) (REQ))- ((SIZE_T) (ADDIE)))
   2708 #define DOT11_WFD_ADDITIONAL_IE_GET_PROBE_REQUEST_IE_SIZE(ADDIE) ((ADDIE)->uDefaultRequestIEsLength)
   2709 #define DOT11_WFD_ADDITIONAL_IE_SET_PROBE_REQUEST_IE_SIZE(ADDIE, SZ) (ADDIE)->uDefaultRequestIEsLength = (DWORD) (SZ)
   2710 #define DOT11_WFD_ADDITIONAL_IE_GET_ALL_IE_SIZE(ADDIE) ((ADDIE)->uBeaconIEsLength + (ADDIE)->uProbeResponseIEsLength + (ADDIE)->uDefaultRequestIEsLength)
   2711 #define DOT11_WFD_ADDITIONAL_IE_GET_TOTAL_SIZE(ADDIE) (DOT11_WFD_ADDITIONAL_IE_GET_HEADER_SIZE (ADDIE) + DOT11_WFD_ADDITIONAL_IE_GET_ALL_IE_SIZE (ADDIE))
   2712 
   2713 #define OID_DOT11_WFD_FLUSH_DEVICE_LIST NWF_DEFINE_OID (0x09, NWF_WFD_DEVICE_OID, NWF_MANDATORY_OID)
   2714 #define OID_DOT11_WFD_SEND_GO_NEGOTIATION_REQUEST NWF_DEFINE_OID (0x0a, NWF_WFD_DEVICE_OID, NWF_MANDATORY_OID)
   2715 
   2716 #define DOT11_SEND_GO_NEGOTIATION_REQUEST_PARAMETERS_REVISION_1 1
   2717 
   2718 typedef struct _DOT11_SEND_GO_NEGOTIATION_REQUEST_PARAMETERS {
   2719   NDIS_OBJECT_HEADER Header;
   2720   DOT11_MAC_ADDRESS PeerDeviceAddress;
   2721   DOT11_DIALOG_TOKEN DialogToken;
   2722   ULONG uSendTimeout;
   2723   DOT11_WFD_GO_INTENT GroupOwnerIntent;
   2724   DOT11_WFD_CONFIGURATION_TIMEOUT MinimumConfigTimeout;
   2725   DOT11_MAC_ADDRESS IntendedInterfaceAddress;
   2726   DOT11_WFD_GROUP_CAPABILITY GroupCapability;
   2727   ULONG uIEsOffset;
   2728   ULONG uIEsLength;
   2729 } DOT11_SEND_GO_NEGOTIATION_REQUEST_PARAMETERS, *PDOT11_SEND_GO_NEGOTIATION_REQUEST_PARAMETERS;
   2730 
   2731 #define DOT11_SIZEOF_SEND_GO_NEGOTIATION_REQUEST_PARAMETERS_REVISION_1 sizeof (DOT11_SEND_GO_NEGOTIATION_REQUEST_PARAMETERS)
   2732 
   2733 #define OID_DOT11_WFD_SEND_GO_NEGOTIATION_RESPONSE NWF_DEFINE_OID (0x0b, NWF_WFD_DEVICE_OID, NWF_MANDATORY_OID)
   2734 
   2735 #define DOT11_SEND_GO_NEGOTIATION_RESPONSE_PARAMETERS_REVISION_1 1
   2736 
   2737 typedef struct _DOT11_SEND_GO_NEGOTIATION_RESPONSE_PARAMETERS {
   2738   NDIS_OBJECT_HEADER Header;
   2739   DOT11_MAC_ADDRESS PeerDeviceAddress;
   2740   DOT11_DIALOG_TOKEN DialogToken;
   2741   PVOID RequestContext;
   2742   ULONG uSendTimeout;
   2743   DOT11_WFD_STATUS_CODE Status;
   2744   DOT11_WFD_GO_INTENT GroupOwnerIntent;
   2745   DOT11_WFD_CONFIGURATION_TIMEOUT MinimumConfigTimeout;
   2746   DOT11_MAC_ADDRESS IntendedInterfaceAddress;
   2747   DOT11_WFD_GROUP_CAPABILITY GroupCapability;
   2748   DOT11_WFD_GROUP_ID GroupID;
   2749   BOOLEAN bUseGroupID;
   2750   ULONG uIEsOffset;
   2751   ULONG uIEsLength;
   2752 } DOT11_SEND_GO_NEGOTIATION_RESPONSE_PARAMETERS, *PDOT11_SEND_GO_NEGOTIATION_RESPONSE_PARAMETERS;
   2753 
   2754 #define DOT11_SIZEOF_SEND_GO_NEGOTIATION_RESPONSE_PARAMETERS_REVISION_1 sizeof (DOT11_SEND_GO_NEGOTIATION_RESPONSE_PARAMETERS)
   2755 
   2756 #define OID_DOT11_WFD_SEND_GO_NEGOTIATION_CONFIRMATION NWF_DEFINE_OID (0x0c, NWF_WFD_DEVICE_OID, NWF_MANDATORY_OID)
   2757 
   2758 #define DOT11_SEND_GO_NEGOTIATION_CONFIRMATION_PARAMETERS_REVISION_1 1
   2759 
   2760 typedef struct _DOT11_SEND_GO_NEGOTIATION_CONFIRMATION_PARAMETERS {
   2761   NDIS_OBJECT_HEADER Header;
   2762   DOT11_MAC_ADDRESS PeerDeviceAddress;
   2763   DOT11_DIALOG_TOKEN DialogToken;
   2764   PVOID ResponseContext;
   2765   ULONG uSendTimeout;
   2766   DOT11_WFD_STATUS_CODE Status;
   2767   DOT11_WFD_GROUP_CAPABILITY GroupCapability;
   2768   DOT11_WFD_GROUP_ID GroupID;
   2769   BOOLEAN bUseGroupID;
   2770   ULONG uIEsOffset;
   2771   ULONG uIEsLength;
   2772 } DOT11_SEND_GO_NEGOTIATION_CONFIRMATION_PARAMETERS, *PDOT11_SEND_GO_NEGOTIATION_CONFIRMATION_PARAMETERS;
   2773 
   2774 #define DOT11_SIZEOF_SEND_GO_NEGOTIATION_CONFIRMATION_PARAMETERS_REVISION_1 sizeof (DOT11_SEND_GO_NEGOTIATION_CONFIRMATION_PARAMETERS)
   2775 
   2776 #define OID_DOT11_WFD_SEND_INVITATION_REQUEST NWF_DEFINE_OID (0x0d, NWF_WFD_DEVICE_OID, NWF_MANDATORY_OID)
   2777 
   2778 typedef struct _DOT11_WFD_INVITATION_FLAGS {
   2779   UCHAR InvitationType:1;
   2780   UCHAR Reserved:7;
   2781 } DOT11_WFD_INVITATION_FLAGS, *PDOT11_WFD_INVITATION_FLAGS;
   2782 
   2783 typedef struct _DOT11_SEND_INVITATION_REQUEST_PARAMETERS {
   2784   NDIS_OBJECT_HEADER Header;
   2785   DOT11_DIALOG_TOKEN DialogToken;
   2786   DOT11_MAC_ADDRESS PeerDeviceAddress;
   2787   ULONG uSendTimeout;
   2788   DOT11_WFD_CONFIGURATION_TIMEOUT MinimumConfigTimeout;
   2789   DOT11_WFD_INVITATION_FLAGS InvitationFlags;
   2790   DOT11_MAC_ADDRESS GroupBSSID;
   2791   BOOLEAN bUseGroupBSSID;
   2792   DOT11_WFD_CHANNEL OperatingChannel;
   2793   BOOLEAN bUseSpecifiedOperatingChannel;
   2794   DOT11_WFD_GROUP_ID GroupID;
   2795   BOOLEAN bLocalGO;
   2796   ULONG uIEsOffset;
   2797   ULONG uIEsLength;
   2798 } DOT11_SEND_INVITATION_REQUEST_PARAMETERS, *PDOT11_SEND_INVITATION_REQUEST_PARAMETERS;
   2799 
   2800 typedef struct _DOT11_SEND_INVITATION_RESPONSE_PARAMETERS {
   2801   NDIS_OBJECT_HEADER Header;
   2802   DOT11_MAC_ADDRESS ReceiverDeviceAddress;
   2803   DOT11_DIALOG_TOKEN DialogToken;
   2804   PVOID RequestContext;
   2805   ULONG uSendTimeout;
   2806   DOT11_WFD_STATUS_CODE Status;
   2807   DOT11_WFD_CONFIGURATION_TIMEOUT MinimumConfigTimeout;
   2808   DOT11_MAC_ADDRESS GroupBSSID;
   2809   BOOLEAN bUseGroupBSSID;
   2810   DOT11_WFD_CHANNEL OperatingChannel;
   2811   BOOLEAN bUseSpecifiedOperatingChannel;
   2812   ULONG uIEsOffset;
   2813   ULONG uIEsLength;
   2814 } DOT11_SEND_INVITATION_RESPONSE_PARAMETERS, *PDOT11_SEND_INVITATION_RESPONSE_PARAMETERS;
   2815 
   2816 #define DOT11_SIZEOF_SEND_INVITATION_REQUEST_PARAMETERS_REVISION_1 sizeof (DOT11_SEND_INVITATION_REQUEST_PARAMETERS)
   2817 #define DOT11_SIZEOF_SEND_INVITATION_RESPONSE_PARAMETERS_REVISION_1 sizeof (DOT11_SEND_INVITATION_RESPONSE_PARAMETERS)
   2818 
   2819 #define OID_DOT11_WFD_SEND_INVITATION_RESPONSE NWF_DEFINE_OID (0x0e, NWF_WFD_DEVICE_OID, NWF_MANDATORY_OID)
   2820 #define OID_DOT11_WFD_SEND_PROVISION_DISCOVERY_REQUEST NWF_DEFINE_OID (0x0f, NWF_WFD_DEVICE_OID, NWF_MANDATORY_OID)
   2821 
   2822 #define DOT11_SEND_INVITATION_REQUEST_PARAMETERS_REVISION_1 1
   2823 #define DOT11_SEND_INVITATION_RESPONSE_PARAMETERS_REVISION_1 1
   2824 #define DOT11_SEND_PROVISION_DISCOVERY_REQUEST_PARAMETERS_REVISION_1 1
   2825 
   2826 typedef struct _DOT11_SEND_PROVISION_DISCOVERY_REQUEST_PARAMETERS {
   2827   NDIS_OBJECT_HEADER Header;
   2828   DOT11_DIALOG_TOKEN DialogToken;
   2829   DOT11_MAC_ADDRESS PeerDeviceAddress;
   2830   ULONG uSendTimeout;
   2831   DOT11_WFD_GROUP_CAPABILITY GroupCapability;
   2832   DOT11_WFD_GROUP_ID GroupID;
   2833   BOOLEAN bUseGroupID;
   2834   ULONG uIEsOffset;
   2835   ULONG uIEsLength;
   2836 } DOT11_SEND_PROVISION_DISCOVERY_REQUEST_PARAMETERS, *PDOT11_SEND_PROVISION_DISCOVERY_REQUEST_PARAMETERS;
   2837 
   2838 typedef struct _DOT11_SEND_PROVISION_DISCOVERY_RESPONSE_PARAMETERS {
   2839   NDIS_OBJECT_HEADER Header;
   2840   DOT11_MAC_ADDRESS ReceiverDeviceAddress;
   2841   DOT11_DIALOG_TOKEN DialogToken;
   2842   PVOID RequestContext;
   2843   ULONG uSendTimeout;
   2844   ULONG uIEsOffset;
   2845   ULONG uIEsLength;
   2846 } DOT11_SEND_PROVISION_DISCOVERY_RESPONSE_PARAMETERS, *PDOT11_SEND_PROVISION_DISCOVERY_RESPONSE_PARAMETERS;
   2847 
   2848 typedef struct _DOT11_WFD_DEVICE_LISTEN_CHANNEL {
   2849   NDIS_OBJECT_HEADER Header;
   2850   UCHAR ChannelNumber;
   2851 } DOT11_WFD_DEVICE_LISTEN_CHANNEL, *PDOT11_WFD_DEVICE_LISTEN_CHANNEL;
   2852 
   2853 typedef struct _DOT11_WFD_GROUP_START_PARAMETERS {
   2854   NDIS_OBJECT_HEADER Header;
   2855   DOT11_WFD_CHANNEL AdvertisedOperatingChannel;
   2856 } DOT11_WFD_GROUP_START_PARAMETERS, *PDOT11_WFD_GROUP_START_PARAMETERS;
   2857 
   2858 typedef struct _DOT11_WFD_GROUP_JOIN_PARAMETERS {
   2859   NDIS_OBJECT_HEADER Header;
   2860   DOT11_WFD_CHANNEL GOOperatingChannel;
   2861   ULONG GOConfigTime;
   2862   BOOLEAN bInGroupFormation;
   2863   BOOLEAN bWaitForWPSReady;
   2864 } DOT11_WFD_GROUP_JOIN_PARAMETERS, *PDOT11_WFD_GROUP_JOIN_PARAMETERS;
   2865 
   2866 #define OID_DOT11_WFD_SEND_PROVISION_DISCOVERY_RESPONSE NWF_DEFINE_OID (0x10, NWF_WFD_DEVICE_OID, NWF_MANDATORY_OID)
   2867 #define OID_DOT11_WFD_GET_DIALOG_TOKEN NWF_DEFINE_OID (0x11, NWF_WFD_DEVICE_OID, NWF_MANDATORY_OID)
   2868 #define OID_DOT11_WFD_STOP_DISCOVERY NWF_DEFINE_OID (0x12, NWF_WFD_DEVICE_OID, NWF_MANDATORY_OID)
   2869 #define OID_DOT11_WFD_DEVICE_LISTEN_CHANNEL NWF_DEFINE_OID (0x13, NWF_WFD_DEVICE_OID, NWF_MANDATORY_OID)
   2870 #define OID_DOT11_WFD_DESIRED_GROUP_ID NWF_DEFINE_OID (0x01, NWF_WFD_ROLE_OID, NWF_MANDATORY_OID)
   2871 #define OID_DOT11_WFD_START_GO_REQUEST NWF_DEFINE_OID (0x02, NWF_WFD_ROLE_OID, NWF_MANDATORY_OID)
   2872 #define OID_DOT11_WFD_GROUP_START_PARAMETERS NWF_DEFINE_OID (0x03, NWF_WFD_ROLE_OID, NWF_MANDATORY_OID)
   2873 #define OID_DOT11_WFD_CONNECT_TO_GROUP_REQUEST NWF_DEFINE_OID (0x04, NWF_WFD_ROLE_OID, NWF_MANDATORY_OID)
   2874 #define OID_DOT11_WFD_DISCONNECT_FROM_GROUP_REQUEST NWF_DEFINE_OID (0x05, NWF_WFD_ROLE_OID, NWF_MANDATORY_OID)
   2875 #define OID_DOT11_WFD_GROUP_JOIN_PARAMETERS NWF_DEFINE_OID (0x06, NWF_WFD_ROLE_OID, NWF_MANDATORY_OID)
   2876 
   2877 #define DOT11_SEND_PROVISION_DISCOVERY_RESPONSE_PARAMETERS_REVISION_1 1
   2878 #define DOT11_WFD_DEVICE_LISTEN_CHANNEL_REVISION_1 1
   2879 #define DOT11_WFD_GROUP_JOIN_PARAMETERS_REVISION_1 1
   2880 #define DOT11_WFD_GROUP_START_PARAMETERS_REVISION_1 1
   2881 
   2882 #define DOT11_SIZEOF_SEND_PROVISION_DISCOVERY_REQUEST_PARAMETERS_REVISION_1 sizeof (DOT11_SEND_PROVISION_DISCOVERY_REQUEST_PARAMETERS)
   2883 #define DOT11_SIZEOF_WFD_DEVICE_LISTEN_CHANNEL_REVISION_1 sizeof (DOT11_WFD_DEVICE_LISTEN_CHANNEL)
   2884 #define DOT11_SIZEOF_WFD_GROUP_START_PARAMETERS_REVISION_1 sizeof (DOT11_WFD_GROUP_START_PARAMETERS)
   2885 #define DOT11_SIZEOF_WFD_GROUP_JOIN_PARAMETERS_REVISION_1 sizeof (DOT11_WFD_GROUP_JOIN_PARAMETERS)
   2886 #define DOT11_SIZEOF_SEND_PROVISION_DISCOVERY_RESPONSE_PARAMETERS_REVISION_1 sizeof (DOT11_SEND_PROVISION_DISCOVERY_RESPONSE_PARAMETERS)
   2887 #endif
   2888 
   2889 #ifdef NWF_POWER_SAVE_SUPPORTED
   2890 #define NWF_POWER_SAVE_OID (0x07U)
   2891 
   2892 #define OID_DOT11_POWER_MGMT_MODE_AUTO_ENABLED NWF_DEFINE_OID (0x01, NWF_POWER_SAVE_OID, NWF_MANDATORY_OID)
   2893 #define OID_DOT11_POWER_MGMT_MODE_STATUS NWF_DEFINE_OID (0x02, NWF_POWER_SAVE_OID, NWF_MANDATORY_OID)
   2894 #define OID_DOT11_OFFLOAD_NETWORK_LIST NWF_DEFINE_OID (0x03, NWF_POWER_SAVE_OID, NWF_MANDATORY_OID)
   2895 
   2896 #define DOT11_MAX_CHANNEL_HINTS 4
   2897 #define DOT11_INVALID_CHANNEL_NUMBER 0
   2898 
   2899 #define DOT11_NLO_FLAG_STOP_NLO_INDICATION 0x00000001
   2900 #define DOT11_NLO_FLAG_SCAN_ON_AOAC_PLATFORM 0x00000002
   2901 #define DOT11_NLO_FLAG_SCAN_AT_SYSTEM_RESUME 0x00000004
   2902 
   2903 #define DOT11_POWER_MGMT_AUTO_MODE_ENABLED_REVISION_1 1
   2904 #define DOT11_OFFLOAD_NETWORK_LIST_REVISION_1 1
   2905 #define DOT11_POWER_MGMT_MODE_STATUS_INFO_REVISION_1 1
   2906 #define DOT11_SIZEOF_OFFLOAD_NETWORK_LIST_INFO_REVISION_1(UNOE) (FIELD_OFFSET (DOT11_OFFLOAD_NETWORK_LIST_INFO, offloadNetworkList)+ sizeof (DOT11_OFFLOAD_NETWORK) *(UNOE))
   2907 #define DOT11_MIN_SIZEOF_OFFLOAD_NETWORK_LIST_INFO_REVISION_1 (FIELD_OFFSET (DOT11_OFFLOAD_NETWORK_LIST_INFO, offloadNetworkList))
   2908 
   2909 #define DOT11_SIZEOF_POWER_MGMT_AUTO_MODE_ENABLE_INFO_REVISION_1 sizeof (DOT11_POWER_MGMT_AUTO_MODE_ENABLED_INFO)
   2910 #define DOT11_SIZEOF_POWER_MGMT_MODE_STATUS_INFO_REVISION_1 sizeof (DOT11_POWER_MGMT_MODE_STATUS_INFO)
   2911 
   2912 typedef struct _DOT11_POWER_MGMT_AUTO_MODE_ENABLED_INFO {
   2913   NDIS_OBJECT_HEADER Header;
   2914   BOOLEAN bEnabled;
   2915 } DOT11_POWER_MGMT_AUTO_MODE_ENABLED_INFO, *PDOT11_POWER_MGMT_AUTO_MODE_ENABLED_INFO;
   2916 
   2917 typedef enum _DOT11_POWER_MODE_REASON {
   2918   dot11_power_mode_reason_no_change =0,
   2919   dot11_power_mode_reason_noncompliant_AP =1,
   2920   dot11_power_mode_reason_legacy_WFD_device =2,
   2921   dot11_power_mode_reason_compliant_AP =3,
   2922   dot11_power_mode_reason_compliant_WFD_device=4,
   2923   dot11_power_mode_reason_others =5
   2924 } DOT11_POWER_MODE_REASON;
   2925 
   2926 typedef struct _DOT11_POWER_MGMT_MODE_STATUS_INFO {
   2927   NDIS_OBJECT_HEADER Header;
   2928   DOT11_POWER_MODE PowerSaveMode;
   2929   ULONG uPowerSaveLevel;
   2930   DOT11_POWER_MODE_REASON Reason;
   2931 } DOT11_POWER_MGMT_MODE_STATUS_INFO, *PDOT11_POWER_MGMT_MODE_STATUSINFO;
   2932 
   2933 typedef struct DOT11_CHANNEL_HINT {
   2934   DOT11_PHY_TYPE Dot11PhyType;
   2935   ULONG uChannelNumber;
   2936 } DOT11_CHANNEL_HINT, *PDOT11_CHANNEL_HINT;
   2937 
   2938 typedef struct DOT11_OFFLOAD_NETWORK {
   2939   DOT11_SSID Ssid;
   2940   DOT11_CIPHER_ALGORITHM UnicastCipher;
   2941   DOT11_AUTH_ALGORITHM AuthAlgo;
   2942   DOT11_CHANNEL_HINT Dot11ChannelHints[DOT11_MAX_CHANNEL_HINTS];
   2943 } DOT11_OFFLOAD_NETWORK, *PDOT11_OFFLOAD_NETWORK;
   2944 
   2945 typedef struct _DOT11_OFFLOAD_NETWORK_LIST_INFO {
   2946   NDIS_OBJECT_HEADER Header;
   2947   ULONG ulFlags;
   2948   ULONG FastScanPeriod;
   2949   ULONG FastScanIterations;
   2950   ULONG SlowScanPeriod;
   2951   ULONG uNumOfEntries;
   2952   DOT11_OFFLOAD_NETWORK offloadNetworkList[1];
   2953 } DOT11_OFFLOAD_NETWORK_LIST_INFO, *PDOT11_OFFLOAD_NETWORK_LIST_INFO;
   2954 #endif
   2955 
   2956 typedef struct _DOT11_OFFLOAD_NETWORK_STATUS_PARAMETERS {
   2957   NDIS_OBJECT_HEADER Header;
   2958   NDIS_STATUS Status;
   2959 } DOT11_OFFLOAD_NETWORK_STATUS_PARAMETERS, *PDOT11_OFFLOAD_NETWORK_STATUS_PARAMETERS;
   2960 
   2961 #define NWF_MANUFACTURING_OID (0x08U)
   2962 
   2963 #define DOT11_SIZEOF_OFFLOAD_NETWORK_STATUS_PARAMETERS_REVISION_1 sizeof (DOT11_OFFLOAD_NETWORK_STATUS_PARAMETERS)
   2964 
   2965 #define DOT11_MANUFACTURING_TEST_REVISION_1 1
   2966 #define DOT11_MANUFACTURING_CALLBACK_REVISION_1 1
   2967 #define DOT11_OFFLOAD_NETWORK_STATUS_PARAMETERS_REVISION_1 1
   2968 
   2969 #define OID_DOT11_MANUFACTURING_TEST NWF_DEFINE_OID (0x01, NWF_MANUFACTURING_OID, NWF_OPTIONAL_OID)
   2970 
   2971 typedef enum _DOT11_MANUFACTURING_TEST_TYPE {
   2972   dot11_manufacturing_test_unknown = 0,
   2973   dot11_manufacturing_test_self_start = 1,
   2974   dot11_manufacturing_test_self_query_result = 2,
   2975   dot11_manufacturing_test_rx = 3,
   2976   dot11_manufacturing_test_tx = 4,
   2977   dot11_manufacturing_test_query_adc = 5,
   2978   dot11_manufacturing_test_set_data = 6,
   2979   dot11_manufacturing_test_query_data = 7,
   2980   dot11_manufacturing_test_sleep = 8,
   2981   dot11_manufacturing_test_awake = 9,
   2982   dot11_manufacturing_test_IHV_start = 0x80000000,
   2983   dot11_manufacturing_test_IHV_end = 0xffffffff
   2984 } DOT11_MANUFACTURING_TEST_TYPE, *PDOT11_MANUFACTURING_TEST_TYPE;
   2985 
   2986 typedef struct _DOT11_MANUFACTURING_TEST {
   2987   DOT11_MANUFACTURING_TEST_TYPE dot11ManufacturingTestType;
   2988   ULONG uBufferLength;
   2989   UCHAR ucBuffer[1];
   2990 } DOT11_MANUFACTURING_TEST, *PDOT11_MANUFACTURING_TEST;
   2991 
   2992 typedef enum DOT11_MANUFACTURING_SELF_TEST_TYPE {
   2993   DOT11_MANUFACTURING_SELF_TEST_TYPE_INTERFACE = 1,
   2994   DOT11_MANUFACTURING_SELF_TEST_TYPE_RF_INTERFACE,
   2995   DOT11_MANUFACTURING_SELF_TEST_TYPE_BT_COEXISTENCE
   2996 } DOT11_MANUFACTURING_SELF_TEST_TYPE, *PDOT11_MANUFACTURING_SELF_TEST_TYPE;
   2997 
   2998 typedef struct _DOT11_MANUFACTURING_SELF_TEST_SET_PARAMS {
   2999   DOT11_MANUFACTURING_SELF_TEST_TYPE SelfTestType;
   3000   ULONG uTestID;
   3001   ULONG uPinBitMask;
   3002   PVOID pvContext;
   3003   ULONG uBufferLength;
   3004   UCHAR ucBufferIn[1];
   3005 } DOT11_MANUFACTURING_SELF_TEST_SET_PARAMS, *PDOT11_MANUFACTURING_SELF_TEST_SET_PARAMS;
   3006 
   3007 typedef struct _DOT11_MANUFACTURING_SELF_TEST_QUERY_RESULTS {
   3008   DOT11_MANUFACTURING_SELF_TEST_TYPE SelfTestType;
   3009   ULONG uTestID;
   3010   BOOLEAN bResult;
   3011   ULONG uPinFailedBitMask;
   3012   PVOID pvContext;
   3013   ULONG uBytesWrittenOut;
   3014   UCHAR ucBufferOut[1];
   3015 } DOT11_MANUFACTURING_SELF_TEST_QUERY_RESULTS, *PDOT11_MANUFACTURING_SELF_TEST_QUERY_RESULTS;
   3016 
   3017 typedef enum DOT11_BAND {
   3018   dot11_band_2p4g = 1,
   3019   dot11_band_4p9g,
   3020   dot11_band_5g
   3021 } DOT11_BAND, *PDOT11_BAND;
   3022 
   3023 typedef struct _DOT11_MANUFACTURING_FUNCTIONAL_TEST_RX {
   3024   BOOLEAN bEnabled;
   3025   DOT11_BAND Dot11Band;
   3026   ULONG uChannel;
   3027   LONG PowerLevel;
   3028 } DOT11_MANUFACTURING_FUNCTIONAL_TEST_RX, *PDOT11_MANUFACTURING_FUNCTIONAL_TEST_RX;
   3029 
   3030 typedef struct _DOT11_MANUFACTURING_FUNCTIONAL_TEST_TX {
   3031   BOOLEAN bEnable;
   3032   BOOLEAN bOpenLoop;
   3033   DOT11_BAND Dot11Band;
   3034   ULONG uChannel;
   3035   ULONG uSetPowerLevel;
   3036   LONG ADCPowerLevel;
   3037 } DOT11_MANUFACTURING_FUNCTIONAL_TEST_TX, *PDOT11_MANUFACTURING_FUNCTIONAL_TEST_TX;
   3038 
   3039 typedef struct _DOT11_MANUFACTURING_FUNCTIONAL_TEST_QUERY_ADC {
   3040   DOT11_BAND Dot11Band;
   3041   ULONG uChannel;
   3042   LONG ADCPowerLevel;
   3043 } DOT11_MANUFACTURING_FUNCTIONAL_TEST_QUERY_ADC, *PDOT11_MANUFACTURING_FUNCTIONAL_TEST_QUERY_ADC;
   3044 
   3045 typedef struct _DOT11_MANUFACTURING_TEST_SET_DATA {
   3046   ULONG uKey;
   3047   ULONG uOffset;
   3048   ULONG uBufferLength;
   3049   UCHAR ucBufferIn[1];
   3050 } DOT11_MANUFACTURING_TEST_SET_DATA, *PDOT11_MANUFACTURING_TEST_SET_DATA;
   3051 
   3052 typedef struct _DOT11_MANUFACTURING_TEST_QUERY_DATA {
   3053   ULONG uKey;
   3054   ULONG uOffset;
   3055   ULONG uBufferLength;
   3056   ULONG uBytesRead;
   3057   UCHAR ucBufferOut[1];
   3058 } DOT11_MANUFACTURING_TEST_QUERY_DATA, *PDOT11_MANUFACTURING_TEST_QUERY_DATA;
   3059 
   3060 typedef struct _DOT11_MANUFACTURING_TEST_SLEEP {
   3061   ULONG uSleepTime;
   3062   PVOID pvContext;
   3063 } DOT11_MANUFACTURING_TEST_SLEEP, *PDOT11_MANUFACTURING_TEST_SLEEP;
   3064 
   3065 typedef enum _DOT11_MANUFACTURING_CALLBACK_TYPE {
   3066   dot11_manufacturing_callback_unknown = 0,
   3067   dot11_manufacturing_callback_self_test_complete = 1,
   3068   dot11_manufacturing_callback_sleep_complete = 2,
   3069   dot11_manufacturing_callback_IHV_start = 0x80000000,
   3070   dot11_manufacturing_callback_IHV_end = 0xffffffff
   3071 } DOT11_MANUFACTURING_CALLBACK_TYPE, *PDOT11_MANUFACTURING_CALLBACK_TYPE;
   3072 
   3073 typedef struct DOT11_MANUFACTURING_CALLBACK_PARAMETERS {
   3074   NDIS_OBJECT_HEADER Header;
   3075   DOT11_MANUFACTURING_CALLBACK_TYPE dot11ManufacturingCallbackType;
   3076   ULONG uStatus;
   3077   PVOID pvContext;
   3078 } DOT11_MANUFACTURING_CALLBACK_PARAMETERS, *PDOT11_MANUFACTURING_CALLBACK_PARAMETERS;
   3079 #endif
   3080 
   3081 #endif