[FAST486]
[reactos.git] / include / psdk / wlanapi.h
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_MAX_PHY_INDEX 64
14 #define WLAN_MAX_NAME_LENGTH 256
15
16 /* Enumerations */
17
18 #if defined(__midl) || defined(__WIDL__)
19 typedef [v1_enum] enum _WLAN_OPCODE_VALUE_TYPE {
20 #else
21 typedef enum _WLAN_OPCODE_VALUE_TYPE {
22 #endif
23 wlan_opcode_value_type_query_only = 0,
24 wlan_opcode_value_type_set_by_group_policy,
25 wlan_opcode_value_type_set_by_user,
26 wlan_opcode_value_type_invalid
27 } WLAN_OPCODE_VALUE_TYPE;
28
29 typedef enum _WLAN_SECURABLE_OBJECT {
30 wlan_secure_permit_list = 0,
31 wlan_secure_deny_list,
32 wlan_secure_ac_enabled,
33 wlan_secure_bc_scan_enabled,
34 wlan_secure_bss_type,
35 wlan_secure_show_denied,
36 wlan_secure_interface_properties,
37 wlan_secure_ihv_control,
38 wlan_secure_all_user_profiles_order,
39 wlan_secure_add_new_all_user_profiles,
40 wlan_secure_add_new_per_user_profiles,
41 wlan_secure_media_streaming_mode_enabled,
42 wlan_secure_current_operation_mode,
43 WLAN_SECURABLE_OBJECT_COUNT
44 } WLAN_SECURABLE_OBJECT, *PWLAN_SECURABLE_OBJECT;
45
46 typedef enum _WLAN_CONNECTION_MODE {
47 wlan_connection_mode_profile = 0,
48 wlan_connection_mode_temporary_profile,
49 wlan_connection_mode_discovery_secure,
50 wlan_connection_mode_discovery_unsecure,
51 wlan_connection_mode_auto,
52 wlan_connection_mode_invalid
53 } WLAN_CONNECTION_MODE, *PWLAN_CONNECTION_MODE;
54
55 #if defined(__midl) || defined(__WIDL__)
56 typedef [v1_enum] enum _WLAN_INTERFACE_STATE {
57 #else
58 typedef enum _WLAN_INTERFACE_STATE {
59 #endif
60 wlan_interface_state_not_ready = 0,
61 wlan_interface_state_connected,
62 wlan_interface_state_ad_hoc_network_formed,
63 wlan_interface_state_disconnecting,
64 wlan_interface_state_disconnected,
65 wlan_interface_state_associating,
66 wlan_interface_state_discovering,
67 wlan_interface_state_authenticating
68 } WLAN_INTERFACE_STATE;
69
70 typedef enum _WLAN_INTERFACE_TYPE {
71 wlan_interface_type_emulated_802_11 = 0,
72 wlan_interface_type_native_802_11,
73 wlan_interface_type_invalid
74 } WLAN_INTERFACE_TYPE, *PWLAN_INTERFACE_TYPE;
75
76 /* Types */
77 typedef DWORD WLAN_REASON_CODE, *PWLAN_REASON_CODE;
78 typedef ULONG WLAN_SIGNAL_QUALITY, *PWLAN_SIGNAL_QUALITY;
79
80 typedef struct _DOT11_NETWORK {
81 DOT11_SSID dot11Ssid;
82 DOT11_BSS_TYPE dot11BssType;
83 } DOT11_NETWORK, *PDOT11_NETWORK;
84
85 typedef struct _DOT11_NETWORK_LIST {
86 DWORD dwNumberOfItems;
87 DWORD dwIndex;
88 #if defined(__midl) || defined(__WIDL__)
89 [size_is(dwNumberOfItems)] DOT11_NETWORK Network[];
90 #else
91 DOT11_NETWORK Network[1];
92 #endif
93 } DOT11_NETWORK_LIST, *PDOT11_NETWORK_LIST;
94
95 typedef struct _WLAN_INTERFACE_INFO {
96 GUID InterfaceGuid;
97 WCHAR strInterfaceDescription[256];
98 WLAN_INTERFACE_STATE isState;
99 } WLAN_INTERFACE_INFO, *PWLAN_INTERFACE_INFO;
100
101 typedef struct _WLAN_INTERFACE_INFO_LIST {
102 DWORD dwNumberOfItems;
103 DWORD dwIndex;
104 #if defined(__midl) || defined(__WIDL__)
105 [unique, size_is(dwNumberOfItems)] WLAN_INTERFACE_INFO InterfaceInfo[*];
106 #else
107 WLAN_INTERFACE_INFO InterfaceInfo[1];
108 #endif
109 } WLAN_INTERFACE_INFO_LIST, *PWLAN_INTERFACE_INFO_LIST;
110
111 typedef struct _WLAN_INTERFACE_CAPABILITY {
112 WLAN_INTERFACE_TYPE interfaceType;
113 BOOL bDot11DSupported;
114 DWORD dwMaxDesiredSsidListSize;
115 DWORD dwMaxDesiredBssidListSize;
116 DWORD dwNumberOfSupportedPhys;
117 /* enum32 */ long dot11PhyTypes[WLAN_MAX_PHY_INDEX];
118 } WLAN_INTERFACE_CAPABILITY, *PWLAN_INTERFACE_CAPABILITY;
119
120 typedef struct _WLAN_RAW_DATA {
121 DWORD dwDataSize;
122 #if defined(__midl) || defined(__WIDL__)
123 [size_is(dwDataSize)] BYTE DataBlob[];
124 #else
125 BYTE DataBlob[1];
126 #endif
127 } WLAN_RAW_DATA, *PWLAN_RAW_DATA;
128
129 typedef struct _WLAN_PROFILE_INFO {
130 WCHAR strProfileName[256];
131 DWORD dwFlags;
132 } WLAN_PROFILE_INFO, *PWLAN_PROFILE_INFO;
133
134 typedef struct _WLAN_PROFILE_INFO_LIST {
135 DWORD dwNumberOfItems;
136 DWORD dwIndex;
137 #if defined(__midl) || defined(__WIDL__)
138 [size_is(dwNumberOfItems)] WLAN_PROFILE_INFO ProfileInfo[];
139 #else
140 WLAN_PROFILE_INFO ProfileInfo[1];
141 #endif
142 } WLAN_PROFILE_INFO_LIST, *PWLAN_PROFILE_INFO_LIST;
143
144 typedef struct _WLAN_AVAILABLE_NETWORK {
145 WCHAR strProfileName[WLAN_MAX_NAME_LENGTH];
146 DOT11_SSID dot11Ssid;
147 DOT11_BSS_TYPE dot11BssType;
148 ULONG uNumberOfBssids;
149 BOOL bNetworkConnectable;
150 WLAN_REASON_CODE wlanNotConnectableReason;
151 ULONG uNumberOfPhyTypes;
152 DOT11_PHY_TYPE dot11PhyTypes[8];
153 BOOL bMorePhyTypes;
154 WLAN_SIGNAL_QUALITY wlanSignalQuality;
155 BOOL bSecurityEnabled;
156 DOT11_AUTH_ALGORITHM dot11DefaultAuthAlgorithm;
157 DOT11_CIPHER_ALGORITHM dot11DefaultCipherAlgorithm;
158 DWORD dwFlags;
159 DWORD dwReserved;
160 } WLAN_AVAILABLE_NETWORK, *PWLAN_AVAILABLE_NETWORK;
161
162 typedef struct _WLAN_AVAILABLE_NETWORK_LIST {
163 DWORD dwNumberOfItems;
164 DWORD dwIndex;
165 #if defined(__midl) || defined(__WIDL__)
166 [size_is(dwNumberOfItems)] WLAN_AVAILABLE_NETWORK Network[*];
167 #else
168 WLAN_AVAILABLE_NETWORK Network[1];
169 #endif
170 } WLAN_AVAILABLE_NETWORK_LIST ,*PWLAN_AVAILABLE_NETWORK_LIST;
171
172 typedef struct _WLAN_CONNECTION_PARAMETERS {
173 WLAN_CONNECTION_MODE wlanConnectionMode;
174 #if defined(__midl) || defined(__WIDL__)
175 [string] LPCWSTR strProfile;
176 #else
177 LPCWSTR strProfile;
178 #endif
179 PDOT11_SSID pDot11Ssid;
180 PDOT11_BSSID_LIST pDesiredBssidList;
181 DOT11_BSS_TYPE dot11BssType;
182 DWORD dwFlags;
183 } WLAN_CONNECTION_PARAMETERS, *PWLAN_CONNECTION_PARAMETERS;
184
185 typedef L2_NOTIFICATION_DATA WLAN_NOTIFICATION_DATA, *PWLAN_NOTIFICATION_DATA;
186
187 /* Functions */
188 #if !defined(__midl) && !defined(__WIDL__)
189 PVOID WINAPI WlanAllocateMemory(DWORD dwSize);
190 VOID WINAPI WlanFreeMemory(PVOID pMemory);
191 DWORD WINAPI WlanOpenHandle(IN DWORD dwClientVersion, PVOID pReserved, OUT DWORD *pdwNegotiatedVersion, OUT HANDLE *phClientHandle);
192 DWORD WINAPI WlanCloseHandle(IN HANDLE hClientHandle, PVOID pReserved);
193 DWORD WINAPI WlanEnumInterfaces(IN HANDLE hClientHandle, PVOID pReserved, OUT PWLAN_INTERFACE_INFO_LIST *ppInterfaceList);
194 DWORD WINAPI WlanScan(IN HANDLE hClientHandle, IN GUID *pInterfaceGuid, IN PDOT11_SSID pDot11Ssid, IN PWLAN_RAW_DATA pIeData, PVOID pReserved);
195 #endif
196
197 #ifdef __cplusplus
198 }
199 #endif
200
201
202 #endif // _WLANAPI_H