master
   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_MAX_NAME_LENGTH L2_PROFILE_MAX_NAME_LENGTH
  18
  19#define WLAN_SET_EAPHOST_DATA_ALL_USERS 0x00000001
  20
  21#define WLAN_NOTIFICATION_SOURCE_NONE      L2_NOTIFICATION_SOURCE_NONE
  22#define WLAN_NOTIFICATION_SOURCE_ALL       L2_NOTIFICATION_SOURCE_ALL
  23#define WLAN_NOTIFICATION_SOURCE_ACM       L2_NOTIFICATION_SOURCE_WLAN_ACM
  24#define WLAN_NOTIFICATION_SOURCE_MSM       L2_NOTIFICATION_SOURCE_WLAN_MSM
  25#define WLAN_NOTIFICATION_SOURCE_SECURITY  L2_NOTIFICATION_SOURCE_WLAN_SECURITY
  26#define WLAN_NOTIFICATION_SOURCE_IHV       L2_NOTIFICATION_SOURCE_WLAN_IHV
  27#define WLAN_NOTIFICATION_SOURCE_HNWK      L2_NOTIFICATION_SOURCE_WLAN_HNWK
  28#define WLAN_NOTIFICATION_SOURCE_ONEX      L2_NOTIFICATION_SOURCE_ONEX
  29#define WLAN_NOTIFICATION_SOURCE_DEVICE_SERVICE L2_NOTIFICATION_SOURCE_WLAN_DEVICE_SERVICE
  30
  31#define WLAN_REASON_CODE_SUCCESS L2_REASON_CODE_SUCCESS
  32#define WLAN_REASON_CODE_UNKNOWN L2_REASON_CODE_UNKNOWN
  33#define WLAN_REASON_CODE_RANGE_SIZE L2_REASON_CODE_GROUP_SIZE
  34#define WLAN_REASON_CODE_BASE L2_REASON_CODE_DOT11_AC_BASE
  35#define WLAN_REASON_CODE_AC_BASE L2_REASON_CODE_DOT11_AC_BASE
  36#define WLAN_REASON_CODE_AC_CONNECT_BASE (WLAN_REASON_CODE_AC_BASE + WLAN_REASON_CODE_RANGE_SIZE / 2)
  37#define WLAN_REASON_CODE_AC_END (WLAN_REASON_CODE_AC_BASE + WLAN_REASON_CODE_RANGE_SIZE - 1)
  38#define WLAN_REASON_CODE_PROFILE_BASE L2_REASON_CODE_PROFILE_BASE
  39#define WLAN_REASON_CODE_PROFILE_CONNECT_BASE (WLAN_REASON_CODE_PROFILE_BASE + WLAN_REASON_CODE_RANGE_SIZE / 2)
  40#define WLAN_REASON_CODE_PROFILE_END (WLAN_REASON_CODE_PROFILE_BASE + WLAN_REASON_CODE_RANGE_SIZE - 1)
  41#define WLAN_REASON_CODE_MSM_BASE L2_REASON_CODE_DOT11_MSM_BASE
  42#define WLAN_REASON_CODE_MSM_CONNECT_BASE (WLAN_REASON_CODE_MSM_BASE + WLAN_REASON_CODE_RANGE_SIZE / 2)
  43#define WLAN_REASON_CODE_MSM_END (WLAN_REASON_CODE_MSM_BASE + WLAN_REASON_CODE_RANGE_SIZE - 1)
  44#define WLAN_REASON_CODE_MSMSEC_BASE L2_REASON_CODE_DOT11_SECURITY_BASE
  45#define WLAN_REASON_CODE_MSMSEC_CONNECT_BASE (WLAN_REASON_CODE_MSMSEC_BASE + WLAN_REASON_CODE_RANGE_SIZE / 2)
  46#define WLAN_REASON_CODE_MSMSEC_END (WLAN_REASON_CODE_MSMSEC_BASE + WLAN_REASON_CODE_RANGE_SIZE - 1)
  47#define WLAN_REASON_CODE_RESERVED_BASE L2_REASON_CODE_RESERVED_BASE
  48#define WLAN_REASON_CODE_RESERVED_END (WLAN_REASON_CODE_RESERVED_BASE + WLAN_REASON_CODE_RANGE_SIZE - 1)
  49#define WLAN_REASON_CODE_NETWORK_NOT_COMPATIBLE (WLAN_REASON_CODE_AC_BASE +1)
  50#define WLAN_REASON_CODE_PROFILE_NOT_COMPATIBLE (WLAN_REASON_CODE_AC_BASE +2)
  51#define WLAN_REASON_CODE_NO_AUTO_CONNECTION (WLAN_REASON_CODE_AC_CONNECT_BASE +1)
  52#define WLAN_REASON_CODE_NOT_VISIBLE (WLAN_REASON_CODE_AC_CONNECT_BASE +2)
  53#define WLAN_REASON_CODE_GP_DENIED (WLAN_REASON_CODE_AC_CONNECT_BASE +3)
  54#define WLAN_REASON_CODE_USER_DENIED (WLAN_REASON_CODE_AC_CONNECT_BASE +4)
  55#define WLAN_REASON_CODE_BSS_TYPE_NOT_ALLOWED (WLAN_REASON_CODE_AC_CONNECT_BASE +5)
  56#define WLAN_REASON_CODE_IN_FAILED_LIST (WLAN_REASON_CODE_AC_CONNECT_BASE +6)
  57#define WLAN_REASON_CODE_IN_BLOCKED_LIST (WLAN_REASON_CODE_AC_CONNECT_BASE +7)
  58#define WLAN_REASON_CODE_SSID_LIST_TOO_LONG (WLAN_REASON_CODE_AC_CONNECT_BASE +8)
  59#define WLAN_REASON_CODE_CONNECT_CALL_FAIL (WLAN_REASON_CODE_AC_CONNECT_BASE +9)
  60#define WLAN_REASON_CODE_SCAN_CALL_FAIL (WLAN_REASON_CODE_AC_CONNECT_BASE +10)
  61#define WLAN_REASON_CODE_NETWORK_NOT_AVAILABLE (WLAN_REASON_CODE_AC_CONNECT_BASE +11)
  62#define WLAN_REASON_CODE_PROFILE_CHANGED_OR_DELETED (WLAN_REASON_CODE_AC_CONNECT_BASE +12)
  63#define WLAN_REASON_CODE_KEY_MISMATCH (WLAN_REASON_CODE_AC_CONNECT_BASE + 13)
  64#define WLAN_REASON_CODE_USER_NOT_RESPOND (WLAN_REASON_CODE_AC_CONNECT_BASE + 14)
  65#define WLAN_REASON_CODE_AP_PROFILE_NOT_ALLOWED_FOR_CLIENT (WLAN_REASON_CODE_AC_CONNECT_BASE + 15)
  66#define WLAN_REASON_CODE_AP_PROFILE_NOT_ALLOWED (WLAN_REASON_CODE_AC_CONNECT_BASE + 16)
  67#define WLAN_REASON_CODE_HOTSPOT2_PROFILE_DENIED (WLAN_REASON_CODE_AC_CONNECT_BASE + 17)
  68#define WLAN_REASON_CODE_INVALID_PROFILE_SCHEMA (WLAN_REASON_CODE_PROFILE_BASE +1)
  69#define WLAN_REASON_CODE_PROFILE_MISSING (WLAN_REASON_CODE_PROFILE_BASE +2)
  70#define WLAN_REASON_CODE_INVALID_PROFILE_NAME (WLAN_REASON_CODE_PROFILE_BASE +3)
  71#define WLAN_REASON_CODE_INVALID_PROFILE_TYPE (WLAN_REASON_CODE_PROFILE_BASE +4)
  72#define WLAN_REASON_CODE_INVALID_PHY_TYPE (WLAN_REASON_CODE_PROFILE_BASE +5)
  73#define WLAN_REASON_CODE_MSM_SECURITY_MISSING (WLAN_REASON_CODE_PROFILE_BASE +6)
  74#define WLAN_REASON_CODE_IHV_SECURITY_NOT_SUPPORTED (WLAN_REASON_CODE_PROFILE_BASE +7)
  75#define WLAN_REASON_CODE_IHV_OUI_MISMATCH (WLAN_REASON_CODE_PROFILE_BASE +8)
  76#define WLAN_REASON_CODE_IHV_OUI_MISSING (WLAN_REASON_CODE_PROFILE_BASE +9)
  77#define WLAN_REASON_CODE_IHV_SETTINGS_MISSING (WLAN_REASON_CODE_PROFILE_BASE +10)
  78#define WLAN_REASON_CODE_CONFLICT_SECURITY (WLAN_REASON_CODE_PROFILE_BASE +11)
  79#define WLAN_REASON_CODE_SECURITY_MISSING (WLAN_REASON_CODE_PROFILE_BASE +12)
  80#define WLAN_REASON_CODE_INVALID_BSS_TYPE (WLAN_REASON_CODE_PROFILE_BASE +13)
  81#define WLAN_REASON_CODE_INVALID_ADHOC_CONNECTION_MODE (WLAN_REASON_CODE_PROFILE_BASE +14)
  82#define WLAN_REASON_CODE_NON_BROADCAST_SET_FOR_ADHOC (WLAN_REASON_CODE_PROFILE_BASE +15)
  83#define WLAN_REASON_CODE_AUTO_SWITCH_SET_FOR_ADHOC (WLAN_REASON_CODE_PROFILE_BASE +16)
  84#define WLAN_REASON_CODE_AUTO_SWITCH_SET_FOR_MANUAL_CONNECTION (WLAN_REASON_CODE_PROFILE_BASE +17)
  85#define WLAN_REASON_CODE_IHV_SECURITY_ONEX_MISSING (WLAN_REASON_CODE_PROFILE_BASE +18)
  86#define WLAN_REASON_CODE_PROFILE_SSID_INVALID (WLAN_REASON_CODE_PROFILE_BASE +19)
  87#define WLAN_REASON_CODE_TOO_MANY_SSID (WLAN_REASON_CODE_PROFILE_BASE +20)
  88#define WLAN_REASON_CODE_IHV_CONNECTIVITY_NOT_SUPPORTED (WLAN_REASON_CODE_PROFILE_BASE +21)
  89#define WLAN_REASON_CODE_BAD_MAX_NUMBER_OF_CLIENTS_FOR_AP (WLAN_REASON_CODE_PROFILE_BASE +22)
  90#define WLAN_REASON_CODE_INVALID_CHANNEL (WLAN_REASON_CODE_PROFILE_BASE +23)
  91#define WLAN_REASON_CODE_OPERATION_MODE_NOT_SUPPORTED (WLAN_REASON_CODE_PROFILE_BASE +24)
  92#define WLAN_REASON_CODE_AUTO_AP_PROFILE_NOT_ALLOWED (WLAN_REASON_CODE_PROFILE_BASE +25)
  93#define WLAN_REASON_CODE_AUTO_CONNECTION_NOT_ALLOWED (WLAN_REASON_CODE_PROFILE_BASE +26)
  94#define WLAN_REASON_CODE_HOTSPOT2_PROFILE_NOT_ALLOWED (WLAN_REASON_CODE_PROFILE_BASE +27)
  95#define WLAN_REASON_CODE_UNSUPPORTED_SECURITY_SET_BY_OS (WLAN_REASON_CODE_MSM_BASE +1)
  96#define WLAN_REASON_CODE_UNSUPPORTED_SECURITY_SET (WLAN_REASON_CODE_MSM_BASE +2)
  97#define WLAN_REASON_CODE_BSS_TYPE_UNMATCH (WLAN_REASON_CODE_MSM_BASE +3)
  98#define WLAN_REASON_CODE_PHY_TYPE_UNMATCH (WLAN_REASON_CODE_MSM_BASE +4)
  99#define WLAN_REASON_CODE_DATARATE_UNMATCH (WLAN_REASON_CODE_MSM_BASE +5)
 100#define WLAN_REASON_CODE_USER_CANCELLED (WLAN_REASON_CODE_MSM_CONNECT_BASE+1)
 101#define WLAN_REASON_CODE_ASSOCIATION_FAILURE (WLAN_REASON_CODE_MSM_CONNECT_BASE+2)
 102#define WLAN_REASON_CODE_ASSOCIATION_TIMEOUT (WLAN_REASON_CODE_MSM_CONNECT_BASE+3)
 103#define WLAN_REASON_CODE_PRE_SECURITY_FAILURE (WLAN_REASON_CODE_MSM_CONNECT_BASE+4)
 104#define WLAN_REASON_CODE_START_SECURITY_FAILURE (WLAN_REASON_CODE_MSM_CONNECT_BASE+5)
 105#define WLAN_REASON_CODE_SECURITY_FAILURE (WLAN_REASON_CODE_MSM_CONNECT_BASE+6)
 106#define WLAN_REASON_CODE_SECURITY_TIMEOUT (WLAN_REASON_CODE_MSM_CONNECT_BASE+7)
 107#define WLAN_REASON_CODE_ROAMING_FAILURE (WLAN_REASON_CODE_MSM_CONNECT_BASE+8)
 108#define WLAN_REASON_CODE_ROAMING_SECURITY_FAILURE (WLAN_REASON_CODE_MSM_CONNECT_BASE+9)
 109#define WLAN_REASON_CODE_ADHOC_SECURITY_FAILURE (WLAN_REASON_CODE_MSM_CONNECT_BASE+10)
 110#define WLAN_REASON_CODE_DRIVER_DISCONNECTED (WLAN_REASON_CODE_MSM_CONNECT_BASE+11)
 111#define WLAN_REASON_CODE_DRIVER_OPERATION_FAILURE (WLAN_REASON_CODE_MSM_CONNECT_BASE+12)
 112#define WLAN_REASON_CODE_IHV_NOT_AVAILABLE (WLAN_REASON_CODE_MSM_CONNECT_BASE+13)
 113#define WLAN_REASON_CODE_IHV_NOT_RESPONDING (WLAN_REASON_CODE_MSM_CONNECT_BASE+14)
 114#define WLAN_REASON_CODE_DISCONNECT_TIMEOUT (WLAN_REASON_CODE_MSM_CONNECT_BASE+15)
 115#define WLAN_REASON_CODE_INTERNAL_FAILURE (WLAN_REASON_CODE_MSM_CONNECT_BASE+16)
 116#define WLAN_REASON_CODE_UI_REQUEST_TIMEOUT (WLAN_REASON_CODE_MSM_CONNECT_BASE+17)
 117#define WLAN_REASON_CODE_TOO_MANY_SECURITY_ATTEMPTS (WLAN_REASON_CODE_MSM_CONNECT_BASE+18)
 118#define WLAN_REASON_CODE_AP_STARTING_FAILURE (WLAN_REASON_CODE_MSM_CONNECT_BASE+19)
 119#define WLAN_REASON_CODE_NO_VISIBLE_AP (WLAN_REASON_CODE_MSM_CONNECT_BASE+20)
 120#define WLAN_REASON_CODE_MSMSEC_MIN WLAN_REASON_CODE_MSMSEC_BASE
 121#define WLAN_REASON_CODE_MSMSEC_PROFILE_INVALID_KEY_INDEX (WLAN_REASON_CODE_MSMSEC_BASE+1)
 122#define WLAN_REASON_CODE_MSMSEC_PROFILE_PSK_PRESENT (WLAN_REASON_CODE_MSMSEC_BASE+2)
 123#define WLAN_REASON_CODE_MSMSEC_PROFILE_KEY_LENGTH (WLAN_REASON_CODE_MSMSEC_BASE+3)
 124#define WLAN_REASON_CODE_MSMSEC_PROFILE_PSK_LENGTH (WLAN_REASON_CODE_MSMSEC_BASE+4)
 125#define WLAN_REASON_CODE_MSMSEC_PROFILE_NO_AUTH_CIPHER_SPECIFIED (WLAN_REASON_CODE_MSMSEC_BASE+5)
 126#define WLAN_REASON_CODE_MSMSEC_PROFILE_TOO_MANY_AUTH_CIPHER_SPECIFIED (WLAN_REASON_CODE_MSMSEC_BASE+6)
 127#define WLAN_REASON_CODE_MSMSEC_PROFILE_DUPLICATE_AUTH_CIPHER (WLAN_REASON_CODE_MSMSEC_BASE+7)
 128#define WLAN_REASON_CODE_MSMSEC_PROFILE_RAWDATA_INVALID (WLAN_REASON_CODE_MSMSEC_BASE+8)
 129#define WLAN_REASON_CODE_MSMSEC_PROFILE_INVALID_AUTH_CIPHER (WLAN_REASON_CODE_MSMSEC_BASE+9)
 130#define WLAN_REASON_CODE_MSMSEC_PROFILE_ONEX_DISABLED (WLAN_REASON_CODE_MSMSEC_BASE+10)
 131#define WLAN_REASON_CODE_MSMSEC_PROFILE_ONEX_ENABLED (WLAN_REASON_CODE_MSMSEC_BASE+11)
 132#define WLAN_REASON_CODE_MSMSEC_PROFILE_INVALID_PMKCACHE_MODE (WLAN_REASON_CODE_MSMSEC_BASE+12)
 133#define WLAN_REASON_CODE_MSMSEC_PROFILE_INVALID_PMKCACHE_SIZE (WLAN_REASON_CODE_MSMSEC_BASE+13)
 134#define WLAN_REASON_CODE_MSMSEC_PROFILE_INVALID_PMKCACHE_TTL (WLAN_REASON_CODE_MSMSEC_BASE+14)
 135#define WLAN_REASON_CODE_MSMSEC_PROFILE_INVALID_PREAUTH_MODE (WLAN_REASON_CODE_MSMSEC_BASE+15)
 136#define WLAN_REASON_CODE_MSMSEC_PROFILE_INVALID_PREAUTH_THROTTLE (WLAN_REASON_CODE_MSMSEC_BASE+16)
 137#define WLAN_REASON_CODE_MSMSEC_PROFILE_PREAUTH_ONLY_ENABLED (WLAN_REASON_CODE_MSMSEC_BASE+17)
 138#define WLAN_REASON_CODE_MSMSEC_CAPABILITY_NETWORK (WLAN_REASON_CODE_MSMSEC_BASE+18)
 139#define WLAN_REASON_CODE_MSMSEC_CAPABILITY_NIC (WLAN_REASON_CODE_MSMSEC_BASE+19)
 140#define WLAN_REASON_CODE_MSMSEC_CAPABILITY_PROFILE (WLAN_REASON_CODE_MSMSEC_BASE+20)
 141#define WLAN_REASON_CODE_MSMSEC_CAPABILITY_DISCOVERY (WLAN_REASON_CODE_MSMSEC_BASE+21)
 142#define WLAN_REASON_CODE_MSMSEC_PROFILE_PASSPHRASE_CHAR (WLAN_REASON_CODE_MSMSEC_BASE+22)
 143#define WLAN_REASON_CODE_MSMSEC_PROFILE_KEYMATERIAL_CHAR (WLAN_REASON_CODE_MSMSEC_BASE+23)
 144#define WLAN_REASON_CODE_MSMSEC_PROFILE_WRONG_KEYTYPE (WLAN_REASON_CODE_MSMSEC_BASE+24)
 145#define WLAN_REASON_CODE_MSMSEC_MIXED_CELL (WLAN_REASON_CODE_MSMSEC_BASE+25)
 146#define WLAN_REASON_CODE_MSMSEC_PROFILE_AUTH_TIMERS_INVALID (WLAN_REASON_CODE_MSMSEC_BASE+26)
 147#define WLAN_REASON_CODE_MSMSEC_PROFILE_INVALID_GKEY_INTV (WLAN_REASON_CODE_MSMSEC_BASE+27)
 148#define WLAN_REASON_CODE_MSMSEC_TRANSITION_NETWORK (WLAN_REASON_CODE_MSMSEC_BASE+28)
 149#define WLAN_REASON_CODE_MSMSEC_PROFILE_KEY_UNMAPPED_CHAR (WLAN_REASON_CODE_MSMSEC_BASE+29)
 150#define WLAN_REASON_CODE_MSMSEC_CAPABILITY_PROFILE_AUTH (WLAN_REASON_CODE_MSMSEC_BASE+30)
 151#define WLAN_REASON_CODE_MSMSEC_CAPABILITY_PROFILE_CIPHER (WLAN_REASON_CODE_MSMSEC_BASE+31)
 152#define WLAN_REASON_CODE_MSMSEC_PROFILE_SAFE_MODE (WLAN_REASON_CODE_MSMSEC_BASE+32)
 153#define WLAN_REASON_CODE_MSMSEC_CAPABILITY_PROFILE_SAFE_MODE_NIC (WLAN_REASON_CODE_MSMSEC_BASE+33)
 154#define WLAN_REASON_CODE_MSMSEC_CAPABILITY_PROFILE_SAFE_MODE_NW (WLAN_REASON_CODE_MSMSEC_BASE+34)
 155#define WLAN_REASON_CODE_MSMSEC_PROFILE_UNSUPPORTED_AUTH (WLAN_REASON_CODE_MSMSEC_BASE+35)
 156#define WLAN_REASON_CODE_MSMSEC_PROFILE_UNSUPPORTED_CIPHER (WLAN_REASON_CODE_MSMSEC_BASE+36)
 157#define WLAN_REASON_CODE_MSMSEC_CAPABILITY_MFP_NW_NIC (WLAN_REASON_CODE_MSMSEC_BASE+37)
 158#define WLAN_REASON_CODE_MSMSEC_UI_REQUEST_FAILURE (WLAN_REASON_CODE_MSMSEC_CONNECT_BASE+1)
 159#define WLAN_REASON_CODE_MSMSEC_AUTH_START_TIMEOUT (WLAN_REASON_CODE_MSMSEC_CONNECT_BASE+2)
 160#define WLAN_REASON_CODE_MSMSEC_AUTH_SUCCESS_TIMEOUT (WLAN_REASON_CODE_MSMSEC_CONNECT_BASE+3)
 161#define WLAN_REASON_CODE_MSMSEC_KEY_START_TIMEOUT (WLAN_REASON_CODE_MSMSEC_CONNECT_BASE+4)
 162#define WLAN_REASON_CODE_MSMSEC_KEY_SUCCESS_TIMEOUT (WLAN_REASON_CODE_MSMSEC_CONNECT_BASE+5)
 163#define WLAN_REASON_CODE_MSMSEC_M3_MISSING_KEY_DATA (WLAN_REASON_CODE_MSMSEC_CONNECT_BASE+6)
 164#define WLAN_REASON_CODE_MSMSEC_M3_MISSING_IE (WLAN_REASON_CODE_MSMSEC_CONNECT_BASE+7)
 165#define WLAN_REASON_CODE_MSMSEC_M3_MISSING_GRP_KEY (WLAN_REASON_CODE_MSMSEC_CONNECT_BASE+8)
 166#define WLAN_REASON_CODE_MSMSEC_PR_IE_MATCHING (WLAN_REASON_CODE_MSMSEC_CONNECT_BASE+9)
 167#define WLAN_REASON_CODE_MSMSEC_SEC_IE_MATCHING (WLAN_REASON_CODE_MSMSEC_CONNECT_BASE+10)
 168#define WLAN_REASON_CODE_MSMSEC_NO_PAIRWISE_KEY (WLAN_REASON_CODE_MSMSEC_CONNECT_BASE+11)
 169#define WLAN_REASON_CODE_MSMSEC_G1_MISSING_KEY_DATA (WLAN_REASON_CODE_MSMSEC_CONNECT_BASE+12)
 170#define WLAN_REASON_CODE_MSMSEC_G1_MISSING_GRP_KEY (WLAN_REASON_CODE_MSMSEC_CONNECT_BASE+13)
 171#define WLAN_REASON_CODE_MSMSEC_PEER_INDICATED_INSECURE (WLAN_REASON_CODE_MSMSEC_CONNECT_BASE+14)
 172#define WLAN_REASON_CODE_MSMSEC_NO_AUTHENTICATOR (WLAN_REASON_CODE_MSMSEC_CONNECT_BASE+15)
 173#define WLAN_REASON_CODE_MSMSEC_NIC_FAILURE (WLAN_REASON_CODE_MSMSEC_CONNECT_BASE+16)
 174#define WLAN_REASON_CODE_MSMSEC_CANCELLED (WLAN_REASON_CODE_MSMSEC_CONNECT_BASE+17)
 175#define WLAN_REASON_CODE_MSMSEC_KEY_FORMAT (WLAN_REASON_CODE_MSMSEC_CONNECT_BASE+18)
 176#define WLAN_REASON_CODE_MSMSEC_DOWNGRADE_DETECTED (WLAN_REASON_CODE_MSMSEC_CONNECT_BASE+19)
 177#define WLAN_REASON_CODE_MSMSEC_PSK_MISMATCH_SUSPECTED (WLAN_REASON_CODE_MSMSEC_CONNECT_BASE+20)
 178#define WLAN_REASON_CODE_MSMSEC_FORCED_FAILURE (WLAN_REASON_CODE_MSMSEC_CONNECT_BASE+21)
 179#define WLAN_REASON_CODE_MSMSEC_M3_TOO_MANY_RSNIE (WLAN_REASON_CODE_MSMSEC_CONNECT_BASE+22)
 180#define WLAN_REASON_CODE_MSMSEC_M2_MISSING_KEY_DATA (WLAN_REASON_CODE_MSMSEC_CONNECT_BASE+23)
 181#define WLAN_REASON_CODE_MSMSEC_M2_MISSING_IE (WLAN_REASON_CODE_MSMSEC_CONNECT_BASE+24)
 182#define WLAN_REASON_CODE_MSMSEC_AUTH_WCN_COMPLETED (WLAN_REASON_CODE_MSMSEC_CONNECT_BASE+25)
 183#define WLAN_REASON_CODE_MSMSEC_M3_MISSING_MGMT_GRP_KEY (WLAN_REASON_CODE_MSMSEC_CONNECT_BASE+26)
 184#define WLAN_REASON_CODE_MSMSEC_G1_MISSING_MGMT_GRP_KEY (WLAN_REASON_CODE_MSMSEC_CONNECT_BASE+27)
 185#define WLAN_REASON_CODE_MSMSEC_MAX WLAN_REASON_CODE_MSMSEC_END
 186
 187#define WLAN_AVAILABLE_NETWORK_CONNECTED 0x00000001
 188#define WLAN_AVAILABLE_NETWORK_HAS_PROFILE 0x00000002
 189#define WLAN_AVAILABLE_NETWORK_CONSOLE_USER_PROFILE 0x00000004
 190#define WLAN_AVAILABLE_NETWORK_INTERWORKING_SUPPORTED 0x00000008
 191#define WLAN_AVAILABLE_NETWORK_HOTSPOT2_ENABLED 0x00000010
 192#define WLAN_AVAILABLE_NETWORK_ANQP_SUPPORTED 0x00000020
 193#define WLAN_AVAILABLE_NETWORK_HOTSPOT2_DOMAIN 0x00000040
 194#define WLAN_AVAILABLE_NETWORK_HOTSPOT2_ROAMING 0x00000080
 195#define WLAN_AVAILABLE_NETWORK_AUTO_CONNECT_FAILED 0x00000100
 196
 197#define WLAN_AVAILABLE_NETWORK_INCLUDE_ALL_ADHOC_PROFILES 0x00000001
 198#define WLAN_AVAILABLE_NETWORK_INCLUDE_ALL_MANUAL_HIDDEN_PROFILES 0x00000002
 199
 200#define WLAN_READ_ACCESS (STANDARD_RIGHTS_READ | FILE_READ_DATA)
 201#define WLAN_EXECUTE_ACCESS (WLAN_READ_ACCESS | STANDARD_RIGHTS_EXECUTE | FILE_EXECUTE)
 202#define WLAN_WRITE_ACCESS (WLAN_READ_ACCESS | WLAN_EXECUTE_ACCESS | STANDARD_RIGHTS_WRITE | FILE_WRITE_DATA | DELETE | WRITE_DAC)
 203
 204typedef DWORD WLAN_REASON_CODE, *PWLAN_REASON_CODE;
 205typedef ULONG WLAN_SIGNAL_QUALITY, *PWLAN_SIGNAL_QUALITY;
 206
 207typedef struct _DOT11_NETWORK {
 208  DOT11_SSID     dot11Ssid;
 209  DOT11_BSS_TYPE dot11BssType;
 210} DOT11_NETWORK, *PDOT11_NETWORK;
 211
 212typedef enum _DOT11_RADIO_STATE {
 213  dot11_radio_state_unknown,
 214  dot11_radio_state_on,
 215  dot11_radio_state_off 
 216} DOT11_RADIO_STATE, *PDOT11_RADIO_STATE;
 217
 218typedef enum _WLAN_NOTIFICATION_ACM {
 219    wlan_notification_acm_start = L2_NOTIFICATION_CODE_PUBLIC_BEGIN,
 220    wlan_notification_acm_autoconf_enabled,
 221    wlan_notification_acm_autoconf_disabled,
 222    wlan_notification_acm_background_scan_enabled,
 223    wlan_notification_acm_background_scan_disabled,
 224    wlan_notification_acm_bss_type_change,
 225    wlan_notification_acm_power_setting_change,
 226    wlan_notification_acm_scan_complete,
 227    wlan_notification_acm_scan_fail,
 228    wlan_notification_acm_connection_start,
 229    wlan_notification_acm_connection_complete,
 230    wlan_notification_acm_connection_attempt_fail,
 231    wlan_notification_acm_filter_list_change,
 232    wlan_notification_acm_interface_arrival,
 233    wlan_notification_acm_interface_removal,
 234    wlan_notification_acm_profile_change,
 235    wlan_notification_acm_profile_name_change,
 236    wlan_notification_acm_profiles_exhausted,
 237    wlan_notification_acm_network_not_available,
 238    wlan_notification_acm_network_available,
 239    wlan_notification_acm_disconnecting,
 240    wlan_notification_acm_disconnected,
 241    wlan_notification_acm_adhoc_network_state_change,
 242    wlan_notification_acm_profile_unblocked,
 243    wlan_notification_acm_screen_power_change,
 244    wlan_notification_acm_profile_blocked,
 245    wlan_notification_acm_scan_list_refresh,
 246    wlan_notification_acm_operational_state_change,
 247    wlan_notification_acm_end
 248} WLAN_NOTIFICATION_ACM, *PWLAN_NOTIFICATION_ACM;
 249
 250typedef enum _WLAN_NOTIFICATION_MSM {
 251  wlan_notification_msm_start = L2_NOTIFICATION_CODE_PUBLIC_BEGIN,
 252  wlan_notification_msm_associating,
 253  wlan_notification_msm_associated,
 254  wlan_notification_msm_authenticating,
 255  wlan_notification_msm_connected,
 256  wlan_notification_msm_roaming_start,
 257  wlan_notification_msm_roaming_end,
 258  wlan_notification_msm_radio_state_change,
 259  wlan_notification_msm_signal_quality_change,
 260  wlan_notification_msm_disassociating,
 261  wlan_notification_msm_disconnected,
 262  wlan_notification_msm_peer_join,
 263  wlan_notification_msm_peer_leave,
 264  wlan_notification_msm_adapter_removal,
 265  wlan_notification_msm_adapter_operation_mode_change,
 266  wlan_notification_msm_link_degraded,
 267  wlan_notification_msm_link_improved,
 268  wlan_notification_msm_end
 269} WLAN_NOTIFICATION_MSM, *PWLAN_NOTIFICATION_MSM;
 270
 271typedef enum _WLAN_NOTIFICATION_SECURITY {
 272  wlan_notification_security_start = L2_NOTIFICATION_CODE_PUBLIC_BEGIN,
 273  wlan_notification_security_end
 274} WLAN_NOTIFICATION_SECURITY, *PWLAN_NOTIFICATION_SECURITY;
 275
 276typedef enum _WLAN_INTERFACE_STATE {
 277  wlan_interface_state_not_ready               = 0,
 278  wlan_interface_state_connected               = 1,
 279  wlan_interface_state_ad_hoc_network_formed   = 2,
 280  wlan_interface_state_disconnecting           = 3,
 281  wlan_interface_state_disconnected            = 4,
 282  wlan_interface_state_associating             = 5,
 283  wlan_interface_state_discovering             = 6,
 284  wlan_interface_state_authenticating          = 7 
 285} WLAN_INTERFACE_STATE, *PWLAN_INTERFACE_STATE;
 286
 287typedef enum _WLAN_CONNECTION_MODE {
 288  wlan_connection_mode_profile,
 289  wlan_connection_mode_temporary_profile,
 290  wlan_connection_mode_discovery_secure,
 291  wlan_connection_mode_discovery_unsecure,
 292  wlan_connection_mode_auto,
 293  wlan_connection_mode_invalid 
 294} WLAN_CONNECTION_MODE, *PWLAN_CONNECTION_MODE;
 295
 296typedef enum _WLAN_INTERFACE_TYPE {
 297  wlan_interface_type_emulated_802_11   = 0,
 298  wlan_interface_type_native_802_11,
 299  wlan_interface_type_invalid 
 300} WLAN_INTERFACE_TYPE, *PWLAN_INTERFACE_TYPE;
 301
 302typedef enum _WLAN_INTF_OPCODE {
 303  wlan_intf_opcode_autoconf_start                               = 0x000000000,
 304  wlan_intf_opcode_autoconf_enabled,
 305  wlan_intf_opcode_background_scan_enabled,
 306  wlan_intf_opcode_media_streaming_mode,
 307  wlan_intf_opcode_radio_state,
 308  wlan_intf_opcode_bss_type,
 309  wlan_intf_opcode_interface_state,
 310  wlan_intf_opcode_current_connection,
 311  wlan_intf_opcode_channel_number,
 312  wlan_intf_opcode_supported_infrastructure_auth_cipher_pairs,
 313  wlan_intf_opcode_supported_adhoc_auth_cipher_pairs,
 314  wlan_intf_opcode_supported_country_or_region_string_list,
 315  wlan_intf_opcode_current_operation_mode,
 316  wlan_intf_opcode_supported_safe_mode,
 317  wlan_intf_opcode_certified_safe_mode,
 318  wlan_intf_opcode_hosted_network_capable,
 319  wlan_intf_opcode_management_frame_protection_capable,
 320  wlan_intf_opcode_secondary_sta_interfaces,
 321  wlan_intf_opcode_secondary_sta_synchronized_connections,
 322  wlan_intf_opcode_autoconf_end                                 = 0x0fffffff,
 323  wlan_intf_opcode_msm_start                                    = 0x10000100,
 324  wlan_intf_opcode_statistics,
 325  wlan_intf_opcode_rssi,
 326  wlan_intf_opcode_msm_end                                      = 0x1fffffff,
 327  wlan_intf_opcode_security_start                               = 0x20010000,
 328  wlan_intf_opcode_security_end                                 = 0x2fffffff,
 329  wlan_intf_opcode_ihv_start                                    = 0x30000000,
 330  wlan_intf_opcode_ihv_end                                      = 0x3fffffff 
 331} WLAN_INTF_OPCODE, *PWLAN_INTF_OPCODE;
 332
 333typedef enum _WLAN_OPCODE_VALUE_TYPE {
 334  wlan_opcode_value_type_query_only            = 0,
 335  wlan_opcode_value_type_set_by_group_policy   = 1,
 336  wlan_opcode_value_type_set_by_user           = 2,
 337  wlan_opcode_value_type_invalid               = 3 
 338} WLAN_OPCODE_VALUE_TYPE, *PWLAN_OPCODE_VALUE_TYPE;
 339
 340typedef enum _WLAN_POWER_SETTING {
 341  wlan_power_setting_no_saving,
 342  wlan_power_setting_low_saving,
 343  wlan_power_setting_medium_saving,
 344  wlan_power_setting_maximum_saving,
 345  wlan_power_setting_invalid 
 346} WLAN_POWER_SETTING, *PWLAN_POWER_SETTING;
 347
 348typedef struct _WLAN_ASSOCIATION_ATTRIBUTES {
 349  DOT11_SSID          dot11Ssid;
 350  DOT11_BSS_TYPE      dot11BssType;
 351  DOT11_MAC_ADDRESS   dot11Bssid;
 352  DOT11_PHY_TYPE      dot11PhyType;
 353  ULONG               uDot11PhyIndex;
 354  WLAN_SIGNAL_QUALITY wlanSignalQuality;
 355  ULONG               ulRxRate;
 356  ULONG               ulTxRate;
 357} WLAN_ASSOCIATION_ATTRIBUTES, *PWLAN_ASSOCIATION_ATTRIBUTES;
 358
 359typedef struct _WLAN_AUTH_CIPHER_PAIR_LIST {
 360  DWORD                  dwNumberOfItems;
 361  DOT11_AUTH_CIPHER_PAIR pAuthCipherPairList[1];
 362} WLAN_AUTH_CIPHER_PAIR_LIST, *PWLAN_AUTH_CIPHER_PAIR_LIST;
 363
 364typedef struct _WLAN_NOTIFICATION_DATA {
 365  DWORD NotificationSource;
 366  DWORD NotificationCode;
 367  GUID  InterfaceGuid;
 368  DWORD dwDataSize;
 369  PVOID pData;
 370} WLAN_NOTIFICATION_DATA, *PWLAN_NOTIFICATION_DATA;
 371
 372#define WLAN_MAX_PHY_TYPE_NUMBER 8
 373
 374typedef struct _WLAN_AVAILABLE_NETWORK {
 375  WCHAR                  strProfileName[WLAN_MAX_NAME_LENGTH];
 376  DOT11_SSID             dot11Ssid;
 377  DOT11_BSS_TYPE         dot11BssType;
 378  ULONG                  uNumberOfBssids;
 379  WINBOOL                bNetworkConnectable;
 380  WLAN_REASON_CODE       wlanNotConnectableReason;
 381  ULONG                  uNumberOfPhyTypes;
 382  DOT11_PHY_TYPE         dot11PhyTypes[WLAN_MAX_PHY_TYPE_NUMBER];
 383  WINBOOL                bMorePhyTypes;
 384  WLAN_SIGNAL_QUALITY    wlanSignalQuality;
 385  WINBOOL                bSecurityEnabled;
 386  DOT11_AUTH_ALGORITHM   dot11DefaultAuthAlgorithm;
 387  DOT11_CIPHER_ALGORITHM dot11DefaultCipherAlgorithm;
 388  DWORD                  dwFlags;
 389  DWORD                  dwReserved;
 390} WLAN_AVAILABLE_NETWORK, *PWLAN_AVAILABLE_NETWORK;
 391
 392typedef struct _WLAN_AVAILABLE_NETWORK_V2 {
 393  WCHAR strProfileName[WLAN_MAX_NAME_LENGTH];
 394  DOT11_SSID dot11Ssid;
 395  DOT11_BSS_TYPE dot11BssType;
 396  ULONG uNumberOfBssids;
 397  WINBOOL bNetworkConnectable;
 398  WLAN_REASON_CODE wlanNotConnectableReason;
 399  ULONG uNumberOfPhyTypes;
 400  DOT11_PHY_TYPE dot11PhyTypes[WLAN_MAX_PHY_TYPE_NUMBER];
 401  WINBOOL bMorePhyTypes;
 402  WLAN_SIGNAL_QUALITY wlanSignalQuality;
 403  WINBOOL bSecurityEnabled;
 404  DOT11_AUTH_ALGORITHM dot11DefaultAuthAlgorithm;
 405  DOT11_CIPHER_ALGORITHM dot11DefaultCipherAlgorithm;
 406  DWORD dwFlags;
 407  DOT11_ACCESSNETWORKOPTIONS AccessNetworkOptions;
 408  DOT11_HESSID dot11HESSID;
 409  DOT11_VENUEINFO VenueInfo;
 410  DWORD dwReserved;
 411} WLAN_AVAILABLE_NETWORK_V2, *PWLAN_AVAILABLE_NETWORK_V2;
 412
 413typedef struct _WLAN_AVAILABLE_NETWORK_LIST {
 414  DWORD                  dwNumberOfItems;
 415  DWORD                  dwIndex;
 416  WLAN_AVAILABLE_NETWORK Network[1];
 417} WLAN_AVAILABLE_NETWORK_LIST, *PWLAN_AVAILABLE_NETWORK_LIST;
 418
 419typedef struct _WLAN_AVAILABLE_NETWORK_LIST_V2 {
 420  DWORD dwNumberOfItems;
 421  DWORD dwIndex;
 422  WLAN_AVAILABLE_NETWORK_V2 Network[1];
 423} WLAN_AVAILABLE_NETWORK_LIST_V2, *PWLAN_AVAILABLE_NETWORK_LIST_V2;
 424
 425typedef struct _WLAN_SECURITY_ATTRIBUTES {
 426  WINBOOL                bSecurityEnabled;
 427  WINBOOL                bOneXEnabled;
 428  DOT11_AUTH_ALGORITHM   dot11AuthAlgorithm;
 429  DOT11_CIPHER_ALGORITHM dot11CipherAlgorithm;
 430} WLAN_SECURITY_ATTRIBUTES, *PWLAN_SECURITY_ATTRIBUTES;
 431
 432typedef struct _WLAN_CONNECTION_ATTRIBUTES {
 433  WLAN_INTERFACE_STATE        isState;
 434  WLAN_CONNECTION_MODE        wlanConnectionMode;
 435  WCHAR                       strProfileName[WLAN_MAX_NAME_LENGTH];
 436  WLAN_ASSOCIATION_ATTRIBUTES wlanAssociationAttributes;
 437  WLAN_SECURITY_ATTRIBUTES    wlanSecurityAttributes;
 438} WLAN_CONNECTION_ATTRIBUTES, *PWLAN_CONNECTION_ATTRIBUTES;
 439
 440/* Assuming stdcall */
 441typedef VOID (CALLBACK *WLAN_NOTIFICATION_CALLBACK)(
 442  PWLAN_NOTIFICATION_DATA ,
 443  PVOID 
 444);
 445
 446#define WLAN_CONNECTION_NOTIFICATION_ADHOC_NETWORK_FORMED 0x00000001
 447#define WLAN_CONNECTION_NOTIFICATION_CONSOLE_USER_PROFILE 0x00000004
 448
 449typedef struct _WLAN_CONNECTION_NOTIFICATION_DATA {
 450  WLAN_CONNECTION_MODE wlanConnectionMode;
 451  WCHAR                strProfileName[WLAN_MAX_NAME_LENGTH];
 452  DOT11_SSID           dot11Ssid;
 453  DOT11_BSS_TYPE       dot11BssType;
 454  WINBOOL              bSecurityEnabled;
 455  WLAN_REASON_CODE     wlanReasonCode;
 456  DWORD                dwFlags;
 457  WCHAR                strProfileXml[1];
 458} WLAN_CONNECTION_NOTIFICATION_DATA, *PWLAN_CONNECTION_NOTIFICATION_DATA;
 459
 460typedef struct _WLAN_DEVICE_SERVICE_NOTIFICATION_DATA {
 461  GUID DeviceService;
 462  DWORD dwOpCode;
 463  DWORD dwDataSize;
 464  BYTE DataBlob[1];
 465} WLAN_DEVICE_SERVICE_NOTIFICATION_DATA, *PWLAN_DEVICE_SERVICE_NOTIFICATION_DATA;
 466
 467#define WLAN_CONNECTION_HIDDEN_NETWORK 0x00000001
 468#define WLAN_CONNECTION_ADHOC_JOIN_ONLY 0x00000002
 469#define WLAN_CONNECTION_IGNORE_PRIVACY_BIT 0x00000004
 470#define WLAN_CONNECTION_EAPOL_PASSTHROUGH 0x00000008
 471#define WLAN_CONNECTION_PERSIST_DISCOVERY_PROFILE 0x00000010
 472#define WLAN_CONNECTION_PERSIST_DISCOVERY_PROFILE_CONNECTION_MODE_AUTO 0x00000020
 473#define WLAN_CONNECTION_PERSIST_DISCOVERY_PROFILE_OVERWRITE_EXISTING 0x00000040
 474
 475typedef struct _WLAN_CONNECTION_PARAMETERS {
 476  WLAN_CONNECTION_MODE wlanConnectionMode;
 477  LPCWSTR              strProfile;
 478  PDOT11_SSID          pDot11Ssid;
 479  PDOT11_BSSID_LIST    pDesiredBssidList;
 480  DOT11_BSS_TYPE       dot11BssType;
 481  DWORD                dwFlags;
 482} WLAN_CONNECTION_PARAMETERS, *PWLAN_CONNECTION_PARAMETERS;
 483
 484typedef struct _WLAN_CONNECTION_PARAMETERS_V2 {
 485  WLAN_CONNECTION_MODE wlanConnectionMode;
 486  LPCWSTR strProfile;
 487  PDOT11_SSID pDot11Ssid;
 488  PDOT11_HESSID pDot11Hessid;
 489  PDOT11_BSSID_LIST pDesiredBssidList;
 490  DOT11_BSS_TYPE dot11BssType;
 491  DWORD dwFlags;
 492  PDOT11_ACCESSNETWORKOPTIONS pDot11AccessNetworkOptions;
 493} WLAN_CONNECTION_PARAMETERS_V2, *PWLAN_CONNECTION_PARAMETERS_V2;
 494
 495typedef struct _WLAN_INTERFACE_INFO {
 496  GUID                 InterfaceGuid;
 497  WCHAR                strInterfaceDescription[WLAN_MAX_NAME_LENGTH];
 498  WLAN_INTERFACE_STATE isState;
 499} WLAN_INTERFACE_INFO, *PWLAN_INTERFACE_INFO;
 500
 501typedef struct _WLAN_INTERFACE_INFO_LIST {
 502  DWORD               dwNumberOfItems;
 503  DWORD               dwIndex;
 504  WLAN_INTERFACE_INFO InterfaceInfo[];
 505} WLAN_INTERFACE_INFO_LIST, *PWLAN_INTERFACE_INFO_LIST;
 506
 507typedef struct _WLAN_PROFILE_INFO {
 508  WCHAR strProfileName[WLAN_MAX_NAME_LENGTH];
 509  DWORD dwFlags;
 510} WLAN_PROFILE_INFO, *PWLAN_PROFILE_INFO;
 511
 512typedef struct _WLAN_PROFILE_INFO_LIST {
 513  DWORD             dwNumberOfItems;
 514  DWORD             dwIndex;
 515  WLAN_PROFILE_INFO ProfileInfo[1];
 516} WLAN_PROFILE_INFO_LIST, *PWLAN_PROFILE_INFO_LIST;
 517
 518#define WFD_API_VERSION_1_0 0x00000001
 519
 520#if _WIN32_WINNT >= _WIN32_WINNT_WIN8
 521#define WFD_API_SUPPORTED
 522#define WFD_API_VERSION WFD_API_VERSION_1_0
 523#endif
 524
 525#ifdef WFD_API_SUPPORTED
 526  typedef enum _WFD_ROLE_TYPE {
 527    WFD_ROLE_TYPE_NONE = 0x00,
 528    WFD_ROLE_TYPE_DEVICE = 0x01,
 529    WFD_ROLE_TYPE_GROUP_OWNER = 0x02,
 530    WFD_ROLE_TYPE_CLIENT = 0x04,
 531    WFD_ROLE_TYPE_MAX = 0x05
 532  } WFD_ROLE_TYPE, *PWFD_ROLE_TYPE;
 533#endif
 534
 535  typedef struct _WFD_GROUP_ID {
 536    DOT11_MAC_ADDRESS DeviceAddress;
 537    DOT11_SSID GroupSSID;
 538  } WFD_GROUP_ID, *PWFD_GROUP_ID;
 539
 540PVOID WINAPI WlanAllocateMemory(
 541  DWORD dwMemorySize
 542);
 543
 544DWORD WINAPI WlanCloseHandle(
 545  HANDLE hClientHandle,
 546  PVOID pReserved
 547);
 548
 549DWORD WINAPI WlanConnect(
 550  HANDLE hClientHandle,
 551  const GUID *pInterfaceGuid,
 552  const PWLAN_CONNECTION_PARAMETERS pConnectionParameters,
 553  PVOID pReserved
 554);
 555
 556DWORD WINAPI WlanConnect2(
 557  HANDLE hClientHandle,
 558  const GUID *pInterfaceGuid,
 559  const PWLAN_CONNECTION_PARAMETERS_V2 pConnectionParameters,
 560  PVOID pReserved
 561);
 562
 563DWORD WINAPI WlanDeleteProfile(
 564  HANDLE hClientHandle,
 565  const GUID *pInterfaceGuid,
 566  LPCWSTR strProfileName,
 567  PVOID pReserved
 568);
 569
 570DWORD WINAPI WlanDeviceServiceCommand(
 571  HANDLE hClientHandle,
 572  const GUID *pInterfaceGuid,
 573  LPGUID pDeviceServiceGuid,
 574  DWORD dwOpCode,
 575  DWORD dwInBufferSize,
 576  PVOID pInBuffer,
 577  DWORD dwOutBufferSize,
 578  PVOID pOutBuffer,
 579  PDWORD pdwBytesReturned
 580);
 581
 582DWORD WINAPI WlanDisconnect(
 583  HANDLE hClientHandle,
 584  const GUID *pInterfaceGuid,
 585  PVOID pReserved
 586);
 587
 588DWORD WINAPI WlanEnumInterfaces(
 589  HANDLE hClientHandle,
 590  PVOID pReserved,
 591  PWLAN_INTERFACE_INFO_LIST *ppInterfaceList
 592);
 593
 594VOID WINAPI WlanFreeMemory(
 595  PVOID pMemory
 596);
 597
 598DWORD WINAPI WlanGetAvailableNetworkList(
 599  HANDLE hClientHandle,
 600  const GUID *pInterfaceGuid,
 601  DWORD dwFlags,
 602  PVOID pReserved,
 603  PWLAN_AVAILABLE_NETWORK_LIST *ppAvailableNetworkList
 604);
 605
 606DWORD WINAPI WlanGetAvailableNetworkList2(
 607  HANDLE hClientHandle,
 608  const GUID *pInterfaceGuid,
 609  DWORD dwFlags,
 610  PVOID pReserved,
 611  PWLAN_AVAILABLE_NETWORK_LIST_V2 *ppAvailableNetworkList
 612);
 613
 614DWORD WINAPI WlanGetProfile(
 615  HANDLE hClientHandle,
 616  const GUID *pInterfaceGuid,
 617  LPCWSTR strProfileName,
 618  PVOID pReserved,
 619  LPWSTR *pstrProfileXml,
 620  DWORD *pdwFlags,
 621  PDWORD pdwGrantedAccess
 622);
 623
 624DWORD WINAPI WlanGetProfileList(
 625  HANDLE hClientHandle,
 626  const GUID *pInterfaceGuid,
 627  PVOID pReserved,
 628  PWLAN_PROFILE_INFO_LIST *ppProfileList
 629);
 630
 631DWORD WINAPI WlanOpenHandle(
 632  DWORD dwClientVersion,
 633  PVOID pReserved,
 634  PDWORD pdwNegotiatedVersion,
 635  PHANDLE phClientHandle
 636);
 637
 638DWORD WINAPI WlanQueryInterface(
 639  HANDLE hClientHandle,
 640  const GUID *pInterfaceGuid,
 641  WLAN_INTF_OPCODE OpCode,
 642  PVOID pReserved,
 643  PDWORD pdwDataSize,
 644  PVOID *ppData,
 645  PWLAN_OPCODE_VALUE_TYPE pWlanOpcodeValueType
 646);
 647
 648DWORD WINAPI WlanReasonCodeToString(
 649  DWORD dwReasonCode,
 650  DWORD dwBufferSize,
 651  PWCHAR pStringBuffer,
 652  PVOID pReserved
 653);
 654
 655DWORD WINAPI WlanRegisterNotification(
 656  HANDLE hClientHandle,
 657  DWORD dwNotifSource,
 658  WINBOOL bIgnoreDuplicate,
 659  WLAN_NOTIFICATION_CALLBACK  funcCallback,
 660  PVOID pCallbackContext,
 661  PVOID pReserved,
 662  PDWORD pdwPrevNotifSource
 663);
 664
 665DWORD WINAPI WlanSetInterface(
 666  HANDLE hClientHandle,
 667  const GUID *pInterfaceGuid,
 668  WLAN_INTF_OPCODE OpCode,
 669  DWORD dwDataSize,
 670  const PVOID pData,
 671  PVOID pReserved
 672);
 673
 674DWORD WINAPI WlanSetProfile(
 675  HANDLE hClientHandle,
 676  const GUID *pInterfaceGuid,
 677  DWORD dwFlags,
 678  LPCWSTR strProfileXml,
 679  LPCWSTR strAllUserProfileSecurity,
 680  WINBOOL bOverwrite,
 681  PVOID pReserved,
 682  DWORD *pdwReasonCode
 683);
 684
 685DWORD WINAPI WlanSetProfileEapXmlUserData(
 686  HANDLE hClientHandle,
 687  const GUID *pInterfaceGuid,
 688  LPCWSTR strProfileName,
 689  DWORD dwFlags,
 690  LPCWSTR strEapXmlUserData,
 691  PVOID pReserved
 692);
 693
 694DWORD WINAPI WlanSetProfileList(
 695  HANDLE hClientHandle,
 696  const GUID *pInterfaceGuid,
 697  DWORD dwItems,
 698  LPCWSTR *strProfileNames,
 699  PVOID pReserved
 700);
 701
 702DWORD WINAPI WlanSetProfilePosition(
 703  HANDLE hClientHandle,
 704  const GUID *pInterfaceGuid,
 705  LPCWSTR strProfileName,
 706  DWORD dwPosition,
 707  PVOID pReserved
 708);
 709
 710typedef enum _WLAN_AUTOCONF_OPCODE {
 711  wlan_autoconf_opcode_start                                       = 0,
 712  wlan_autoconf_opcode_show_denied_networks                        = 1,
 713  wlan_autoconf_opcode_power_setting                               = 2,
 714  wlan_autoconf_opcode_only_use_gp_profiles_for_allowed_networks   = 3,
 715  wlan_autoconf_opcode_allow_explicit_creds                        = 4,
 716  wlan_autoconf_opcode_block_period                                = 5,
 717  wlan_autoconf_opcode_allow_virtual_station_extensibility         = 6,
 718  wlan_autoconf_opcode_end                                         = 7 
 719} WLAN_AUTOCONF_OPCODE, *PWLAN_AUTOCONF_OPCODE;
 720
 721typedef enum _WL_DISPLAY_PAGES {
 722  WLConnectionPage,
 723  WLSecurityPage 
 724} WL_DISPLAY_PAGES, *PWL_DISPLAY_PAGES;
 725
 726typedef enum _WLAN_ADHOC_NETWORK_STATE {
 727  wlan_adhoc_network_state_formed      = 0,
 728  wlan_adhoc_network_state_connected   = 1 
 729} WLAN_ADHOC_NETWORK_STATE, *PWLAN_ADHOC_NETWORK_STATE;
 730
 731typedef enum _WLAN_IHV_CONTROL_TYPE {
 732  wlan_ihv_control_type_service,
 733  wlan_ihv_control_type_driver 
 734} WLAN_IHV_CONTROL_TYPE, *PWLAN_IHV_CONTROL_TYPE;
 735
 736typedef enum _WLAN_FILTER_LIST_TYPE {
 737  wlan_filter_list_type_gp_permit,
 738  wlan_filter_list_type_gp_deny,
 739  wlan_filter_list_type_user_permit,
 740  wlan_filter_list_type_user_deny 
 741} WLAN_FILTER_LIST_TYPE, *PWLAN_FILTER_LIST_TYPE;
 742
 743typedef enum _WLAN_SECURABLE_OBJECT {
 744  wlan_secure_permit_list                      = 0,
 745  wlan_secure_deny_list                        = 1,
 746  wlan_secure_ac_enabled                       = 2,
 747  wlan_secure_bc_scan_enabled                  = 3,
 748  wlan_secure_bss_type                         = 4,
 749  wlan_secure_show_denied                      = 5,
 750  wlan_secure_interface_properties             = 6,
 751  wlan_secure_ihv_control                      = 7,
 752  wlan_secure_all_user_profiles_order          = 8,
 753  wlan_secure_add_new_all_user_profiles        = 9,
 754  wlan_secure_add_new_per_user_profiles        = 10,
 755  wlan_secure_media_streaming_mode_enabled     = 11,
 756  wlan_secure_current_operation_mode           = 12,
 757  wlan_secure_get_plaintext_key                = 13,
 758  wlan_secure_hosted_network_elevated_access   = 14,
 759  wlan_secure_virtual_station_extensibility    = 15,
 760  wlan_secure_wfd_elevated_access              = 16,
 761  WLAN_SECURABLE_OBJECT_COUNT                  = 17
 762} WLAN_SECURABLE_OBJECT, *PWLAN_SECURABLE_OBJECT;
 763
 764typedef struct _WLAN_DEVICE_SERVICE_GUID_LIST {
 765  DWORD dwNumberOfItems;
 766  DWORD dwIndex;
 767  GUID DeviceService[1];
 768} WLAN_DEVICE_SERVICE_GUID_LIST, *PWLAN_DEVICE_SERVICE_GUID_LIST;
 769
 770typedef struct _DOT11_NETWORK_LIST {
 771  DWORD         dwNumberOfItems;
 772  DWORD         dwIndex;
 773  DOT11_NETWORK Network[1];
 774} DOT11_NETWORK_LIST, *PDOT11_NETWORK_LIST;
 775
 776#define DOT11_RATE_SET_MAX_LENGTH 126
 777
 778typedef struct _WLAN_RATE_SET {
 779  ULONG  uRateSetLength;
 780  USHORT usRateSet[DOT11_RATE_SET_MAX_LENGTH];
 781} WLAN_RATE_SET, *PWLAN_RATE_SET;
 782
 783typedef struct _WLAN_BSS_ENTRY {
 784  DOT11_SSID        dot11Ssid;
 785  ULONG             uPhyId;
 786  DOT11_MAC_ADDRESS dot11Bssid;
 787  DOT11_BSS_TYPE    dot11BssType;
 788  DOT11_PHY_TYPE    dot11BssPhyType;
 789  LONG              lRssi;
 790  ULONG             uLinkQuality;
 791  BOOLEAN           bInRegDomain;
 792  USHORT            usBeaconPeriod;
 793  ULONGLONG         ullTimestamp;
 794  ULONGLONG         ullHostTimestamp;
 795  USHORT            usCapabilityInformation;
 796  ULONG             ulChCenterFrequency;
 797  WLAN_RATE_SET     wlanRateSet;
 798  ULONG             ulIeOffset;
 799  ULONG             ulIeSize;
 800} WLAN_BSS_ENTRY, *PWLAN_BSS_ENTRY;
 801
 802typedef struct _WLAN_BSS_LIST {
 803  DWORD          dwTotalSize;
 804  DWORD          dwNumberOfItems;
 805  WLAN_BSS_ENTRY wlanBssEntries[1];
 806} WLAN_BSS_LIST, *PWLAN_BSS_LIST;
 807
 808typedef struct _WLAN_COUNTRY_OR_REGION_STRING_LIST {
 809  DWORD                          dwNumberOfItems;
 810  DOT11_COUNTRY_OR_REGION_STRING pCountryOrRegionStringList[1];
 811} WLAN_COUNTRY_OR_REGION_STRING_LIST, *PWLAN_COUNTRY_OR_REGION_STRING_LIST;
 812
 813#define WLAN_MAX_PHY_INDEX 64
 814
 815typedef struct _WLAN_INTERFACE_CAPABILITY {
 816  WLAN_INTERFACE_TYPE interfaceType;
 817  WINBOOL             bDot11DSupported;
 818  DWORD               dwMaxDesiredSsidListSize;
 819  DWORD               dwMaxDesiredBssidListSize;
 820  DWORD               dwNumberOfSupportedPhys;
 821  DOT11_PHY_TYPE      dot11PhyTypes[WLAN_MAX_PHY_INDEX];
 822} WLAN_INTERFACE_CAPABILITY, *PWLAN_INTERFACE_CAPABILITY;
 823
 824typedef struct _WLAN_MAC_FRAME_STATISTICS {
 825  ULONGLONG ullTransmittedFrameCount;
 826  ULONGLONG ullReceivedFrameCount;
 827  ULONGLONG ullWEPExcludedCount;
 828  ULONGLONG ullTKIPLocalMICFailures;
 829  ULONGLONG ullTKIPReplays;
 830  ULONGLONG ullTKIPICVErrorCount;
 831  ULONGLONG ullCCMPReplays;
 832  ULONGLONG ullCCMPDecryptErrors;
 833  ULONGLONG ullWEPUndecryptableCount;
 834  ULONGLONG ullWEPICVErrorCount;
 835  ULONGLONG ullDecryptSuccessCount;
 836  ULONGLONG ullDecryptFailureCount;
 837} WLAN_MAC_FRAME_STATISTICS, *PWLAN_MAC_FRAME_STATISTICS;
 838
 839typedef struct _WLAN_MSM_NOTIFICATION_DATA {
 840  WLAN_CONNECTION_MODE wlanConnectionMode;
 841  WCHAR                strProfileName[WLAN_MAX_NAME_LENGTH];
 842  DOT11_SSID           dot11Ssid;
 843  DOT11_BSS_TYPE       dot11BssType;
 844  DOT11_MAC_ADDRESS    dot11MacAddr;
 845  WINBOOL              bSecurityEnabled;
 846  WINBOOL              bFirstPeer;
 847  WINBOOL              bLastPeer;
 848  WLAN_REASON_CODE     wlanReasonCode;
 849} WLAN_MSM_NOTIFICATION_DATA, *PWLAN_MSM_NOTIFICATION_DATA;
 850
 851typedef struct _WLAN_PHY_FRAME_STATISTICS {
 852  ULONGLONG ullTransmittedFrameCount;
 853  ULONGLONG ullMulticastTransmittedFrameCount;
 854  ULONGLONG ullFailedCount;
 855  ULONGLONG ullRetryCount;
 856  ULONGLONG ullMultipleRetryCount;
 857  ULONGLONG ullMaxTXLifetimeExceededCount;
 858  ULONGLONG ullTransmittedFragmentCount;
 859  ULONGLONG ullRTSSuccessCount;
 860  ULONGLONG ullRTSFailureCount;
 861  ULONGLONG ullACKFailureCount;
 862  ULONGLONG ullReceivedFrameCount;
 863  ULONGLONG ullMulticastReceivedFrameCount;
 864  ULONGLONG ullPromiscuousReceivedFrameCount;
 865  ULONGLONG ullMaxRXLifetimeExceededCount;
 866  ULONGLONG ullFrameDuplicateCount;
 867  ULONGLONG ullReceivedFragmentCount;
 868  ULONGLONG ullPromiscuousReceivedFragmentCount;
 869  ULONGLONG ullFCSErrorCount;
 870} WLAN_PHY_FRAME_STATISTICS, *PWLAN_PHY_FRAME_STATISTICS;
 871
 872typedef struct _WLAN_PHY_RADIO_STATE {
 873  DWORD             dwPhyIndex;
 874  DOT11_RADIO_STATE dot11SoftwareRadioState;
 875  DOT11_RADIO_STATE dot11HardwareRadioState;
 876} WLAN_PHY_RADIO_STATE, *PWLAN_PHY_RADIO_STATE;
 877
 878typedef struct _WLAN_RADIO_STATE {
 879  DWORD                dwNumberOfPhys;
 880  WLAN_PHY_RADIO_STATE PhyRadioState[WLAN_MAX_PHY_INDEX];
 881} WLAN_RADIO_STATE, *PWLAN_RADIO_STATE;
 882
 883typedef enum _WLAN_OPERATIONAL_STATE {
 884  wlan_operational_state_unknown = 0,
 885  wlan_operational_state_off,
 886  wlan_operational_state_on,
 887  wlan_operational_state_going_off,
 888  wlan_operational_state_going_on
 889} WLAN_OPERATIONAL_STATE, *PWLAN_OPERATIONAL_STATE;
 890
 891#define DOT11_PSD_IE_MAX_DATA_SIZE 240
 892#define DOT11_PSD_IE_MAX_ENTRY_NUMBER 5
 893
 894typedef struct _WLAN_RAW_DATA {
 895  DWORD dwDataSize;
 896  BYTE  DataBlob[1];
 897} WLAN_RAW_DATA, *PWLAN_RAW_DATA;
 898
 899typedef struct _WLAN_RAW_DATA_LIST {
 900  DWORD dwTotalSize;
 901  DWORD dwNumberOfItems;
 902  struct {
 903    DWORD dwDataOffset;
 904    DWORD dwDataSize;
 905  } DataList[1];
 906} WLAN_RAW_DATA_LIST, *PWLAN_RAW_DATA_LIST;
 907
 908typedef struct _WLAN_STATISTICS {
 909  ULONGLONG                 ullFourWayHandshakeFailures;
 910  ULONGLONG                 ullTKIPCounterMeasuresInvoked;
 911  ULONGLONG                 ullReserved;
 912  WLAN_MAC_FRAME_STATISTICS MacUcastCounters;
 913  WLAN_MAC_FRAME_STATISTICS MacMcastCounters;
 914  DWORD                     dwNumberOfPhys;
 915  WLAN_PHY_FRAME_STATISTICS PhyCounters[1];
 916} WLAN_STATISTICS, *PWLAN_STATISTICS;
 917
 918DWORD WINAPI WlanExtractPsdIEDataList(
 919  HANDLE hClientHandle,
 920  DWORD dwIeDataSize,
 921  const PBYTE pRawIeData,
 922  LPCWSTR strFormat,
 923  PVOID pReserved,
 924  PWLAN_RAW_DATA_LIST *ppPsdIEDataList
 925);
 926
 927DWORD WINAPI WlanGetFilterList(
 928  HANDLE hClientHandle,
 929  WLAN_FILTER_LIST_TYPE wlanFilterListType,
 930  PVOID pReserved,
 931  PDOT11_NETWORK_LIST *ppNetworkList
 932);
 933
 934DWORD WINAPI WlanGetInterfaceCapability(
 935  HANDLE hClientHandle,
 936  const GUID *pInterfaceGuid,
 937  PVOID pReserved,
 938  PWLAN_INTERFACE_CAPABILITY *ppCapability
 939);
 940
 941DWORD WINAPI WlanGetNetworkBssList(
 942  HANDLE hClientHandle,
 943  const GUID *pInterfaceGuid,
 944  const  PDOT11_SSID pDot11Ssid,
 945  DOT11_BSS_TYPE dot11BssType,
 946  WINBOOL bSecurityEnabled,
 947  PVOID pReserved,
 948  PWLAN_BSS_LIST *ppWlanBssList
 949);
 950
 951DWORD WINAPI WlanGetProfileCustomUserData(
 952  HANDLE hClientHandle,
 953  const GUID *pInterfaceGuid,
 954  LPCWSTR strProfileName,
 955  PVOID pReserved,
 956  DWORD *pdwDataSize,
 957  PBYTE *ppData
 958);
 959
 960DWORD WINAPI WlanGetSecuritySettings(
 961  HANDLE hClientHandle,
 962  WLAN_SECURABLE_OBJECT SecurableObject,
 963  PWLAN_OPCODE_VALUE_TYPE pValueType,
 964  LPWSTR *pstrCurrentSDDL,
 965  PDWORD pdwGrantedAccess
 966);
 967
 968DWORD WINAPI WlanGetSupportedDeviceServices(
 969  HANDLE hClientHandle,
 970  const GUID *pInterfaceGuid,
 971  PWLAN_DEVICE_SERVICE_GUID_LIST *ppDevSvcGuidList
 972);
 973
 974DWORD WINAPI WlanIhvControl(
 975  HANDLE hClientHandle,
 976  const GUID *pInterfaceGuid,
 977  WLAN_IHV_CONTROL_TYPE Type,
 978  DWORD dwInBufferSize,
 979  PVOID pInBuffer,
 980  DWORD dwOutBufferSize,
 981  PVOID pOutBuffer,
 982  PDWORD pdwBytesReturned
 983);
 984
 985DWORD WINAPI WlanQueryAutoConfigParameter(
 986  HANDLE hClientHandle,
 987  WLAN_AUTOCONF_OPCODE OpCode,
 988  PVOID pReserved,
 989  PDWORD pdwDataSize,
 990  PVOID *ppData,
 991  PWLAN_OPCODE_VALUE_TYPE pWlanOpcodeValueType
 992);
 993
 994DWORD WINAPI WlanRegisterDeviceServiceNotification(
 995  HANDLE hClientHandle,
 996  const PWLAN_DEVICE_SERVICE_GUID_LIST pDevSvcGuidList
 997);
 998
 999DWORD WINAPI WlanRenameProfile(
1000  HANDLE hClientHandle,
1001  const GUID *pInterfaceGuid,
1002  LPCWSTR strOldProfileName,
1003  LPCWSTR strNewProfileName,
1004  PVOID pReserved
1005);
1006
1007#define WLAN_PROFILE_GROUP_POLICY 0x00000001
1008#define WLAN_PROFILE_USER 0x00000002
1009#define WLAN_PROFILE_GET_PLAINTEXT_KEY 0x00000004
1010#define WLAN_PROFILE_CONNECTION_MODE_SET_BY_CLIENT 0x00010000
1011#define WLAN_PROFILE_CONNECTION_MODE_AUTO 0x00020000
1012
1013DWORD WINAPI WlanSaveTemporaryProfile(
1014  HANDLE hClientHandle,
1015  const GUID *pInterfaceGuid,
1016  LPCWSTR strProfileName,
1017  LPCWSTR strAllUserProfileSecurity,
1018  DWORD dwFlags,
1019  WINBOOL bOverWrite,
1020  PVOID pReserved
1021);
1022
1023DWORD WINAPI WlanScan(
1024  HANDLE hClientHandle,
1025  const GUID *pInterfaceGuid,
1026  const PDOT11_SSID pDot11Ssid,
1027  const PWLAN_RAW_DATA pIeData,
1028  PVOID pReserved
1029);
1030
1031DWORD WINAPI WlanSetAutoConfigParameter(
1032  HANDLE hClientHandle,
1033  WLAN_AUTOCONF_OPCODE OpCode,
1034  DWORD dwDataSize,
1035  const PVOID pData,
1036  PVOID pReserved
1037);
1038
1039DWORD WINAPI WlanSetFilterList(
1040  HANDLE hClientHandle,
1041  WLAN_FILTER_LIST_TYPE wlanFilterListType,
1042  const PDOT11_NETWORK_LIST pNetworkList,
1043  PVOID pReserved
1044);
1045
1046DWORD WINAPI WlanSetProfileCustomUserData(
1047  HANDLE hClientHandle,
1048  const GUID *pInterfaceGuid,
1049  LPCWSTR strProfileName,
1050  DWORD dwDataSize,
1051  const PBYTE pData,
1052  PVOID pReserved
1053);
1054
1055DWORD WlanSetProfileEapUserData(
1056  HANDLE hClientHandle,
1057  const GUID *pInterfaceGuid,
1058  LPCWSTR strProfileName,
1059  EAP_METHOD_TYPE eapType,
1060  DWORD dwFlags,
1061  DWORD dwEapUserDataSize,
1062  const LPBYTE pbEapUserData,
1063  PVOID pReserved
1064);
1065
1066DWORD WINAPI WlanSetPsdIEDataList(
1067  HANDLE hClientHandle,
1068  LPCWSTR strFormat,
1069  const PWLAN_RAW_DATA_LIST pPsdIEDataList,
1070  PVOID pReserved
1071);
1072
1073DWORD WINAPI WlanSetSecuritySettings(
1074  HANDLE hClientHandle,
1075  WLAN_SECURABLE_OBJECT SecurableObject,
1076  LPCWSTR strModifiedSDDL
1077);
1078
1079DWORD WINAPI WlanUIEditProfile(
1080  DWORD dwClientVersion,
1081  LPCWSTR wstrProfileName,
1082  GUID *pInterfaceGuid,
1083  HWND hWnd,
1084  WL_DISPLAY_PAGES wlStartPage,
1085  PVOID pReserved,
1086  PWLAN_REASON_CODE *pWlanReasonCode
1087);
1088
1089#ifdef __cplusplus
1090}
1091#endif
1092
1093#endif /*_INC_WLANAPI*/