zig

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

wlanapi.h (43194B) - Raw


      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
     14 extern "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 
    204 typedef DWORD WLAN_REASON_CODE, *PWLAN_REASON_CODE;
    205 typedef ULONG WLAN_SIGNAL_QUALITY, *PWLAN_SIGNAL_QUALITY;
    206 
    207 typedef struct _DOT11_NETWORK {
    208   DOT11_SSID     dot11Ssid;
    209   DOT11_BSS_TYPE dot11BssType;
    210 } DOT11_NETWORK, *PDOT11_NETWORK;
    211 
    212 typedef 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 
    218 typedef 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 
    250 typedef 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 
    271 typedef 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 
    276 typedef 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 
    287 typedef 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 
    296 typedef 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 
    302 typedef 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 
    333 typedef 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 
    340 typedef 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 
    348 typedef 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 
    359 typedef 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 
    364 typedef 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 
    374 typedef 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 
    392 typedef 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 
    413 typedef 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 
    419 typedef 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 
    425 typedef 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 
    432 typedef 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 */
    441 typedef 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 
    449 typedef 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 
    460 typedef 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 
    475 typedef 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 
    484 typedef 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 
    495 typedef 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 
    501 typedef 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 
    507 typedef struct _WLAN_PROFILE_INFO {
    508   WCHAR strProfileName[WLAN_MAX_NAME_LENGTH];
    509   DWORD dwFlags;
    510 } WLAN_PROFILE_INFO, *PWLAN_PROFILE_INFO;
    511 
    512 typedef 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 
    540 PVOID WINAPI WlanAllocateMemory(
    541   DWORD dwMemorySize
    542 );
    543 
    544 DWORD WINAPI WlanCloseHandle(
    545   HANDLE hClientHandle,
    546   PVOID pReserved
    547 );
    548 
    549 DWORD WINAPI WlanConnect(
    550   HANDLE hClientHandle,
    551   const GUID *pInterfaceGuid,
    552   const PWLAN_CONNECTION_PARAMETERS pConnectionParameters,
    553   PVOID pReserved
    554 );
    555 
    556 DWORD WINAPI WlanConnect2(
    557   HANDLE hClientHandle,
    558   const GUID *pInterfaceGuid,
    559   const PWLAN_CONNECTION_PARAMETERS_V2 pConnectionParameters,
    560   PVOID pReserved
    561 );
    562 
    563 DWORD WINAPI WlanDeleteProfile(
    564   HANDLE hClientHandle,
    565   const GUID *pInterfaceGuid,
    566   LPCWSTR strProfileName,
    567   PVOID pReserved
    568 );
    569 
    570 DWORD 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 
    582 DWORD WINAPI WlanDisconnect(
    583   HANDLE hClientHandle,
    584   const GUID *pInterfaceGuid,
    585   PVOID pReserved
    586 );
    587 
    588 DWORD WINAPI WlanEnumInterfaces(
    589   HANDLE hClientHandle,
    590   PVOID pReserved,
    591   PWLAN_INTERFACE_INFO_LIST *ppInterfaceList
    592 );
    593 
    594 VOID WINAPI WlanFreeMemory(
    595   PVOID pMemory
    596 );
    597 
    598 DWORD WINAPI WlanGetAvailableNetworkList(
    599   HANDLE hClientHandle,
    600   const GUID *pInterfaceGuid,
    601   DWORD dwFlags,
    602   PVOID pReserved,
    603   PWLAN_AVAILABLE_NETWORK_LIST *ppAvailableNetworkList
    604 );
    605 
    606 DWORD WINAPI WlanGetAvailableNetworkList2(
    607   HANDLE hClientHandle,
    608   const GUID *pInterfaceGuid,
    609   DWORD dwFlags,
    610   PVOID pReserved,
    611   PWLAN_AVAILABLE_NETWORK_LIST_V2 *ppAvailableNetworkList
    612 );
    613 
    614 DWORD 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 
    624 DWORD WINAPI WlanGetProfileList(
    625   HANDLE hClientHandle,
    626   const GUID *pInterfaceGuid,
    627   PVOID pReserved,
    628   PWLAN_PROFILE_INFO_LIST *ppProfileList
    629 );
    630 
    631 DWORD WINAPI WlanOpenHandle(
    632   DWORD dwClientVersion,
    633   PVOID pReserved,
    634   PDWORD pdwNegotiatedVersion,
    635   PHANDLE phClientHandle
    636 );
    637 
    638 DWORD 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 
    648 DWORD WINAPI WlanReasonCodeToString(
    649   DWORD dwReasonCode,
    650   DWORD dwBufferSize,
    651   PWCHAR pStringBuffer,
    652   PVOID pReserved
    653 );
    654 
    655 DWORD 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 
    665 DWORD 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 
    674 DWORD 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 
    685 DWORD WINAPI WlanSetProfileEapXmlUserData(
    686   HANDLE hClientHandle,
    687   const GUID *pInterfaceGuid,
    688   LPCWSTR strProfileName,
    689   DWORD dwFlags,
    690   LPCWSTR strEapXmlUserData,
    691   PVOID pReserved
    692 );
    693 
    694 DWORD WINAPI WlanSetProfileList(
    695   HANDLE hClientHandle,
    696   const GUID *pInterfaceGuid,
    697   DWORD dwItems,
    698   LPCWSTR *strProfileNames,
    699   PVOID pReserved
    700 );
    701 
    702 DWORD WINAPI WlanSetProfilePosition(
    703   HANDLE hClientHandle,
    704   const GUID *pInterfaceGuid,
    705   LPCWSTR strProfileName,
    706   DWORD dwPosition,
    707   PVOID pReserved
    708 );
    709 
    710 typedef 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 
    721 typedef enum _WL_DISPLAY_PAGES {
    722   WLConnectionPage,
    723   WLSecurityPage 
    724 } WL_DISPLAY_PAGES, *PWL_DISPLAY_PAGES;
    725 
    726 typedef 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 
    731 typedef 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 
    736 typedef 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 
    743 typedef 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 
    764 typedef 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 
    770 typedef 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 
    778 typedef struct _WLAN_RATE_SET {
    779   ULONG  uRateSetLength;
    780   USHORT usRateSet[DOT11_RATE_SET_MAX_LENGTH];
    781 } WLAN_RATE_SET, *PWLAN_RATE_SET;
    782 
    783 typedef 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 
    802 typedef struct _WLAN_BSS_LIST {
    803   DWORD          dwTotalSize;
    804   DWORD          dwNumberOfItems;
    805   WLAN_BSS_ENTRY wlanBssEntries[1];
    806 } WLAN_BSS_LIST, *PWLAN_BSS_LIST;
    807 
    808 typedef 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 
    815 typedef 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 
    824 typedef 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 
    839 typedef 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 
    851 typedef 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 
    872 typedef 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 
    878 typedef 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 
    883 typedef 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 
    894 typedef struct _WLAN_RAW_DATA {
    895   DWORD dwDataSize;
    896   BYTE  DataBlob[1];
    897 } WLAN_RAW_DATA, *PWLAN_RAW_DATA;
    898 
    899 typedef 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 
    908 typedef 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 
    918 DWORD 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 
    927 DWORD WINAPI WlanGetFilterList(
    928   HANDLE hClientHandle,
    929   WLAN_FILTER_LIST_TYPE wlanFilterListType,
    930   PVOID pReserved,
    931   PDOT11_NETWORK_LIST *ppNetworkList
    932 );
    933 
    934 DWORD WINAPI WlanGetInterfaceCapability(
    935   HANDLE hClientHandle,
    936   const GUID *pInterfaceGuid,
    937   PVOID pReserved,
    938   PWLAN_INTERFACE_CAPABILITY *ppCapability
    939 );
    940 
    941 DWORD 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 
    951 DWORD WINAPI WlanGetProfileCustomUserData(
    952   HANDLE hClientHandle,
    953   const GUID *pInterfaceGuid,
    954   LPCWSTR strProfileName,
    955   PVOID pReserved,
    956   DWORD *pdwDataSize,
    957   PBYTE *ppData
    958 );
    959 
    960 DWORD WINAPI WlanGetSecuritySettings(
    961   HANDLE hClientHandle,
    962   WLAN_SECURABLE_OBJECT SecurableObject,
    963   PWLAN_OPCODE_VALUE_TYPE pValueType,
    964   LPWSTR *pstrCurrentSDDL,
    965   PDWORD pdwGrantedAccess
    966 );
    967 
    968 DWORD WINAPI WlanGetSupportedDeviceServices(
    969   HANDLE hClientHandle,
    970   const GUID *pInterfaceGuid,
    971   PWLAN_DEVICE_SERVICE_GUID_LIST *ppDevSvcGuidList
    972 );
    973 
    974 DWORD 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 
    985 DWORD 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 
    994 DWORD WINAPI WlanRegisterDeviceServiceNotification(
    995   HANDLE hClientHandle,
    996   const PWLAN_DEVICE_SERVICE_GUID_LIST pDevSvcGuidList
    997 );
    998 
    999 DWORD 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 
   1013 DWORD 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 
   1023 DWORD 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 
   1031 DWORD WINAPI WlanSetAutoConfigParameter(
   1032   HANDLE hClientHandle,
   1033   WLAN_AUTOCONF_OPCODE OpCode,
   1034   DWORD dwDataSize,
   1035   const PVOID pData,
   1036   PVOID pReserved
   1037 );
   1038 
   1039 DWORD WINAPI WlanSetFilterList(
   1040   HANDLE hClientHandle,
   1041   WLAN_FILTER_LIST_TYPE wlanFilterListType,
   1042   const PDOT11_NETWORK_LIST pNetworkList,
   1043   PVOID pReserved
   1044 );
   1045 
   1046 DWORD WINAPI WlanSetProfileCustomUserData(
   1047   HANDLE hClientHandle,
   1048   const GUID *pInterfaceGuid,
   1049   LPCWSTR strProfileName,
   1050   DWORD dwDataSize,
   1051   const PBYTE pData,
   1052   PVOID pReserved
   1053 );
   1054 
   1055 DWORD 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 
   1066 DWORD WINAPI WlanSetPsdIEDataList(
   1067   HANDLE hClientHandle,
   1068   LPCWSTR strFormat,
   1069   const PWLAN_RAW_DATA_LIST pPsdIEDataList,
   1070   PVOID pReserved
   1071 );
   1072 
   1073 DWORD WINAPI WlanSetSecuritySettings(
   1074   HANDLE hClientHandle,
   1075   WLAN_SECURABLE_OBJECT SecurableObject,
   1076   LPCWSTR strModifiedSDDL
   1077 );
   1078 
   1079 DWORD 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*/