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