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