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