[SRVSVC][WKSSVC] Server and workstation service set their service bit when they are...
[reactos.git] / base / services / srvsvc / rpcserver.c
1 /*
2 * ReactOS Services
3 * Copyright (C) 2015 ReactOS Team
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License along
16 * with this program; if not, write to the Free Software Foundation, Inc.,
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 */
19 /*
20 * COPYRIGHT: See COPYING in the top level directory
21 * PROJECT: ReactOS Services
22 * FILE: base/services/srvsvc/rpcserver.c
23 * PURPOSE: Server service
24 * PROGRAMMER: Eric Kohl
25 */
26
27 /* INCLUDES *****************************************************************/
28
29 #include "precomp.h"
30
31 #include "ndk/kefuncs.h"
32 #include "ndk/rtlfuncs.h"
33 #include "winerror.h"
34 #include "lmerr.h"
35
36 WINE_DEFAULT_DEBUG_CHANNEL(srvsvc);
37
38 /* FUNCTIONS *****************************************************************/
39
40 DWORD
41 WINAPI
42 RpcThreadRoutine(
43 LPVOID lpParameter)
44 {
45 RPC_STATUS Status;
46
47 Status = RpcServerUseProtseqEpW(L"ncacn_np", 20, L"\\pipe\\srvsvc", NULL);
48 if (Status != RPC_S_OK)
49 {
50 ERR("RpcServerUseProtseqEpW() failed (Status %lx)\n", Status);
51 return 0;
52 }
53
54 Status = RpcServerRegisterIf(srvsvc_v3_0_s_ifspec, NULL, NULL);
55 if (Status != RPC_S_OK)
56 {
57 ERR("RpcServerRegisterIf() failed (Status %lx)\n", Status);
58 return 0;
59 }
60
61 Status = RpcServerListen(1, RPC_C_LISTEN_MAX_CALLS_DEFAULT, FALSE);
62 if (Status != RPC_S_OK)
63 {
64 ERR("RpcServerListen() failed (Status %lx)\n", Status);
65 }
66
67 return 0;
68 }
69
70
71 void __RPC_FAR * __RPC_USER midl_user_allocate(SIZE_T len)
72 {
73 return HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, len);
74 }
75
76
77 void __RPC_USER midl_user_free(void __RPC_FAR * ptr)
78 {
79 HeapFree(GetProcessHeap(), 0, ptr);
80 }
81
82
83 void __RPC_USER SHARE_DEL_HANDLE_rundown(SHARE_DEL_HANDLE hClientHandle)
84 {
85 }
86
87
88 /* Function 0 */
89 void
90 __stdcall
91 Opnum0NotUsedOnWire(void)
92 {
93 UNIMPLEMENTED;
94 }
95
96
97 /* Function 1 */
98 void
99 __stdcall
100 Opnum1NotUsedOnWire(void)
101 {
102 UNIMPLEMENTED;
103 }
104
105
106 /* Function 2 */
107 void
108 __stdcall
109 Opnum2NotUsedOnWire(void)
110 {
111 UNIMPLEMENTED;
112 }
113
114
115 /* Function 3 */
116 void
117 __stdcall
118 Opnum3NotUsedOnWire(void)
119 {
120 UNIMPLEMENTED;
121 }
122
123
124 /* Function 4 */
125 void
126 __stdcall
127 Opnum4NotUsedOnWire(void)
128 {
129 UNIMPLEMENTED;
130 }
131
132 /* Function 5 */
133 void
134 __stdcall
135 Opnum5NotUsedOnWire(void)
136 {
137 UNIMPLEMENTED;
138 }
139
140
141 /* Function 6 */
142 void
143 __stdcall
144 Opnum6NotUsedOnWire(void)
145 {
146 UNIMPLEMENTED;
147 }
148
149
150 /* Function 7 */
151 void
152 __stdcall
153 Opnum7NotUsedOnWire(void)
154 {
155 UNIMPLEMENTED;
156 }
157
158
159 /* Function 8 */
160 NET_API_STATUS
161 __stdcall
162 NetrConnectionEnum(
163 SRVSVC_HANDLE ServerName,
164 WCHAR *Qualifier,
165 LPCONNECT_ENUM_STRUCT InfoStruct,
166 DWORD PreferedMaximumLength,
167 DWORD *TotalEntries,
168 DWORD *ResumeHandle)
169 {
170 UNIMPLEMENTED;
171 return 0;
172 }
173
174
175 /* Function 9 */
176 NET_API_STATUS
177 __stdcall
178 NetrFileEnum(
179 SRVSVC_HANDLE ServerName,
180 WCHAR *BasePath,
181 WCHAR *UserName,
182 PFILE_ENUM_STRUCT InfoStruct,
183 DWORD PreferedMaximumLength,
184 DWORD *TotalEntries,
185 DWORD *ResumeHandle)
186 {
187 UNIMPLEMENTED;
188 return 0;
189 }
190
191
192 /* Function 10 */
193 NET_API_STATUS
194 __stdcall
195 NetrFileGetInfo(
196 SRVSVC_HANDLE ServerName,
197 DWORD FileId,
198 DWORD Level,
199 LPFILE_INFO InfoStruct)
200 {
201 UNIMPLEMENTED;
202 return 0;
203 }
204
205
206 /* Function 11 */
207 NET_API_STATUS
208 __stdcall
209 NetrFileClose(
210 SRVSVC_HANDLE ServerName,
211 DWORD FileId)
212 {
213 UNIMPLEMENTED;
214 return 0;
215 }
216
217
218 /* Function 12 */
219 NET_API_STATUS
220 __stdcall
221 NetrSessionEnum(
222 SRVSVC_HANDLE ServerName,
223 WCHAR *ClientName,
224 WCHAR *UserName,
225 PSESSION_ENUM_STRUCT InfoStruct,
226 DWORD PreferedMaximumLength,
227 DWORD *TotalEntries,
228 DWORD *ResumeHandle)
229 {
230 UNIMPLEMENTED;
231 return 0;
232 }
233
234
235 /* Function 13 */
236 NET_API_STATUS
237 __stdcall
238 NetrSessionDel(
239 SRVSVC_HANDLE ServerName,
240 WCHAR *ClientName,
241 WCHAR *UserName)
242 {
243 UNIMPLEMENTED;
244 return ERROR_CALL_NOT_IMPLEMENTED;
245 }
246
247
248 /* Function 14 */
249 NET_API_STATUS
250 __stdcall
251 NetrShareAdd(
252 SRVSVC_HANDLE ServerName,
253 DWORD Level,
254 LPSHARE_INFO InfoStruct,
255 DWORD *ParmErr)
256 {
257 UNIMPLEMENTED;
258 return ERROR_CALL_NOT_IMPLEMENTED;
259 }
260
261
262 /* Function 15 */
263 NET_API_STATUS
264 __stdcall
265 NetrShareEnum(
266 SRVSVC_HANDLE ServerName,
267 LPSHARE_ENUM_STRUCT InfoStruct,
268 DWORD PreferedMaximumLength,
269 DWORD *TotalEntries,
270 DWORD *ResumeHandle)
271 {
272 UNIMPLEMENTED;
273 return ERROR_CALL_NOT_IMPLEMENTED;
274 }
275
276
277 /* Function 16 */
278 NET_API_STATUS
279 __stdcall
280 NetrShareGetInfo(
281 SRVSVC_HANDLE ServerName,
282 WCHAR *NetName,
283 DWORD Level,
284 LPSHARE_INFO InfoStruct)
285 {
286 UNIMPLEMENTED;
287 return ERROR_CALL_NOT_IMPLEMENTED;
288 }
289
290
291 /* Function 17 */
292 NET_API_STATUS
293 __stdcall
294 NetrShareSetInfo(
295 SRVSVC_HANDLE ServerName,
296 WCHAR *NetName,
297 DWORD Level,
298 LPSHARE_INFO ShareInfo,
299 DWORD *ParmErr)
300 {
301 UNIMPLEMENTED;
302 return ERROR_CALL_NOT_IMPLEMENTED;
303 }
304
305
306 /* Function 18 */
307 NET_API_STATUS
308 __stdcall
309 NetrShareDel(
310 SRVSVC_HANDLE ServerName,
311 WCHAR *NetName,
312 DWORD Reserved)
313 {
314 UNIMPLEMENTED;
315 return ERROR_CALL_NOT_IMPLEMENTED;
316 }
317
318
319 /* Function 19 */
320 NET_API_STATUS
321 __stdcall
322 NetrShareDelSticky(
323 SRVSVC_HANDLE ServerName,
324 WCHAR *NetName,
325 DWORD Reserved)
326 {
327 UNIMPLEMENTED;
328 return ERROR_CALL_NOT_IMPLEMENTED;
329 }
330
331
332 /* Function 20 */
333 NET_API_STATUS
334 __stdcall
335 NetrShareCheck(
336 SRVSVC_HANDLE ServerName,
337 WCHAR *Device,
338 DWORD *Type)
339 {
340 UNIMPLEMENTED;
341 return ERROR_CALL_NOT_IMPLEMENTED;
342 }
343
344
345 /* Function 21 */
346 NET_API_STATUS
347 __stdcall
348 NetrServerGetInfo(
349 SRVSVC_HANDLE ServerName,
350 DWORD Level,
351 LPSERVER_INFO InfoStruct)
352 {
353 UNIMPLEMENTED;
354 return ERROR_CALL_NOT_IMPLEMENTED;
355 }
356
357
358 /* Function 22 */
359 NET_API_STATUS
360 __stdcall
361 NetrServerSetInfo(
362 SRVSVC_HANDLE ServerName,
363 DWORD Level,
364 LPSERVER_INFO ServerInfo,
365 DWORD *ParmErr)
366 {
367 UNIMPLEMENTED;
368 return ERROR_CALL_NOT_IMPLEMENTED;
369 }
370
371
372 /* Function 23 */
373 NET_API_STATUS
374 __stdcall
375 NetrServerDiskEnum(
376 SRVSVC_HANDLE ServerName,
377 DWORD Level,
378 DISK_ENUM_CONTAINER *DiskInfoStruct,
379 DWORD PreferedMaximumLength,
380 DWORD *TotalEntries,
381 DWORD *ResumeHandle)
382 {
383 UNIMPLEMENTED;
384 return ERROR_CALL_NOT_IMPLEMENTED;
385 }
386
387
388 /* Function 24 */
389 NET_API_STATUS
390 __stdcall
391 NetrServerStatisticsGet(
392 SRVSVC_HANDLE ServerName,
393 WCHAR *Service,
394 DWORD Level,
395 DWORD Options,
396 LPSTAT_SERVER_0 *InfoStruct)
397 {
398 PSTAT_SERVER_0 pStatBuffer;
399
400 TRACE("NetrServerStatisticsGet(%p %p %lu 0x%lx %p)\n",
401 ServerName, Service, Level, Options, InfoStruct);
402
403 if (Level != 0)
404 return ERROR_INVALID_LEVEL;
405
406 if (Options != 0)
407 return ERROR_INVALID_PARAMETER;
408
409 pStatBuffer = midl_user_allocate(sizeof(STAT_SERVER_0));
410 if (pStatBuffer == NULL)
411 return ERROR_NOT_ENOUGH_MEMORY;
412
413 ZeroMemory(pStatBuffer, sizeof(STAT_SERVER_0));
414
415 // FIXME: Return the actual statistcs data!
416
417 *InfoStruct = pStatBuffer;
418
419 return NERR_Success;
420 }
421
422
423 /* Function 25 */
424 NET_API_STATUS
425 __stdcall
426 NetrServerTransportAdd(
427 SRVSVC_HANDLE ServerName,
428 DWORD Level,
429 LPSERVER_TRANSPORT_INFO_0 Buffer)
430 {
431 UNIMPLEMENTED;
432 return ERROR_CALL_NOT_IMPLEMENTED;
433 }
434
435
436 /* Function 26 */
437 NET_API_STATUS
438 __stdcall
439 NetrServerTransportEnum(
440 SRVSVC_HANDLE ServerName,
441 LPSERVER_XPORT_ENUM_STRUCT InfoStruct,
442 DWORD PreferedMaximumLength,
443 DWORD *TotalEntries,
444 DWORD *ResumeHandle)
445 {
446 UNIMPLEMENTED;
447 return ERROR_CALL_NOT_IMPLEMENTED;
448 }
449
450
451 /* Function 27 */
452 NET_API_STATUS
453 __stdcall
454 NetrServerTransportDel(
455 SRVSVC_HANDLE ServerName,
456 DWORD Level,
457 LPSERVER_TRANSPORT_INFO_0 Buffer)
458 {
459 UNIMPLEMENTED;
460 return ERROR_CALL_NOT_IMPLEMENTED;
461 }
462
463
464 /* Function 28 */
465 NET_API_STATUS
466 __stdcall
467 NetrRemoteTOD(
468 SRVSVC_HANDLE ServerName,
469 LPTIME_OF_DAY_INFO *BufferPtr)
470 {
471 SYSTEMTIME SystemTime;
472 LARGE_INTEGER Time;
473 TIME_ZONE_INFORMATION TimeZoneInfo;
474 DWORD TimeZoneId;
475 LPTIME_OF_DAY_INFO lpTod;
476
477 TRACE("NetrRemoteTOD(%p %p)\n", ServerName, BufferPtr);
478
479 *BufferPtr = midl_user_allocate(sizeof(TIME_OF_DAY_INFO));
480 if (*BufferPtr == NULL)
481 return ERROR_NOT_ENOUGH_MEMORY;
482
483 lpTod = *BufferPtr;
484
485 /* Set the seconds since 1970 */
486 NtQuerySystemTime(&Time);
487 RtlTimeToSecondsSince1970(&Time,
488 &lpTod->tod_elapsedt);
489
490 /* Set the tick count */
491 lpTod->tod_msecs = GetTickCount();
492
493 /* Set the timezone */
494 TimeZoneId = GetTimeZoneInformation(&TimeZoneInfo);
495
496 switch (TimeZoneId)
497 {
498 case TIME_ZONE_ID_UNKNOWN:
499 lpTod->tod_timezone = TimeZoneInfo.Bias;
500 break;
501
502 case TIME_ZONE_ID_STANDARD:
503 lpTod->tod_timezone = TimeZoneInfo.Bias + TimeZoneInfo.StandardBias;
504 break;
505
506 case TIME_ZONE_ID_DAYLIGHT:
507 lpTod->tod_timezone = TimeZoneInfo.Bias + TimeZoneInfo.DaylightBias;
508 break;
509
510 default:
511 lpTod->tod_timezone = 0;
512 }
513
514 /* Set the ??? */
515 lpTod->tod_tinterval = 310;
516
517 /* Set the date and time */
518 GetSystemTime(&SystemTime);
519 lpTod->tod_hours = SystemTime.wHour;
520 lpTod->tod_mins = SystemTime.wMinute;
521 lpTod->tod_secs = SystemTime.wSecond;
522 lpTod->tod_hunds = SystemTime.wMilliseconds / 10;
523 lpTod->tod_day = SystemTime.wDay;
524 lpTod->tod_month = SystemTime.wMonth;
525 lpTod->tod_year = SystemTime.wYear;
526 lpTod->tod_weekday = SystemTime.wDayOfWeek;
527
528 return NERR_Success;
529 }
530
531
532 /* Function 29 */
533 void
534 __stdcall
535 Opnum29NotUsedOnWire(void)
536 {
537 UNIMPLEMENTED;
538 }
539
540
541 /* Function 30 */
542 NET_API_STATUS
543 __stdcall
544 NetprPathType(
545 SRVSVC_HANDLE ServerName,
546 WCHAR *PathName,
547 DWORD *PathType,
548 DWORD Flags)
549 {
550 UNIMPLEMENTED;
551 return ERROR_CALL_NOT_IMPLEMENTED;
552 }
553
554
555 /* Function 31 */
556 NET_API_STATUS
557 __stdcall
558 NetprPathCanonicalize(
559 SRVSVC_HANDLE ServerName,
560 WCHAR *PathName,
561 unsigned char *Outbuf,
562 DWORD OutbufLen,
563 WCHAR *Prefix,
564 DWORD *PathType,
565 DWORD Flags)
566 {
567 UNIMPLEMENTED;
568 return ERROR_CALL_NOT_IMPLEMENTED;
569 }
570
571
572 /* Function 32 */
573 long
574 __stdcall
575 NetprPathCompare(
576 SRVSVC_HANDLE ServerName,
577 WCHAR *PathName1,
578 WCHAR *PathName2,
579 DWORD PathType,
580 DWORD Flags)
581 {
582 UNIMPLEMENTED;
583 return ERROR_CALL_NOT_IMPLEMENTED;
584 }
585
586
587 /* Function 33 */
588 NET_API_STATUS
589 __stdcall
590 NetprNameValidate(
591 SRVSVC_HANDLE ServerName,
592 WCHAR * Name,
593 DWORD NameType,
594 DWORD Flags)
595 {
596 UNIMPLEMENTED;
597 return ERROR_CALL_NOT_IMPLEMENTED;
598 }
599
600
601 /* Function 34 */
602 NET_API_STATUS
603 __stdcall
604 NetprNameCanonicalize(
605 SRVSVC_HANDLE ServerName,
606 WCHAR *Name,
607 WCHAR *Outbuf,
608 DWORD OutbufLen,
609 DWORD NameType,
610 DWORD Flags)
611 {
612 UNIMPLEMENTED;
613 return ERROR_CALL_NOT_IMPLEMENTED;
614 }
615
616
617 /* Function 35 */
618 long
619 __stdcall
620 NetprNameCompare(
621 SRVSVC_HANDLE ServerName,
622 WCHAR *Name1,
623 WCHAR *Name2,
624 DWORD NameType,
625 DWORD Flags)
626 {
627 UNIMPLEMENTED;
628 return ERROR_CALL_NOT_IMPLEMENTED;
629 }
630
631
632 /* Function 36 */
633 NET_API_STATUS
634 __stdcall
635 NetrShareEnumSticky(
636 SRVSVC_HANDLE ServerName,
637 LPSHARE_ENUM_STRUCT InfoStruct,
638 DWORD PreferedMaximumLength,
639 DWORD *TotalEntries,
640 DWORD *ResumeHandle)
641 {
642 UNIMPLEMENTED;
643 return ERROR_CALL_NOT_IMPLEMENTED;
644 }
645
646
647 /* Function 37 */
648 NET_API_STATUS
649 __stdcall
650 NetrShareDelStart(
651 SRVSVC_HANDLE ServerName,
652 WCHAR *NetName,
653 DWORD Reserved,
654 PSHARE_DEL_HANDLE ContextHandle)
655 {
656 UNIMPLEMENTED;
657 return ERROR_CALL_NOT_IMPLEMENTED;
658 }
659
660
661 /* Function 38 */
662 NET_API_STATUS
663 __stdcall
664 NetrShareDelCommit(
665 PSHARE_DEL_HANDLE ContextHandle)
666 {
667 UNIMPLEMENTED;
668 return ERROR_CALL_NOT_IMPLEMENTED;
669 }
670
671
672 /* Function 39 */
673 DWORD
674 __stdcall
675 NetrpGetFileSecurity(
676 SRVSVC_HANDLE ServerName,
677 WCHAR *ShareName,
678 WCHAR *lpFileName,
679 SECURITY_INFORMATION RequestedInformation,
680 PADT_SECURITY_DESCRIPTOR *SecurityDescriptor)
681 {
682 UNIMPLEMENTED;
683 return ERROR_CALL_NOT_IMPLEMENTED;
684 }
685
686
687 /* Function 40 */
688 DWORD
689 __stdcall
690 NetrpSetFileSecurity(
691 SRVSVC_HANDLE ServerName,
692 WCHAR *ShareName,
693 WCHAR *lpFileName,
694 SECURITY_INFORMATION SecurityInformation,
695 PADT_SECURITY_DESCRIPTOR SecurityDescriptor)
696 {
697 UNIMPLEMENTED;
698 return ERROR_CALL_NOT_IMPLEMENTED;
699 }
700
701
702 /* Function 41 */
703 NET_API_STATUS
704 __stdcall
705 NetrServerTransportAddEx(
706 SRVSVC_HANDLE ServerName,
707 DWORD Level,
708 LPTRANSPORT_INFO Buffer)
709 {
710 UNIMPLEMENTED;
711 return ERROR_CALL_NOT_IMPLEMENTED;
712 }
713
714
715 /* Function 42 */
716 void
717 __stdcall
718 Opnum42NotUsedOnWire(void)
719 {
720 UNIMPLEMENTED;
721 }
722
723
724 /* Function 43 */
725 NET_API_STATUS
726 __stdcall
727 NetrDfsGetVersion(
728 SRVSVC_HANDLE ServerName,
729 DWORD *Version)
730 {
731 UNIMPLEMENTED;
732 return ERROR_CALL_NOT_IMPLEMENTED;
733 }
734
735
736 /* Function 44 */
737 NET_API_STATUS
738 __stdcall
739 NetrDfsCreateLocalPartition(
740 SRVSVC_HANDLE ServerName,
741 WCHAR *ShareName,
742 GUID *EntryUid,
743 WCHAR *EntryPrefix,
744 WCHAR *ShortName,
745 LPNET_DFS_ENTRY_ID_CONTAINER RelationInfo,
746 int Force)
747 {
748 UNIMPLEMENTED;
749 return ERROR_CALL_NOT_IMPLEMENTED;
750 }
751
752
753 /* Function 45 */
754 NET_API_STATUS
755 __stdcall
756 NetrDfsDeleteLocalPartition(
757 SRVSVC_HANDLE ServerName,
758 GUID *Uid,
759 WCHAR *Prefix)
760 {
761 UNIMPLEMENTED;
762 return ERROR_CALL_NOT_IMPLEMENTED;
763 }
764
765
766 /* Function 46 */
767 NET_API_STATUS
768 __stdcall
769 NetrDfsSetLocalVolumeState(
770 SRVSVC_HANDLE ServerName,
771 GUID *Uid,
772 WCHAR *Prefix,
773 unsigned long State)
774 {
775 UNIMPLEMENTED;
776 return ERROR_CALL_NOT_IMPLEMENTED;
777 }
778
779
780 /* Function 47 */
781 void
782 __stdcall
783 Opnum47NotUsedOnWire(void)
784 {
785 UNIMPLEMENTED;
786 }
787
788
789 /* Function 48 */
790 NET_API_STATUS
791 __stdcall
792 NetrDfsCreateExitPoint(
793 SRVSVC_HANDLE ServerName,
794 GUID *Uid,
795 WCHAR *Prefix,
796 unsigned long Type,
797 DWORD ShortPrefixLen,
798 WCHAR *ShortPrefix)
799 {
800 UNIMPLEMENTED;
801 return ERROR_CALL_NOT_IMPLEMENTED;
802 }
803
804
805 /* Function 49 */
806 NET_API_STATUS
807 __stdcall
808 NetrDfsDeleteExitPoint(
809 SRVSVC_HANDLE ServerName,
810 GUID *Uid,
811 WCHAR *Prefix,
812 unsigned long Type)
813 {
814 UNIMPLEMENTED;
815 return ERROR_CALL_NOT_IMPLEMENTED;
816 }
817
818
819 /* Function 50 */
820 NET_API_STATUS
821 __stdcall
822 NetrDfsModifyPrefix(
823 SRVSVC_HANDLE ServerName,
824 GUID *Uid,
825 WCHAR *Prefix)
826 {
827 UNIMPLEMENTED;
828 return ERROR_CALL_NOT_IMPLEMENTED;
829 }
830
831
832 /* Function 51 */
833 NET_API_STATUS
834 __stdcall
835 NetrDfsFixLocalVolume(
836 SRVSVC_HANDLE ServerName,
837 WCHAR *VolumeName,
838 unsigned long EntryType,
839 unsigned long ServiceType,
840 WCHAR *StgId,
841 GUID *EntryUid,
842 WCHAR *EntryPrefix,
843 LPNET_DFS_ENTRY_ID_CONTAINER RelationInfo,
844 unsigned long CreateDisposition)
845 {
846 UNIMPLEMENTED;
847 return ERROR_CALL_NOT_IMPLEMENTED;
848 }
849
850
851 /* Function 52 */
852 NET_API_STATUS
853 __stdcall
854 NetrDfsManagerReportSiteInfo(
855 SRVSVC_HANDLE ServerName,
856 LPDFS_SITELIST_INFO *ppSiteInfo)
857 {
858 UNIMPLEMENTED;
859 return ERROR_CALL_NOT_IMPLEMENTED;
860 }
861
862
863 /* Function 53 */
864 NET_API_STATUS
865 __stdcall
866 NetrServerTransportDelEx(
867 SRVSVC_HANDLE ServerName,
868 DWORD Level,
869 LPTRANSPORT_INFO Buffer)
870 {
871 UNIMPLEMENTED;
872 return ERROR_CALL_NOT_IMPLEMENTED;
873 }
874
875 /* EOF */