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