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