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