* Slap *some* sense into our header inclusions.
[reactos.git] / reactos / base / services / wlansvc / rpcserver.c
1 /*
2 * PROJECT: ReactOS WLAN Service
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: base/services/wlansvc/rpcserver.c
5 * PURPOSE: RPC server interface
6 * COPYRIGHT: Copyright 2009 Christoph von Wittich
7 */
8
9 /* INCLUDES ****************************************************************/
10
11 #include <wlansvc_s.h>
12
13 #define NDEBUG
14 #include <debug.h>
15 //#define GET_IF_ENTRY2_IMPLEMENTED 1
16
17 DWORD _RpcOpenHandle(
18 wchar_t *arg_1,
19 DWORD dwClientVersion,
20 DWORD *pdwNegotiatedVersion,
21 LPWLANSVC_RPC_HANDLE phClientHandle)
22 {
23 UNIMPLEMENTED;
24 return ERROR_CALL_NOT_IMPLEMENTED;
25 }
26
27 DWORD _RpcCloseHandle(
28 LPWLANSVC_RPC_HANDLE phClientHandle)
29 {
30 UNIMPLEMENTED;
31 return ERROR_CALL_NOT_IMPLEMENTED;
32 }
33
34 DWORD _RpcEnumInterfaces(
35 WLANSVC_RPC_HANDLE hClientHandle,
36 PWLAN_INTERFACE_INFO_LIST *ppInterfaceList)
37 {
38 #if GET_IF_ENTRY2_IMPLEMENTED
39 DWORD dwNumInterfaces;
40 DWORD dwResult, dwSize;
41 DWORD dwIndex;
42 MIB_IF_ROW2 IfRow;
43 PWLAN_INTERFACE_INFO_LIST InterfaceList;
44
45 if (!hClientHandle || !ppInterfaceList)
46 return ERROR_INVALID_PARAMETER;
47
48 dwResult = GetNumberOfInterfaces(&dwNumInterfaces);
49 dwSize = sizeof(WLAN_INTERFACE_INFO_LIST);
50 if (dwResult != NO_ERROR)
51 {
52 /* set num interfaces to zero when an error occurs */
53 dwNumInterfaces = 0;
54 }
55 else
56 {
57 if (dwNumInterfaces > 1)
58 {
59 /* add extra size for interface */
60 dwSize += (dwNumInterfaces-1) * sizeof(WLAN_INTERFACE_INFO);
61 }
62 }
63
64 /* allocate interface list */
65 InterfaceList = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwSize);
66 if (!InterfaceList)
67 {
68 return ERROR_NOT_ENOUGH_MEMORY;
69 }
70
71 *ppInterfaceList = InterfaceList;
72 if (!dwNumInterfaces)
73 {
74 return ERROR_SUCCESS;
75 }
76
77 for(dwIndex = 0; dwIndex < dwNumInterfaces; dwIndex++)
78 {
79 ZeroMemory(&IfRow, sizeof(MIB_IF_ROW2));
80 IfRow.InterfaceIndex = dwIndex;
81
82 dwResult = GetIfEntry2(&IfRow);
83 if (dwResult == NO_ERROR)
84 {
85 if (IfRow.Type == IF_TYPE_IEEE80211 && IfRow.InterfaceAndOperStatusFlags.HardwareInterface)
86 {
87 RtlMoveMemory(&InterfaceList->InterfaceInfo[InterfaceList->dwNumberOfItems].InterfaceGuid, &IfRow.InterfaceGuid, sizeof(GUID));
88 wcscpy(InterfaceList->InterfaceInfo[InterfaceList->dwNumberOfItems].strInterfaceDescription, IfRow.Description);
89 //FIXME set state
90 InterfaceList->dwNumberOfItems++;
91 }
92 }
93 }
94
95 return ERROR_SUCCESS;
96 #else
97 UNIMPLEMENTED;
98 return ERROR_CALL_NOT_IMPLEMENTED;
99 #endif
100 }
101
102 DWORD _RpcSetAutoConfigParameter(
103 WLANSVC_RPC_HANDLE hClientHandle,
104 long OpCode,
105 DWORD dwDataSize,
106 LPBYTE pData)
107 {
108 UNIMPLEMENTED;
109 return ERROR_CALL_NOT_IMPLEMENTED;
110 }
111
112 DWORD _RpcQueryAutoConfigParameter(
113 WLANSVC_RPC_HANDLE hClientHandle,
114 DWORD OpCode,
115 LPDWORD pdwDataSize,
116 char **ppData,
117 DWORD *pWlanOpcodeValueType)
118 {
119 UNIMPLEMENTED;
120 return ERROR_CALL_NOT_IMPLEMENTED;
121 }
122
123 DWORD _RpcGetInterfaceCapability(
124 WLANSVC_RPC_HANDLE hClientHandle,
125 GUID *pInterfaceGuid,
126 PWLAN_INTERFACE_CAPABILITY *ppCapability)
127 {
128 UNIMPLEMENTED;
129 return ERROR_CALL_NOT_IMPLEMENTED;
130 }
131
132 DWORD _RpcSetInterface(
133 WLANSVC_RPC_HANDLE hClientHandle,
134 GUID *pInterfaceGuid,
135 DWORD OpCode,
136 DWORD dwDataSize,
137 LPBYTE pData)
138 {
139 UNIMPLEMENTED;
140 return ERROR_CALL_NOT_IMPLEMENTED;
141 }
142
143 DWORD _RpcQueryInterface(
144 WLANSVC_RPC_HANDLE hClientHandle,
145 GUID *pInterfaceGuid,
146 long OpCode,
147 LPDWORD pdwDataSize,
148 LPBYTE *ppData,
149 LPDWORD pWlanOpcodeValueType)
150 {
151 UNIMPLEMENTED;
152 return ERROR_CALL_NOT_IMPLEMENTED;
153 }
154
155 DWORD _RpcIhvControl(
156 WLANSVC_RPC_HANDLE hClientHandle,
157 GUID *pInterfaceGuid,
158 DWORD Type,
159 DWORD dwInBufferSize,
160 LPBYTE pInBuffer,
161 DWORD dwOutBufferSize,
162 LPBYTE pOutBuffer,
163 LPDWORD pdwBytesReturned)
164 {
165 UNIMPLEMENTED;
166 return ERROR_CALL_NOT_IMPLEMENTED;
167 }
168
169 DWORD _RpcScan(
170 WLANSVC_RPC_HANDLE hClientHandle,
171 GUID *pInterfaceGuid,
172 PDOT11_SSID pDot11Ssid,
173 PWLAN_RAW_DATA pIeData)
174 {
175 /*
176 DWORD dwBytesReturned;
177 HANDLE hDevice;
178 ULONG OidCode = OID_802_11_BSSID_LIST_SCAN;
179 PNDIS_802_11_BSSID_LIST pBssIDList;
180
181 DeviceIoControl(hDevice,
182 IOCTL_NDIS_QUERY_GLOBAL_STATS,
183 &OidCode,
184 sizeof(ULONG),
185 NULL,
186 0,
187 &dwBytesReturned,
188 NULL);
189 */
190 UNIMPLEMENTED;
191 return ERROR_CALL_NOT_IMPLEMENTED;
192 }
193
194 DWORD _RpcGetAvailableNetworkList(
195 WLANSVC_RPC_HANDLE hClientHandle,
196 GUID *pInterfaceGuid,
197 DWORD dwFlags,
198 WLAN_AVAILABLE_NETWORK_LIST **ppAvailableNetworkList)
199 {
200 UNIMPLEMENTED;
201 return ERROR_CALL_NOT_IMPLEMENTED;
202 }
203
204 DWORD _RpcGetNetworkBssList(
205 WLANSVC_RPC_HANDLE hClientHandle,
206 GUID *pInterfaceGuid,
207 PDOT11_SSID pDot11Ssid,
208 short dot11BssType,
209 DWORD bSecurityEnabled,
210 LPDWORD dwBssListSize,
211 LPBYTE *ppWlanBssList)
212 {
213 UNIMPLEMENTED;
214 return ERROR_CALL_NOT_IMPLEMENTED;
215 }
216
217 DWORD _RpcConnect(
218 WLANSVC_RPC_HANDLE hClientHandle,
219 GUID *pInterfaceGuid,
220 PWLAN_CONNECTION_PARAMETERS *pConnectionParameters)
221 {
222 UNIMPLEMENTED;
223 return ERROR_CALL_NOT_IMPLEMENTED;
224 }
225
226 DWORD _RpcDisconnect(
227 WLANSVC_RPC_HANDLE hClientHandle,
228 GUID *pInterfaceGUID)
229 {
230 UNIMPLEMENTED;
231 return ERROR_CALL_NOT_IMPLEMENTED;
232 }
233
234 DWORD _RpcRegisterNotification(
235 WLANSVC_RPC_HANDLE hClientHandle,
236 DWORD arg_2,
237 LPDWORD pdwPrevNotifSource)
238 {
239 UNIMPLEMENTED;
240 return ERROR_CALL_NOT_IMPLEMENTED;
241 }
242
243 DWORD _RpcAsyncGetNotification(
244 WLANSVC_RPC_HANDLE hClientHandle,
245 PWLAN_NOTIFICATION_DATA *NotificationData)
246 {
247 UNIMPLEMENTED;
248 return ERROR_CALL_NOT_IMPLEMENTED;
249 }
250
251 DWORD _RpcSetProfileEapUserData(
252 WLANSVC_RPC_HANDLE hClientHandle,
253 GUID *pInterfaceGuid,
254 wchar_t *strProfileName,
255 EAP_METHOD_TYPE MethodType,
256 DWORD dwFlags,
257 DWORD dwEapUserDataSize,
258 LPBYTE pbEapUserData)
259 {
260 UNIMPLEMENTED;
261 return ERROR_CALL_NOT_IMPLEMENTED;
262 }
263
264 DWORD _RpcSetProfile(
265 WLANSVC_RPC_HANDLE hClientHandle,
266 GUID *pInterfaceGuid,
267 DWORD dwFlags,
268 wchar_t *strProfileXml,
269 wchar_t *strAllUserProfileSecurity,
270 BOOL bOverwrite,
271 LPDWORD pdwReasonCode)
272 {
273 UNIMPLEMENTED;
274 return ERROR_CALL_NOT_IMPLEMENTED;
275 }
276
277 DWORD _RpcGetProfile(
278 WLANSVC_RPC_HANDLE hClientHandle,
279 GUID *pInterfaceGuid,
280 wchar_t *strProfileName,
281 wchar_t **pstrProfileXml,
282 LPDWORD pdwFlags,
283 LPDWORD pdwGrantedAccess)
284 {
285 UNIMPLEMENTED;
286 return ERROR_CALL_NOT_IMPLEMENTED;
287 }
288
289 DWORD _RpcDeleteProfile(
290 WLANSVC_RPC_HANDLE hClientHandle,
291 GUID *pInterfaceGuid,
292 wchar_t *strProfileName)
293 {
294 UNIMPLEMENTED;
295 return ERROR_CALL_NOT_IMPLEMENTED;
296 }
297
298 DWORD _RpcRenameProfile(
299 WLANSVC_RPC_HANDLE hClientHandle,
300 GUID *pInterfaceGuid,
301 wchar_t *strOldProfileName,
302 wchar_t *strNewProfileName)
303 {
304 UNIMPLEMENTED;
305 return ERROR_CALL_NOT_IMPLEMENTED;
306 }
307
308 DWORD _RpcSetProfileList(
309 WLANSVC_RPC_HANDLE hClientHandle,
310 GUID *pInterfaceGuid,
311 DWORD dwItems,
312 BYTE **strProfileNames)
313 {
314 UNIMPLEMENTED;
315 return ERROR_CALL_NOT_IMPLEMENTED;
316 }
317
318 DWORD _RpcGetProfileList(
319 WLANSVC_RPC_HANDLE hClientHandle,
320 GUID *pInterfaceGuid,
321 PWLAN_PROFILE_INFO_LIST *ppProfileList)
322 {
323 UNIMPLEMENTED;
324 return ERROR_CALL_NOT_IMPLEMENTED;
325 }
326
327 DWORD _RpcSetProfilePosition(
328 WLANSVC_RPC_HANDLE hClientHandle,
329 GUID *pInterfaceGuid,
330 wchar_t *strProfileName,
331 DWORD dwPosition)
332 {
333 UNIMPLEMENTED;
334 return ERROR_CALL_NOT_IMPLEMENTED;
335 }
336
337 DWORD _RpcSetProfileCustomUserData(
338 WLANSVC_RPC_HANDLE hClientHandle,
339 GUID *pInterfaceGuid,
340 wchar_t *strProfileName,
341 DWORD dwDataSize,
342 LPBYTE pData)
343 {
344 UNIMPLEMENTED;
345 return ERROR_CALL_NOT_IMPLEMENTED;
346 }
347
348 DWORD _RpcGetProfileCustomUserData(
349 WLANSVC_RPC_HANDLE hClientHandle,
350 GUID *pInterfaceGuid,
351 wchar_t *strProfileName,
352 LPDWORD dwDataSize,
353 LPBYTE *pData)
354 {
355 UNIMPLEMENTED;
356 return ERROR_CALL_NOT_IMPLEMENTED;
357 }
358
359 DWORD _RpcSetFilterList(
360 WLANSVC_RPC_HANDLE hClientHandle,
361 short wlanFilterListType,
362 PDOT11_NETWORK_LIST pNetworkList)
363 {
364 UNIMPLEMENTED;
365 return ERROR_CALL_NOT_IMPLEMENTED;
366 }
367
368 DWORD _RpcGetFilterList(
369 WLANSVC_RPC_HANDLE hClientHandle,
370 short wlanFilterListType,
371 PDOT11_NETWORK_LIST *pNetworkList)
372 {
373 UNIMPLEMENTED;
374 return ERROR_CALL_NOT_IMPLEMENTED;
375 }
376
377 DWORD _RpcSetPsdIEDataList(
378 WLANSVC_RPC_HANDLE hClientHandle,
379 wchar_t *strFormat,
380 DWORD dwDataListSize,
381 LPBYTE pPsdIEDataList)
382 {
383 UNIMPLEMENTED;
384 return ERROR_CALL_NOT_IMPLEMENTED;
385 }
386
387 DWORD _RpcSaveTemporaryProfile(
388 WLANSVC_RPC_HANDLE hClientHandle,
389 GUID *pInterfaceGuid,
390 wchar_t *strProfileName,
391 wchar_t *strAllUserProfileSecurity,
392 DWORD dwFlags,
393 BOOL bOverWrite)
394 {
395 UNIMPLEMENTED;
396 return ERROR_CALL_NOT_IMPLEMENTED;
397 }
398
399 DWORD _RpcIsUIRequestPending(
400 wchar_t *arg_1,
401 GUID *pInterfaceGuid,
402 struct_C *arg_3,
403 LPDWORD arg_4)
404 {
405 UNIMPLEMENTED;
406 return ERROR_CALL_NOT_IMPLEMENTED;
407 }
408
409 DWORD _RpcSetUIForwardingNetworkList(
410 wchar_t *arg_1,
411 GUID *arg_2,
412 DWORD dwSize,
413 GUID *arg_4)
414 {
415 UNIMPLEMENTED;
416 return ERROR_CALL_NOT_IMPLEMENTED;
417 }
418
419 DWORD _RpcIsNetworkSuppressed(
420 wchar_t *arg_1,
421 DWORD arg_2,
422 GUID *pInterfaceGuid,
423 LPDWORD arg_4)
424 {
425 UNIMPLEMENTED;
426 return ERROR_CALL_NOT_IMPLEMENTED;
427 }
428
429 DWORD _RpcRemoveUIForwardingNetworkList(
430 wchar_t *arg_1,
431 GUID *pInterfaceGuid)
432 {
433 UNIMPLEMENTED;
434 return ERROR_CALL_NOT_IMPLEMENTED;
435 }
436
437 DWORD _RpcQueryExtUIRequest(
438 wchar_t *arg_1,
439 GUID *arg_2,
440 GUID *arg_3,
441 short arg_4,
442 GUID *pInterfaceGuid,
443 struct_C **arg_6)
444 {
445 UNIMPLEMENTED;
446 return ERROR_CALL_NOT_IMPLEMENTED;
447 }
448
449 DWORD _RpcUIResponse(
450 wchar_t *arg_1,
451 struct_C *arg_2,
452 struct_D *arg_3)
453 {
454 UNIMPLEMENTED;
455 return ERROR_CALL_NOT_IMPLEMENTED;
456 }
457
458 DWORD _RpcGetProfileKeyInfo(
459 wchar_t *arg_1,
460 DWORD arg_2,
461 GUID *pInterfaceGuid,
462 wchar_t *arg_4,
463 DWORD arg_5,
464 LPDWORD arg_6,
465 char *arg_7,
466 LPDWORD arg_8)
467 {
468 UNIMPLEMENTED;
469 return ERROR_CALL_NOT_IMPLEMENTED;
470 }
471
472 DWORD _RpcAsyncDoPlap(
473 wchar_t *arg_1,
474 GUID *pInterfaceGuid,
475 wchar_t *arg_3,
476 DWORD dwSize,
477 struct_E arg_5[])
478 {
479 UNIMPLEMENTED;
480 return ERROR_CALL_NOT_IMPLEMENTED;
481 }
482
483 DWORD _RpcQueryPlapCredentials(
484 wchar_t *arg_1,
485 LPDWORD dwSize,
486 struct_E **arg_3,
487 wchar_t **arg_4,
488 GUID *pInterfaceGuid,
489 LPDWORD arg_6,
490 LPDWORD arg_7,
491 LPDWORD arg_8,
492 LPDWORD arg_9)
493 {
494 UNIMPLEMENTED;
495 return ERROR_CALL_NOT_IMPLEMENTED;
496 }
497
498 DWORD _RpcCancelPlap(
499 wchar_t *arg_1,
500 GUID *pInterfaceGuid)
501 {
502 UNIMPLEMENTED;
503 return ERROR_CALL_NOT_IMPLEMENTED;
504 }
505
506 DWORD _RpcSetSecuritySettings(
507 WLANSVC_RPC_HANDLE hClientHandle,
508 WLAN_SECURABLE_OBJECT SecurableObject,
509 wchar_t *strModifiedSDDL)
510 {
511 UNIMPLEMENTED;
512 return ERROR_CALL_NOT_IMPLEMENTED;
513 }
514
515 DWORD _RpcGetSecuritySettings(
516 WLANSVC_RPC_HANDLE hClientHandle,
517 WLAN_SECURABLE_OBJECT SecurableObject,
518 WLAN_OPCODE_VALUE_TYPE *pValueType,
519 wchar_t **pstrCurrentSDDL,
520 LPDWORD pdwGrantedAccess)
521 {
522 UNIMPLEMENTED;
523 return ERROR_CALL_NOT_IMPLEMENTED;
524 }
525
526 void __RPC_FAR * __RPC_USER midl_user_allocate(SIZE_T len)
527 {
528 return HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, len);
529 }
530
531
532 void __RPC_USER midl_user_free(void __RPC_FAR * ptr)
533 {
534 HeapFree(GetProcessHeap(), 0, ptr);
535 }
536
537
538 void __RPC_USER WLANSVC_RPC_HANDLE_rundown(WLANSVC_RPC_HANDLE hClientHandle)
539 {
540 }
541