1/**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the mingw-w64 runtime package.
4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5 */
6#ifndef _INC_WLANAPI
7#define _INC_WLANAPI
8
9#include <l2cmn.h>
10#include <windot11.h>
11#include <eaptypes.h>
12
13#ifdef __cplusplus
14extern "C" {
15#endif
16
17#define WLAN_NOTIFICATION_SOURCE_NONE      L2_NOTIFICATION_SOURCE_NONE
18#define WLAN_NOTIFICATION_SOURCE_ALL       L2_NOTIFICATION_SOURCE_ALL
19#define WLAN_NOTIFICATION_SOURCE_ACM       L2_NOTIFICATION_SOURCE_WLAN_ACM
20#define WLAN_NOTIFICATION_SOURCE_MSM       L2_NOTIFICATION_SOURCE_WLAN_MSM
21#define WLAN_NOTIFICATION_SOURCE_SECURITY  L2_NOTIFICATION_SOURCE_WLAN_SECURITY
22#define WLAN_NOTIFICATION_SOURCE_IHV       L2_NOTIFICATION_SOURCE_WLAN_IHV
23#define WLAN_NOTIFICATION_SOURCE_HNWK      L2_NOTIFICATION_SOURCE_WLAN_HNWK
24#define WLAN_NOTIFICATION_SOURCE_ONEX      L2_NOTIFICATION_SOURCE_ONEX
25
26typedef DWORD WLAN_REASON_CODE, *PWLAN_REASON_CODE;
27typedef ULONG WLAN_SIGNAL_QUALITY, *PWLAN_SIGNAL_QUALITY;
28
29typedef struct _DOT11_NETWORK {
30  DOT11_SSID     dot11Ssid;
31  DOT11_BSS_TYPE dot11BssType;
32} DOT11_NETWORK, *PDOT11_NETWORK;
33
34typedef enum _DOT11_RADIO_STATE {
35  dot11_radio_state_unknown,
36  dot11_radio_state_on,
37  dot11_radio_state_off
38} DOT11_RADIO_STATE, *PDOT11_RADIO_STATE;
39
40typedef enum _WLAN_NOTIFICATION_ACM {
41    wlan_notification_acm_start = 0,
42    wlan_notification_acm_autoconf_enabled,
43    wlan_notification_acm_autoconf_disabled,
44    wlan_notification_acm_background_scan_enabled,
45    wlan_notification_acm_background_scan_disabled,
46    wlan_notification_acm_bss_type_change,
47    wlan_notification_acm_power_setting_change,
48    wlan_notification_acm_scan_complete,
49    wlan_notification_acm_scan_fail,
50    wlan_notification_acm_connection_start,
51    wlan_notification_acm_connection_complete,
52    wlan_notification_acm_connection_attempt_fail,
53    wlan_notification_acm_filter_list_change,
54    wlan_notification_acm_interface_arrival,
55    wlan_notification_acm_interface_removal,
56    wlan_notification_acm_profile_change,
57    wlan_notification_acm_profile_name_change,
58    wlan_notification_acm_profiles_exhausted,
59    wlan_notification_acm_network_not_available,
60    wlan_notification_acm_network_available,
61    wlan_notification_acm_disconnecting,
62    wlan_notification_acm_disconnected,
63    wlan_notification_acm_adhoc_network_state_change,
64    wlan_notification_acm_end
65} WLAN_NOTIFICATION_ACM, *PWLAN_NOTIFICATION_ACM;
66
67typedef enum _WLAN_INTERFACE_STATE {
68  wlan_interface_state_not_ready               = 0,
69  wlan_interface_state_connected               = 1,
70  wlan_interface_state_ad_hoc_network_formed   = 2,
71  wlan_interface_state_disconnecting           = 3,
72  wlan_interface_state_disconnected            = 4,
73  wlan_interface_state_associating             = 5,
74  wlan_interface_state_discovering             = 6,
75  wlan_interface_state_authenticating          = 7
76} WLAN_INTERFACE_STATE, *PWLAN_INTERFACE_STATE;
77
78typedef enum _WLAN_CONNECTION_MODE {
79  wlan_connection_mode_profile,
80  wlan_connection_mode_temporary_profile,
81  wlan_connection_mode_discovery_secure,
82  wlan_connection_mode_discovery_unsecure,
83  wlan_connection_mode_auto,
84  wlan_connection_mode_invalid
85} WLAN_CONNECTION_MODE, *PWLAN_CONNECTION_MODE;
86
87typedef enum _WLAN_INTERFACE_TYPE {
88  wlan_interface_type_emulated_802_11   = 0,
89  wlan_interface_type_native_802_11,
90  wlan_interface_type_invalid
91} WLAN_INTERFACE_TYPE, *PWLAN_INTERFACE_TYPE;
92
93typedef enum _WLAN_INTF_OPCODE {
94  wlan_intf_opcode_autoconf_start                               = 0x000000000,
95  wlan_intf_opcode_autoconf_enabled,
96  wlan_intf_opcode_background_scan_enabled,
97  wlan_intf_opcode_media_streaming_mode,
98  wlan_intf_opcode_radio_state,
99  wlan_intf_opcode_bss_type,
100  wlan_intf_opcode_interface_state,
101  wlan_intf_opcode_current_connection,
102  wlan_intf_opcode_channel_number,
103  wlan_intf_opcode_supported_infrastructure_auth_cipher_pairs,
104  wlan_intf_opcode_supported_adhoc_auth_cipher_pairs,
105  wlan_intf_opcode_supported_country_or_region_string_list,
106  wlan_intf_opcode_current_operation_mode,
107  wlan_intf_opcode_supported_safe_mode,
108  wlan_intf_opcode_certified_safe_mode,
109  wlan_intf_opcode_hosted_network_capable,
110  wlan_intf_opcode_autoconf_end                                 = 0x0fffffff,
111  wlan_intf_opcode_msm_start                                    = 0x10000100,
112  wlan_intf_opcode_statistics,
113  wlan_intf_opcode_rssi,
114  wlan_intf_opcode_msm_end                                      = 0x1fffffff,
115  wlan_intf_opcode_security_start                               = 0x20010000,
116  wlan_intf_opcode_security_end                                 = 0x2fffffff,
117  wlan_intf_opcode_ihv_start                                    = 0x30000000,
118  wlan_intf_opcode_ihv_end                                      = 0x3fffffff
119} WLAN_INTF_OPCODE, *PWLAN_INTF_OPCODE;
120
121typedef enum _WLAN_OPCODE_VALUE_TYPE {
122  wlan_opcode_value_type_query_only            = 0,
123  wlan_opcode_value_type_set_by_group_policy   = 1,
124  wlan_opcode_value_type_set_by_user           = 2,
125  wlan_opcode_value_type_invalid               = 3
126} WLAN_OPCODE_VALUE_TYPE, *PWLAN_OPCODE_VALUE_TYPE;
127
128typedef enum _WLAN_POWER_SETTING {
129  wlan_power_setting_no_saving,
130  wlan_power_setting_low_saving,
131  wlan_power_setting_medium_saving,
132  wlan_power_setting_maximum_saving,
133  wlan_power_setting_invalid
134} WLAN_POWER_SETTING, *PWLAN_POWER_SETTING;
135
136typedef struct _WLAN_ASSOCIATION_ATTRIBUTES {
137  DOT11_SSID          dot11Ssid;
138  DOT11_BSS_TYPE      dot11BssType;
139  DOT11_MAC_ADDRESS   dot11Bssid;
140  DOT11_PHY_TYPE      dot11PhyType;
141  ULONG               uDot11PhyIndex;
142  WLAN_SIGNAL_QUALITY wlanSignalQuality;
143  ULONG               ulRxRate;
144  ULONG               ulTxRate;
145} WLAN_ASSOCIATION_ATTRIBUTES, *PWLAN_ASSOCIATION_ATTRIBUTES;
146
147typedef struct _WLAN_AUTH_CIPHER_PAIR_LIST {
148  DWORD                  dwNumberOfItems;
149  DOT11_AUTH_CIPHER_PAIR pAuthCipherPairList;
150} WLAN_AUTH_CIPHER_PAIR_LIST, *PWLAN_AUTH_CIPHER_PAIR_LIST;
151
152typedef struct _WLAN_NOTIFICATION_DATA {
153  DWORD NotificationSource;
154  DWORD NotificationCode;
155  GUID  InterfaceGuid;
156  DWORD dwDataSize;
157  PVOID pData;
158} WLAN_NOTIFICATION_DATA, *PWLAN_NOTIFICATION_DATA;
159
160#define WLAN_MAX_PHY_TYPE_NUMBER 8
161
162typedef struct _WLAN_AVAILABLE_NETWORK {
163  WCHAR                  strProfileName[256];
164  DOT11_SSID             dot11Ssid;
165  DOT11_BSS_TYPE         dot11BssType;
166  ULONG                  uNumberOfBssids;
167  WINBOOL                bNetworkConnectable;
168  WLAN_REASON_CODE       wlanNotConnectableReason;
169  ULONG                  uNumberOfPhyTypes;
170  DOT11_PHY_TYPE         dot11PhyTypes[WLAN_MAX_PHY_TYPE_NUMBER];
171  WINBOOL                bMorePhyTypes;
172  WLAN_SIGNAL_QUALITY    wlanSignalQuality;
173  WINBOOL                bSecurityEnabled;
174  DOT11_AUTH_ALGORITHM   dot11DefaultAuthAlgorithm;
175  DOT11_CIPHER_ALGORITHM dot11DefaultCipherAlgorithm;
176  DWORD                  dwFlags;
177  DWORD                  dwReserved;
178} WLAN_AVAILABLE_NETWORK, *PWLAN_AVAILABLE_NETWORK;
179
180typedef struct _WLAN_AVAILABLE_NETWORK_LIST {
181  DWORD                  dwNumberOfItems;
182  DWORD                  dwIndex;
183  WLAN_AVAILABLE_NETWORK Network[1];
184} WLAN_AVAILABLE_NETWORK_LIST, *PWLAN_AVAILABLE_NETWORK_LIST;
185
186typedef struct _WLAN_SECURITY_ATTRIBUTES {
187  WINBOOL                bSecurityEnabled;
188  WINBOOL                bOneXEnabled;
189  DOT11_AUTH_ALGORITHM   dot11AuthAlgorithm;
190  DOT11_CIPHER_ALGORITHM dot11CipherAlgorithm;
191} WLAN_SECURITY_ATTRIBUTES, *PWLAN_SECURITY_ATTRIBUTES;
192
193typedef struct _WLAN_CONNECTION_ATTRIBUTES {
194  WLAN_INTERFACE_STATE        isState;
195  WLAN_CONNECTION_MODE        wlanConnectionMode;
196  WCHAR                       strProfileName[256];
197  WLAN_ASSOCIATION_ATTRIBUTES wlanAssociationAttributes;
198  WLAN_SECURITY_ATTRIBUTES    wlanSecurityAttributes;
199} WLAN_CONNECTION_ATTRIBUTES, *PWLAN_CONNECTION_ATTRIBUTES;
200
201/* Assuming stdcall */
202typedef VOID (CALLBACK *WLAN_NOTIFICATION_CALLBACK)(
203  PWLAN_NOTIFICATION_DATA ,
204  PVOID
205);
206
207#define WLAN_MAX_NAME_LENGTH 256
208
209typedef struct _WLAN_CONNECTION_NOTIFICATION_DATA {
210  WLAN_CONNECTION_MODE wlanConnectionMode;
211  WCHAR                strProfileName[WLAN_MAX_NAME_LENGTH];
212  DOT11_SSID           dot11Ssid;
213  DOT11_BSS_TYPE       dot11BssType;
214  BOOL                 bSecurityEnabled;
215  WLAN_REASON_CODE     wlanReasonCode;
216  DWORD                dwFlags;
217  WCHAR                strProfileXml[1];
218} WLAN_CONNECTION_NOTIFICATION_DATA, *PWLAN_CONNECTION_NOTIFICATION_DATA;
219
220#define WLAN_CONNECTION_HIDDEN_NETWORK 0x00000001
221#define WLAN_CONNECTION_ADHOC_JOIN_ONLY 0x00000002
222#define WLAN_CONNECTION_IGNORE_PRIVACY_BIT 0x00000004
223#define WLAN_CONNECTION_EAPOL_PASSTHROUGH 0x00000008
224
225typedef struct _WLAN_CONNECTION_PARAMETERS {
226  WLAN_CONNECTION_MODE wlanConnectionMode;
227  LPCWSTR              strProfile;
228  PDOT11_SSID          pDot11Ssid;
229  PDOT11_BSSID_LIST    pDesiredBssidList;
230  DOT11_BSS_TYPE       dot11BssType;
231  DWORD                dwFlags;
232} WLAN_CONNECTION_PARAMETERS, *PWLAN_CONNECTION_PARAMETERS;
233
234typedef struct _WLAN_INTERFACE_INFO {
235  GUID                 InterfaceGuid;
236  WCHAR                strInterfaceDescription[256];
237  WLAN_INTERFACE_STATE isState;
238} WLAN_INTERFACE_INFO, *PWLAN_INTERFACE_INFO;
239
240typedef struct _WLAN_INTERFACE_INFO_LIST {
241  DWORD               dwNumberOfItems;
242  DWORD               dwIndex;
243  WLAN_INTERFACE_INFO InterfaceInfo[];
244} WLAN_INTERFACE_INFO_LIST, *PWLAN_INTERFACE_INFO_LIST;
245
246typedef struct _WLAN_PROFILE_INFO {
247  WCHAR strProfileName[256];
248  DWORD dwFlags;
249} WLAN_PROFILE_INFO, *PWLAN_PROFILE_INFO;
250
251typedef struct _WLAN_PROFILE_INFO_LIST {
252  DWORD             dwNumberOfItems;
253  DWORD             dwIndex;
254  WLAN_PROFILE_INFO ProfileInfo[1];
255} WLAN_PROFILE_INFO_LIST, *PWLAN_PROFILE_INFO_LIST;
256
257PVOID WINAPI WlanAllocateMemory(
258  DWORD dwMemorySize
259);
260
261DWORD WINAPI WlanCloseHandle(
262  HANDLE hClientHandle,
263  PVOID pReserved
264);
265
266DWORD WINAPI WlanConnect(
267  HANDLE hClientHandle,
268  const GUID *pInterfaceGuid,
269  const PWLAN_CONNECTION_PARAMETERS pConnectionParameters,
270  PVOID pReserved
271);
272
273DWORD WINAPI WlanDeleteProfile(
274  HANDLE hClientHandle,
275  const GUID *pInterfaceGuid,
276  LPCWSTR strProfileName,
277  PVOID pReserved
278);
279
280DWORD WINAPI WlanDisconnect(
281  HANDLE hClientHandle,
282  const GUID *pInterfaceGuid,
283  PVOID pReserved
284);
285
286DWORD WINAPI WlanEnumInterfaces(
287  HANDLE hClientHandle,
288  PVOID pReserved,
289  PWLAN_INTERFACE_INFO_LIST *ppInterfaceList
290);
291
292VOID WINAPI WlanFreeMemory(
293  PVOID pMemory
294);
295
296DWORD WINAPI WlanGetAvailableNetworkList(
297  HANDLE hClientHandle,
298  const GUID *pInterfaceGuid,
299  DWORD dwFlags,
300  PVOID pReserved,
301  PWLAN_AVAILABLE_NETWORK_LIST *ppAvailableNetworkList
302);
303
304DWORD WINAPI WlanGetProfile(
305  HANDLE hClientHandle,
306  const GUID *pInterfaceGuid,
307  LPCWSTR strProfileName,
308  PVOID pReserved,
309  LPWSTR *pstrProfileXml,
310  DWORD *pdwFlags,
311  PDWORD pdwGrantedAccess
312);
313
314DWORD WINAPI WlanGetProfileList(
315  HANDLE hClientHandle,
316  const GUID *pInterfaceGuid,
317  PVOID pReserved,
318  PWLAN_PROFILE_INFO_LIST *ppProfileList
319);
320
321DWORD WINAPI WlanOpenHandle(
322  DWORD dwClientVersion,
323  PVOID pReserved,
324  PDWORD pdwNegotiatedVersion,
325  PHANDLE phClientHandle
326);
327
328DWORD WINAPI WlanQueryInterface(
329  HANDLE hClientHandle,
330  const GUID *pInterfaceGuid,
331  WLAN_INTF_OPCODE OpCode,
332  PVOID pReserved,
333  PDWORD pdwDataSize,
334  PVOID *ppData,
335  PWLAN_OPCODE_VALUE_TYPE pWlanOpcodeValueType
336);
337
338DWORD WINAPI WlanReasonCodeToString(
339  DWORD dwReasonCode,
340  DWORD dwBufferSize,
341  PWCHAR pStringBuffer,
342  PVOID pReserved
343);
344
345DWORD WINAPI WlanRegisterNotification(
346  HANDLE hClientHandle,
347  DWORD dwNotifSource,
348  WINBOOL bIgnoreDuplicate,
349  WLAN_NOTIFICATION_CALLBACK  funcCallback,
350  PVOID pCallbackContext,
351  PVOID pReserved,
352  PDWORD pdwPrevNotifSource
353);
354
355DWORD WINAPI WlanSetInterface(
356  HANDLE hClientHandle,
357  const GUID *pInterfaceGuid,
358  WLAN_INTF_OPCODE OpCode,
359  DWORD dwDataSize,
360  const PVOID pData,
361  PVOID pReserved
362);
363
364DWORD WINAPI WlanSetProfile(
365  HANDLE hClientHandle,
366  const GUID *pInterfaceGuid,
367  DWORD dwFlags,
368  LPCWSTR strProfileXml,
369  LPCWSTR strAllUserProfileSecurity,
370  WINBOOL bOverwrite,
371  PVOID pReserved,
372  DWORD *pdwReasonCode
373);
374
375DWORD WINAPI WlanSetProfileEapXmlUserData(
376  HANDLE hClientHandle,
377  const GUID *pInterfaceGuid,
378  LPCWSTR strProfileName,
379  DWORD dwFlags,
380  LPCWSTR strEapXmlUserData,
381  PVOID pReserved
382);
383
384DWORD WINAPI WlanSetProfileList(
385  HANDLE hClientHandle,
386  const GUID *pInterfaceGuid,
387  DWORD dwItems,
388  LPCWSTR *strProfileNames,
389  PVOID pReserved
390);
391
392DWORD WINAPI WlanSetProfilePosition(
393  HANDLE hClientHandle,
394  const GUID *pInterfaceGuid,
395  LPCWSTR strProfileName,
396  DWORD dwPosition,
397  PVOID pReserved
398);
399
400typedef enum _WLAN_AUTOCONF_OPCODE {
401  wlan_autoconf_opcode_start                                       = 0,
402  wlan_autoconf_opcode_show_denied_networks                        = 1,
403  wlan_autoconf_opcode_power_setting                               = 2,
404  wlan_autoconf_opcode_only_use_gp_profiles_for_allowed_networks   = 3,
405  wlan_autoconf_opcode_allow_explicit_creds                        = 4,
406  wlan_autoconf_opcode_block_period                                = 5,
407  wlan_autoconf_opcode_allow_virtual_station_extensibility         = 6,
408  wlan_autoconf_opcode_end                                         = 7
409} WLAN_AUTOCONF_OPCODE, *PWLAN_AUTOCONF_OPCODE;
410
411typedef enum _WL_DISPLAY_PAGES {
412  WLConnectionPage,
413  WLSecurityPage
414} WL_DISPLAY_PAGES, *PWL_DISPLAY_PAGES;
415
416typedef enum _WLAN_ADHOC_NETWORK_STATE {
417  wlan_adhoc_network_state_formed      = 0,
418  wlan_adhoc_network_state_connected   = 1
419} WLAN_ADHOC_NETWORK_STATE;
420
421typedef enum _WLAN_IHV_CONTROL_TYPE {
422  wlan_ihv_control_type_service,
423  wlan_ihv_control_type_driver
424} WLAN_IHV_CONTROL_TYPE, *PWLAN_IHV_CONTROL_TYPE;
425
426typedef enum _WLAN_FILTER_LIST_TYPE {
427  wlan_filter_list_type_gp_permit,
428  wlan_filter_list_type_gp_deny,
429  wlan_filter_list_type_user_permit,
430  wlan_filter_list_type_user_deny
431} WLAN_FILTER_LIST_TYPE, *PWLAN_FILTER_LIST_TYPE;
432
433typedef enum _WLAN_SECURABLE_OBJECT {
434  wlan_secure_permit_list                      = 0,
435  wlan_secure_deny_list                        = 1,
436  wlan_secure_ac_enabled                       = 2,
437  wlan_secure_bc_scan_enabled                  = 3,
438  wlan_secure_bss_type                         = 4,
439  wlan_secure_show_denied                      = 5,
440  wlan_secure_interface_properties             = 6,
441  wlan_secure_ihv_control                      = 7,
442  wlan_secure_all_user_profiles_order          = 8,
443  wlan_secure_add_new_all_user_profiles        = 9,
444  wlan_secure_add_new_per_user_profiles        = 10,
445  wlan_secure_media_streaming_mode_enabled     = 11,
446  wlan_secure_current_operation_mode           = 12,
447  wlan_secure_get_plaintext_key                = 13,
448  wlan_secure_hosted_network_elevated_access   = 14
449} WLAN_SECURABLE_OBJECT, *PWLAN_SECURABLE_OBJECT;
450
451typedef struct _DOT11_NETWORK_LIST {
452  DWORD         dwNumberOfItems;
453  DWORD         dwIndex;
454  DOT11_NETWORK Network[1];
455} DOT11_NETWORK_LIST, *PDOT11_NETWORK_LIST;
456
457#define DOT11_RATE_SET_MAX_LENGTH 126
458
459typedef struct _WLAN_RATE_SET {
460  ULONG  uRateSetLength;
461  USHORT usRateSet[DOT11_RATE_SET_MAX_LENGTH];
462} WLAN_RATE_SET, *PWLAN_RATE_SET;
463
464typedef struct _WLAN_BSS_ENTRY {
465  DOT11_SSID        dot11Ssid;
466  ULONG             uPhyId;
467  DOT11_MAC_ADDRESS dot11Bssid;
468  DOT11_BSS_TYPE    dot11BssType;
469  DOT11_PHY_TYPE    dot11BssPhyType;
470  LONG              lRssi;
471  ULONG             uLinkQuality;
472  BOOLEAN           bInRegDomain;
473  USHORT            usBeaconPeriod;
474  ULONGLONG         ullTimestamp;
475  ULONGLONG         ullHostTimestamp;
476  USHORT            usCapabilityInformation;
477  ULONG             ulChCenterFrequency;
478  WLAN_RATE_SET     wlanRateSet;
479  ULONG             ulIeOffset;
480  ULONG             ulIeSize;
481} WLAN_BSS_ENTRY, *PWLAN_BSS_ENTRY;
482
483typedef struct _WLAN_BSS_LIST {
484  DWORD          dwTotalSize;
485  DWORD          dwNumberOfItems;
486  WLAN_BSS_ENTRY wlanBssEntries[1];
487} WLAN_BSS_LIST, *PWLAN_BSS_LIST;
488
489typedef struct _WLAN_COUNTRY_OR_REGION_STRING_LIST {
490  DWORD                          dwNumberOfItems;
491  DOT11_COUNTRY_OR_REGION_STRING pCountryOrRegionStringList[1];
492} WLAN_COUNTRY_OR_REGION_STRING_LIST, *PWLAN_COUNTRY_OR_REGION_STRING_LIST;
493
494#define WLAN_MAX_PHY_INDEX 64
495
496typedef struct _WLAN_INTERFACE_CAPABILITY {
497  WLAN_INTERFACE_TYPE interfaceType;
498  WINBOOL             bDot11DSupported;
499  DWORD               dwMaxDesiredSsidListSize;
500  DWORD               dwMaxDesiredBssidListSize;
501  DWORD               dwNumberOfSupportedPhys;
502  DOT11_PHY_TYPE      dot11PhyTypes[WLAN_MAX_PHY_INDEX];
503} WLAN_INTERFACE_CAPABILITY, *PWLAN_INTERFACE_CAPABILITY;
504
505typedef struct _WLAN_MAC_FRAME_STATISTICS {
506  ULONGLONG ullTransmittedFrameCount;
507  ULONGLONG ullReceivedFrameCount;
508  ULONGLONG ullWEPExcludedCount;
509  ULONGLONG ullTKIPLocalMICFailures;
510  ULONGLONG ullTKIPReplays;
511  ULONGLONG ullTKIPICVErrorCount;
512  ULONGLONG ullCCMPReplays;
513  ULONGLONG ullCCMPDecryptErrors;
514  ULONGLONG ullWEPUndecryptableCount;
515  ULONGLONG ullWEPICVErrorCount;
516  ULONGLONG ullDecryptSuccessCount;
517  ULONGLONG ullDecryptFailureCount;
518} WLAN_MAC_FRAME_STATISTICS, *PWLAN_MAC_FRAME_STATISTICS;
519
520typedef struct _WLAN_MSM_NOTIFICATION_DATA {
521  WLAN_CONNECTION_MODE wlanConnectionMode;
522  WCHAR                strProfileName[WLAN_MAX_NAME_LENGTH];
523  DOT11_SSID           dot11Ssid;
524  DOT11_BSS_TYPE       dot11BssType;
525  DOT11_MAC_ADDRESS    dot11MacAddr;
526  BOOL                 bSecurityEnabled;
527  BOOL                 bFirstPeer;
528  BOOL                 bLastPeer;
529  WLAN_REASON_CODE     wlanReasonCode;
530} WLAN_MSM_NOTIFICATION_DATA, *PWLAN_MSM_NOTIFICATION_DATA;
531
532typedef struct _WLAN_PHY_FRAME_STATISTICS {
533  ULONGLONG ullTransmittedFrameCount;
534  ULONGLONG ullMulticastTransmittedFrameCount;
535  ULONGLONG ullFailedCount;
536  ULONGLONG ullRetryCount;
537  ULONGLONG ullMultipleRetryCount;
538  ULONGLONG ullMaxTXLifetimeExceededCount;
539  ULONGLONG ullTransmittedFragmentCount;
540  ULONGLONG ullRTSSuccessCount;
541  ULONGLONG ullRTSFailureCount;
542  ULONGLONG ullACKFailureCount;
543  ULONGLONG ullReceivedFrameCount;
544  ULONGLONG ullMulticastReceivedFrameCount;
545  ULONGLONG ullPromiscuousReceivedFrameCount;
546  ULONGLONG ullMaxRXLifetimeExceededCount;
547  ULONGLONG ullFrameDuplicateCount;
548  ULONGLONG ullReceivedFragmentCount;
549  ULONGLONG ullPromiscuousReceivedFragmentCount;
550  ULONGLONG ullFCSErrorCount;
551} WLAN_PHY_FRAME_STATISTICS, *PWLAN_PHY_FRAME_STATISTICS;
552
553typedef struct _WLAN_PHY_RADIO_STATE {
554  DWORD             dwPhyIndex;
555  DOT11_RADIO_STATE dot11SoftwareRadioState;
556  DOT11_RADIO_STATE dot11HardwareRadioState;
557} WLAN_PHY_RADIO_STATE, *PWLAN_PHY_RADIO_STATE;
558
559typedef struct _WLAN_RADIO_STATE {
560  DWORD                dwNumberOfPhys;
561  WLAN_PHY_RADIO_STATE PhyRadioState[64];
562} WLAN_RADIO_STATE, *PWLAN_RADIO_STATE;
563
564#define DOT11_PSD_IE_MAX_DATA_SIZE 240
565#define DOT11_PSD_IE_MAX_ENTRY_NUMBER 5
566
567typedef struct _WLAN_RAW_DATA {
568  DWORD dwDataSize;
569  BYTE  DataBlob[1];
570} WLAN_RAW_DATA, *PWLAN_RAW_DATA;
571
572typedef struct _WLAN_RAW_DATA_LIST {
573  DWORD dwTotalSize;
574  DWORD dwNumberOfItems;
575  struct {
576    DWORD dwDataOffset;
577    DWORD dwDataSize;
578  } DataList[1];
579} WLAN_RAW_DATA_LIST, *PWLAN_RAW_DATA_LIST;
580
581typedef struct _WLAN_STATISTICS {
582  ULONGLONG                 ullFourWayHandshakeFailures;
583  ULONGLONG                 ullTKIPCounterMeasuresInvoked;
584  ULONGLONG                 ullReserved;
585  WLAN_MAC_FRAME_STATISTICS MacUcastCounters;
586  WLAN_MAC_FRAME_STATISTICS MacMcastCounters;
587  DWORD                     dwNumberOfPhys;
588  WLAN_PHY_FRAME_STATISTICS PhyCounters[1];
589} WLAN_STATISTICS, *PWLAN_STATISTICS;
590
591DWORD WINAPI WlanExtractPsdIEDataList(
592  HANDLE hClientHandle,
593  DWORD dwIeDataSize,
594  const PBYTE pRawIeData,
595  LPCWSTR strFormat,
596  PVOID pReserved,
597  PWLAN_RAW_DATA_LIST *ppPsdIEDataList
598);
599
600DWORD WINAPI WlanGetFilterList(
601  HANDLE hClientHandle,
602  WLAN_FILTER_LIST_TYPE wlanFilterListType,
603  PVOID pReserved,
604  PDOT11_NETWORK_LIST *ppNetworkList
605);
606
607DWORD WINAPI WlanGetInterfaceCapability(
608  HANDLE hClientHandle,
609  const GUID *pInterfaceGuid,
610  PVOID pReserved,
611  PWLAN_INTERFACE_CAPABILITY *ppCapability
612);
613
614DWORD WINAPI WlanGetNetworkBssList(
615  HANDLE hClientHandle,
616  const GUID *pInterfaceGuid,
617  const  PDOT11_SSID pDot11Ssid,
618  DOT11_BSS_TYPE dot11BssType,
619  WINBOOL bSecurityEnabled,
620  PVOID pReserved,
621  PWLAN_BSS_LIST *ppWlanBssList
622);
623
624DWORD WINAPI WlanGetProfileCustomUserData(
625  HANDLE hClientHandle,
626  const GUID *pInterfaceGuid,
627  LPCWSTR strProfileName,
628  PVOID pReserved,
629  DWORD *pdwDataSize,
630  PBYTE *ppData
631);
632
633DWORD WINAPI WlanGetSecuritySettings(
634  HANDLE hClientHandle,
635  WLAN_SECURABLE_OBJECT SecurableObject,
636  PWLAN_OPCODE_VALUE_TYPE pValueType,
637  LPWSTR *pstrCurrentSDDL,
638  PDWORD pdwGrantedAccess
639);
640
641DWORD WINAPI WlanIhvControl(
642  HANDLE hClientHandle,
643  const GUID *pInterfaceGuid,
644  WLAN_IHV_CONTROL_TYPE Type,
645  DWORD dwInBufferSize,
646  PVOID pInBuffer,
647  DWORD dwOutBufferSize,
648  PVOID pOutBuffer,
649  PDWORD pdwBytesReturned
650);
651
652DWORD WINAPI WlanQueryAutoConfigParameter(
653  HANDLE hClientHandle,
654  WLAN_AUTOCONF_OPCODE OpCode,
655  PVOID pReserved,
656  PDWORD pdwDataSize,
657  PVOID ppData,
658  PWLAN_OPCODE_VALUE_TYPE pWlanOpcodeValueType
659);
660
661DWORD WINAPI WlanRenameProfile(
662  HANDLE hClientHandle,
663  const GUID *pInterfaceGuid,
664  LPCWSTR strOldProfileName,
665  LPCWSTR strNewProfileName,
666  PVOID pReserved
667);
668
669#define WLAN_PROFILE_USER 0x00000002
670#define WLAN_PROFILE_CONNECTION_MODE_SET_BY_CLIENT 0x00010000
671#define WLAN_PROFILE_CONNECTION_MODE_AUTO 0x00020000
672
673DWORD WINAPI WlanSaveTemporaryProfile(
674  HANDLE hClientHandle,
675  const GUID *pInterfaceGuid,
676  LPCWSTR strProfileName,
677  LPCWSTR strAllUserProfileSecurity,
678  DWORD dwFlags,
679  WINBOOL bOverWrite,
680  PVOID pReserved
681);
682
683DWORD WINAPI WlanScan(
684  HANDLE hClientHandle,
685  const GUID *pInterfaceGuid,
686  const PDOT11_SSID pDot11Ssid,
687  const PWLAN_RAW_DATA pIeData,
688  PVOID pReserved
689);
690
691DWORD WINAPI WlanSetAutoConfigParameter(
692  HANDLE hClientHandle,
693  WLAN_AUTOCONF_OPCODE OpCode,
694  DWORD dwDataSize,
695  const PVOID pData,
696  PVOID pReserved
697);
698
699DWORD WINAPI WlanSetFilterList(
700  HANDLE hClientHandle,
701  WLAN_FILTER_LIST_TYPE wlanFilterListType,
702  const PDOT11_NETWORK_LIST pNetworkList,
703  PVOID pReserved
704);
705
706DWORD WINAPI WlanSetProfileCustomUserData(
707  HANDLE hClientHandle,
708  const GUID *pInterfaceGuid,
709  LPCWSTR strProfileName,
710  DWORD dwDataSize,
711  const PBYTE pData,
712  PVOID pReserved
713);
714
715DWORD WlanSetProfileEapUserData(
716  HANDLE hClientHandle,
717  const GUID *pInterfaceGuid,
718  LPCWSTR strProfileName,
719  EAP_METHOD_TYPE eapType,
720  DWORD dwFlags,
721  DWORD dwEapUserDataSize,
722  const LPBYTE pbEapUserData,
723  PVOID pReserved
724);
725
726DWORD WINAPI WlanSetPsdIEDataList(
727  HANDLE hClientHandle,
728  LPCWSTR strFormat,
729  const PWLAN_RAW_DATA_LIST pPsdIEDataList,
730  PVOID pReserved
731);
732
733DWORD WINAPI WlanSetSecuritySettings(
734  HANDLE hClientHandle,
735  WLAN_SECURABLE_OBJECT SecurableObject,
736  LPCWSTR strModifiedSDDL
737);
738
739DWORD WINAPI WlanUIEditProfile(
740  DWORD dwClientVersion,
741  LPCWSTR wstrProfileName,
742  GUID *pInterfaceGuid,
743  HWND hWnd,
744  WL_DISPLAY_PAGES wlStartPage,
745  PVOID pReserved,
746  PWLAN_REASON_CODE *pWlanReasonCode
747);
748
749#ifdef __cplusplus
750}
751#endif
752
753#endif /*_INC_WLANAPI*/
754