1 #ifndef _WLANAPI_H 2 #define _WLANAPI_H 3 4 #include <l2cmn.h> 5 #include <windot11.h> 6 #include <eaptypes.h> 7 8 #ifdef __cplusplus 9 extern "C" { 10 #endif 11 12 /* Defines */ 13 #define WLAN_API_VERSION_1_0 0x00000001 14 #define WLAN_API_VERSION_2_0 0x00000002 15 16 #define WLAN_MAX_PHY_INDEX 64 17 #define WLAN_MAX_NAME_LENGTH 256 18 19 #define WLAN_AVAILABLE_NETWORK_INCLUDE_ALL_ADHOC_PROFILES 0x00000001 20 #define WLAN_AVAILABLE_NETWORK_INCLUDE_ALL_MANUAL_HIDDEN_PROFILES 0x00000002 21 22 #define WLAN_AVAILABLE_NETWORK_CONNECTED 0x00000001 23 #define WLAN_AVAILABLE_NETWORK_HAS_PROFILE 0x00000002 24 #define WLAN_AVAILABLE_NETWORK_CONSOLE_USER_PROFILE 0x00000004 25 #define WLAN_AVAILABLE_NETWORK_INTERWORKING_SUPPORTED 0x00000008 26 #define WLAN_AVAILABLE_NETWORK_HOTSPOT2_ENABLED 0x00000010 27 #define WLAN_AVAILABLE_NETWORK_ANQP_SUPPORTED 0x00000020 28 #define WLAN_AVAILABLE_NETWORK_HOTSPOT2_DOMAIN 0x00000040 29 #define WLAN_AVAILABLE_NETWORK_HOTSPOT2_ROAMING 0x00000080 30 #define WLAN_AVAILABLE_NETWORK_AUTO_CONNECT_FAILED 0x00000100 31 32 /* Enumerations */ 33 34 #if defined(__midl) || defined(__WIDL__) 35 typedef [v1_enum] enum _DOT11_RADIO_STATE { 36 #else 37 typedef enum _DOT11_RADIO_STATE { 38 #endif 39 dot11_radio_state_unknown = 0, 40 dot11_radio_state_on, 41 dot11_radio_state_off 42 } DOT11_RADIO_STATE; /* HACK: WIDL is broken, *PDOT11_RADIO_STATE; */ 43 44 #if defined(__midl) || defined(__WIDL__) 45 typedef [v1_enum] enum _WLAN_OPCODE_VALUE_TYPE { 46 #else 47 typedef enum _WLAN_OPCODE_VALUE_TYPE { 48 #endif 49 wlan_opcode_value_type_query_only = 0, 50 wlan_opcode_value_type_set_by_group_policy, 51 wlan_opcode_value_type_set_by_user, 52 wlan_opcode_value_type_invalid 53 } WLAN_OPCODE_VALUE_TYPE; /* HACK: WIDL is broken , *PWLAN_OPCODE_VALUE_TYPE; */ 54 55 typedef enum _WLAN_SECURABLE_OBJECT { 56 wlan_secure_permit_list = 0, 57 wlan_secure_deny_list, 58 wlan_secure_ac_enabled, 59 wlan_secure_bc_scan_enabled, 60 wlan_secure_bss_type, 61 wlan_secure_show_denied, 62 wlan_secure_interface_properties, 63 wlan_secure_ihv_control, 64 wlan_secure_all_user_profiles_order, 65 wlan_secure_add_new_all_user_profiles, 66 wlan_secure_add_new_per_user_profiles, 67 wlan_secure_media_streaming_mode_enabled, 68 wlan_secure_current_operation_mode, 69 WLAN_SECURABLE_OBJECT_COUNT 70 } WLAN_SECURABLE_OBJECT, *PWLAN_SECURABLE_OBJECT; 71 72 typedef enum _WLAN_CONNECTION_MODE { 73 wlan_connection_mode_profile = 0, 74 wlan_connection_mode_temporary_profile, 75 wlan_connection_mode_discovery_secure, 76 wlan_connection_mode_discovery_unsecure, 77 wlan_connection_mode_auto, 78 wlan_connection_mode_invalid 79 } WLAN_CONNECTION_MODE, *PWLAN_CONNECTION_MODE; 80 81 #if defined(__midl) || defined(__WIDL__) 82 typedef [v1_enum] enum _WLAN_IHV_CONTROL_TYPE { 83 #else 84 typedef enum _WLAN_IHV_CONTROL_TYPE { 85 #endif 86 wlan_ihv_control_type_service, 87 wlan_ihv_control_type_driver 88 } WLAN_IHV_CONTROL_TYPE; /* HACK , *PWLAN_IHV_CONTROL_TYPE; */ 89 90 #if defined(__midl) || defined(__WIDL__) 91 typedef [v1_enum] enum _WLAN_INTF_OPCODE { 92 #else 93 typedef enum _WLAN_INTF_OPCODE { 94 #endif 95 wlan_intf_opcode_autoconf_start = 0x000000000, 96 wlan_intf_opcode_autoconf_enabled, 97 wlan_intf_opcode_background_scan_enabled, 98 wlan_intf_opcode_media_streaming_mode, 99 wlan_intf_opcode_radio_state, 100 wlan_intf_opcode_bss_type, 101 wlan_intf_opcode_interface_state, 102 wlan_intf_opcode_current_connection, 103 wlan_intf_opcode_channel_number, 104 wlan_intf_opcode_supported_infrastructure_auth_cipher_pairs, 105 wlan_intf_opcode_supported_adhoc_auth_cipher_pairs, 106 wlan_intf_opcode_supported_country_or_region_string_list, 107 wlan_intf_opcode_current_operation_mode, 108 wlan_intf_opcode_supported_safe_mode, 109 wlan_intf_opcode_certified_safe_mode, 110 wlan_intf_opcode_hosted_network_capable, 111 wlan_intf_opcode_management_frame_protection_capable, 112 wlan_intf_opcode_autoconf_end = 0x0fffffff, 113 wlan_intf_opcode_msm_start = 0x10000100, 114 wlan_intf_opcode_statistics, 115 wlan_intf_opcode_rssi, 116 wlan_intf_opcode_msm_end = 0x1fffffff, 117 wlan_intf_opcode_security_start = 0x20010000, 118 wlan_intf_opcode_security_end = 0x2fffffff, 119 wlan_intf_opcode_ihv_start = 0x30000000, 120 wlan_intf_opcode_ihv_end = 0x3fffffff 121 } WLAN_INTF_OPCODE; /* HACK: WIDL is broken , *PWLAN_INTF_OPCODE; */ 122 123 #if defined(__midl) || defined(__WIDL__) 124 typedef [v1_enum] enum _WLAN_INTERFACE_STATE { 125 #else 126 typedef enum _WLAN_INTERFACE_STATE { 127 #endif 128 wlan_interface_state_not_ready = 0, 129 wlan_interface_state_connected, 130 wlan_interface_state_ad_hoc_network_formed, 131 wlan_interface_state_disconnecting, 132 wlan_interface_state_disconnected, 133 wlan_interface_state_associating, 134 wlan_interface_state_discovering, 135 wlan_interface_state_authenticating 136 } WLAN_INTERFACE_STATE; 137 138 typedef enum _WLAN_INTERFACE_TYPE { 139 wlan_interface_type_emulated_802_11 = 0, 140 wlan_interface_type_native_802_11, 141 wlan_interface_type_invalid 142 } WLAN_INTERFACE_TYPE, *PWLAN_INTERFACE_TYPE; 143 144 /* Types */ 145 typedef DWORD WLAN_REASON_CODE, *PWLAN_REASON_CODE; 146 typedef ULONG WLAN_SIGNAL_QUALITY, *PWLAN_SIGNAL_QUALITY; 147 148 typedef struct _DOT11_NETWORK { 149 DOT11_SSID dot11Ssid; 150 DOT11_BSS_TYPE dot11BssType; 151 } DOT11_NETWORK, *PDOT11_NETWORK; 152 153 typedef struct _DOT11_NETWORK_LIST { 154 DWORD dwNumberOfItems; 155 DWORD dwIndex; 156 #if defined(__midl) || defined(__WIDL__) 157 [size_is(dwNumberOfItems)] DOT11_NETWORK Network[]; 158 #else 159 DOT11_NETWORK Network[1]; 160 #endif 161 } DOT11_NETWORK_LIST, *PDOT11_NETWORK_LIST; 162 163 typedef struct _WLAN_INTERFACE_INFO { 164 GUID InterfaceGuid; 165 WCHAR strInterfaceDescription[256]; 166 WLAN_INTERFACE_STATE isState; 167 } WLAN_INTERFACE_INFO, *PWLAN_INTERFACE_INFO; 168 169 typedef struct _WLAN_INTERFACE_INFO_LIST { 170 DWORD dwNumberOfItems; 171 DWORD dwIndex; 172 #if defined(__midl) || defined(__WIDL__) 173 [unique, size_is(dwNumberOfItems)] WLAN_INTERFACE_INFO InterfaceInfo[*]; 174 #else 175 WLAN_INTERFACE_INFO InterfaceInfo[1]; 176 #endif 177 } WLAN_INTERFACE_INFO_LIST, *PWLAN_INTERFACE_INFO_LIST; 178 179 typedef struct _WLAN_INTERFACE_CAPABILITY { 180 WLAN_INTERFACE_TYPE interfaceType; 181 BOOL bDot11DSupported; 182 DWORD dwMaxDesiredSsidListSize; 183 DWORD dwMaxDesiredBssidListSize; 184 DWORD dwNumberOfSupportedPhys; 185 /* enum32 */ long dot11PhyTypes[WLAN_MAX_PHY_INDEX]; 186 } WLAN_INTERFACE_CAPABILITY, *PWLAN_INTERFACE_CAPABILITY; 187 188 typedef struct _WLAN_PHY_RADIO_STATE { 189 DWORD dwPhyIndex; 190 DOT11_RADIO_STATE dot11SoftwareRadioState; 191 DOT11_RADIO_STATE dot11HardwareRadioState; 192 } WLAN_PHY_RADIO_STATE, *PWLAN_PHY_RADIO_STATE; 193 194 typedef struct _WLAN_RADIO_STATE { 195 DWORD dwNumberOfPhys; 196 WLAN_PHY_RADIO_STATE PhyRadioState[WLAN_MAX_PHY_INDEX]; 197 } WLAN_RADIO_STATE, *PWLAN_RADIO_STATE; 198 199 typedef struct _WLAN_RAW_DATA { 200 DWORD dwDataSize; 201 #if defined(__midl) || defined(__WIDL__) 202 [size_is(dwDataSize)] BYTE DataBlob[]; 203 #else 204 BYTE DataBlob[1]; 205 #endif 206 } WLAN_RAW_DATA, *PWLAN_RAW_DATA; 207 208 typedef struct _WLAN_PROFILE_INFO { 209 WCHAR strProfileName[256]; 210 DWORD dwFlags; 211 } WLAN_PROFILE_INFO, *PWLAN_PROFILE_INFO; 212 213 typedef struct _WLAN_PROFILE_INFO_LIST { 214 DWORD dwNumberOfItems; 215 DWORD dwIndex; 216 #if defined(__midl) || defined(__WIDL__) 217 [size_is(dwNumberOfItems)] WLAN_PROFILE_INFO ProfileInfo[]; 218 #else 219 WLAN_PROFILE_INFO ProfileInfo[1]; 220 #endif 221 } WLAN_PROFILE_INFO_LIST, *PWLAN_PROFILE_INFO_LIST; 222 223 typedef struct _WLAN_AVAILABLE_NETWORK { 224 WCHAR strProfileName[WLAN_MAX_NAME_LENGTH]; 225 DOT11_SSID dot11Ssid; 226 DOT11_BSS_TYPE dot11BssType; 227 ULONG uNumberOfBssids; 228 BOOL bNetworkConnectable; 229 WLAN_REASON_CODE wlanNotConnectableReason; 230 ULONG uNumberOfPhyTypes; 231 DOT11_PHY_TYPE dot11PhyTypes[8]; 232 BOOL bMorePhyTypes; 233 WLAN_SIGNAL_QUALITY wlanSignalQuality; 234 BOOL bSecurityEnabled; 235 DOT11_AUTH_ALGORITHM dot11DefaultAuthAlgorithm; 236 DOT11_CIPHER_ALGORITHM dot11DefaultCipherAlgorithm; 237 DWORD dwFlags; 238 DWORD dwReserved; 239 } WLAN_AVAILABLE_NETWORK, *PWLAN_AVAILABLE_NETWORK; 240 241 typedef struct _WLAN_AVAILABLE_NETWORK_LIST { 242 DWORD dwNumberOfItems; 243 DWORD dwIndex; 244 #if defined(__midl) || defined(__WIDL__) 245 [size_is(dwNumberOfItems)] WLAN_AVAILABLE_NETWORK Network[*]; 246 #else 247 WLAN_AVAILABLE_NETWORK Network[1]; 248 #endif 249 } WLAN_AVAILABLE_NETWORK_LIST ,*PWLAN_AVAILABLE_NETWORK_LIST; 250 251 typedef struct _WLAN_CONNECTION_PARAMETERS { 252 WLAN_CONNECTION_MODE wlanConnectionMode; 253 #if defined(__midl) || defined(__WIDL__) 254 [string] LPCWSTR strProfile; 255 #else 256 LPCWSTR strProfile; 257 #endif 258 PDOT11_SSID pDot11Ssid; 259 PDOT11_BSSID_LIST pDesiredBssidList; 260 DOT11_BSS_TYPE dot11BssType; 261 DWORD dwFlags; 262 } WLAN_CONNECTION_PARAMETERS, *PWLAN_CONNECTION_PARAMETERS; 263 264 typedef L2_NOTIFICATION_DATA WLAN_NOTIFICATION_DATA, *PWLAN_NOTIFICATION_DATA; 265 266 typedef void (__stdcall *WLAN_NOTIFICATION_CALLBACK) (PWLAN_NOTIFICATION_DATA, PVOID); 267 268 /* Functions */ 269 #if !defined(__midl) && !defined(__WIDL__) 270 PVOID WINAPI WlanAllocateMemory(DWORD dwSize); 271 VOID WINAPI WlanFreeMemory(PVOID pMemory); 272 DWORD WINAPI WlanOpenHandle(IN DWORD dwClientVersion, PVOID pReserved, OUT DWORD *pdwNegotiatedVersion, OUT HANDLE *phClientHandle); 273 DWORD WINAPI WlanCloseHandle(IN HANDLE hClientHandle, PVOID pReserved); 274 DWORD WINAPI WlanConnect(IN HANDLE hClientHandle, IN const GUID *pInterfaceGuid, IN const PWLAN_CONNECTION_PARAMETERS pConnectionParameters, PVOID pReserved); 275 DWORD WINAPI WlanDisconnect(IN HANDLE hClientHandle, IN const GUID *pInterfaceGuid, PVOID pReserved); 276 DWORD WINAPI WlanEnumInterfaces(IN HANDLE hClientHandle, PVOID pReserved, OUT PWLAN_INTERFACE_INFO_LIST *ppInterfaceList); 277 DWORD WINAPI WlanGetAvailableNetworkList(IN HANDLE hClientHandle, IN const GUID *pInterfaceGuid, IN DWORD dwFlags, PVOID pReserved, OUT PWLAN_AVAILABLE_NETWORK_LIST *ppAvailableNetworkList); 278 DWORD WINAPI WlanGetInterfaceCapability(IN HANDLE hClientHandle, IN const GUID *pInterfaceGuid, PVOID pReserved, OUT PWLAN_INTERFACE_CAPABILITY *ppCapability); 279 DWORD WINAPI WlanDeleteProfile(IN HANDLE hClientHandle, IN const GUID *pInterfaceGuid, IN LPCWSTR strProfileName, PVOID pReserved); 280 DWORD WINAPI WlanGetProfile(IN HANDLE hClientHandle, IN const GUID *pInterfaceGuid, IN LPCWSTR strProfileName, PVOID pReserved, OUT LPWSTR *pstrProfileXml, DWORD *pdwFlags, PDWORD pdwGrantedAccess); 281 DWORD WINAPI WlanGetProfileCustomUserData(IN HANDLE hClientHandle, IN const GUID *pInterfaceGuid, IN LPCWSTR strProfileName, PVOID pReserved, OUT DWORD *pdwDataSize, OUT PBYTE *ppData); 282 DWORD WINAPI WlanGetProfileList(IN HANDLE hClientHandle, IN const GUID *pInterfaceGuid, PVOID pReserved, OUT PWLAN_PROFILE_INFO_LIST *ppProfileList); 283 DWORD WINAPI WlanIhvControl(IN HANDLE hClientHandle, IN const GUID *pInterfaceGuid, IN WLAN_IHV_CONTROL_TYPE Type, IN DWORD dwInBufferSize, IN PVOID pInBuffer, IN DWORD dwOutBufferSize, PVOID pOutBuffer, OUT PDWORD pdwBytesReturned); 284 DWORD WINAPI WlanQueryInterface(IN HANDLE hClientHandle, IN const GUID *pInterfaceGuid, IN WLAN_INTF_OPCODE OpCode, PVOID pReserved, OUT PDWORD pdwDataSize, OUT PVOID *ppData, WLAN_OPCODE_VALUE_TYPE *pWlanOpcodeValueType); 285 DWORD WINAPI WlanReasonCodeToString(IN DWORD dwReasonCode, IN DWORD dwBufferSize, IN PWCHAR pStringBuffer, PVOID pReserved); 286 DWORD WINAPI WlanRegisterNotification(IN HANDLE hClientHandle,IN DWORD dwNotifSource, IN BOOL bIgnoreDuplicate, WLAN_NOTIFICATION_CALLBACK funcCallback, PVOID pCallbackContext, PVOID pReserved, PDWORD pdwPrevNotifSource); 287 DWORD WINAPI WlanRenameProfile(IN HANDLE hClientHandle, IN const GUID *pInterfaceGuid, IN LPCWSTR strOldProfileName, IN LPCWSTR strNewProfileName, PVOID pReserved); 288 DWORD WINAPI WlanSetProfile(IN HANDLE hClientHandle, IN const GUID *pInterfaceGuid, IN DWORD dwFlags, IN LPCWSTR strProfileXml, LPCWSTR strAllUserProfileSecurity, IN BOOL bOverwrite, PVOID pReserved, OUT DWORD *pdwReasonCode); 289 DWORD WINAPI WlanSetProfileCustomUserData(IN HANDLE hClientHandle, IN const GUID *pInterfaceGuid, IN LPCWSTR strProfileName, IN DWORD dwDataSize, IN const PBYTE pData, PVOID pReserved); 290 DWORD WINAPI WlanSetProfileEapUserData(IN HANDLE hClientHandle, IN const GUID *pInterfaceGuid, IN LPCWSTR strProfileName, IN EAP_METHOD_TYPE eapType, IN DWORD dwFlags, IN DWORD dwEapUserDataSize, IN const LPBYTE pbEapUserData, PVOID pReserved); 291 DWORD WINAPI WlanSetProfileList(IN HANDLE hClientHandle, IN const GUID *pInterfaceGuid, DWORD dwItems, IN LPCWSTR *strProfileNames, PVOID pReserved); 292 DWORD WINAPI WlanSetSecuritySettings(IN HANDLE hClientHandle, IN WLAN_SECURABLE_OBJECT SecurableObject, IN LPCWSTR strModifiedSDDL); 293 DWORD WINAPI WlanScan(IN HANDLE hClientHandle, IN const GUID *pInterfaceGuid, IN PDOT11_SSID pDot11Ssid, IN PWLAN_RAW_DATA pIeData, PVOID pReserved); 294 #endif 295 296 #ifdef __cplusplus 297 } 298 #endif 299 300 301 #endif // _WLANAPI_H 302