e47eafb2c0ccda3b1375775162af9badb42d7c2e
[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 - Not used on wire */
533 NET_API_STATUS
534 __stdcall
535 NetrServerSetServiceBits(
536 SRVSVC_HANDLE ServerName,
537 WCHAR *Transport,
538 DWORD ServiceBits,
539 DWORD UpdateImmediately)
540 {
541 UNIMPLEMENTED;
542 return ERROR_CALL_NOT_IMPLEMENTED;
543 }
544
545
546 /* Function 30 */
547 NET_API_STATUS
548 __stdcall
549 NetprPathType(
550 SRVSVC_HANDLE ServerName,
551 WCHAR *PathName,
552 DWORD *PathType,
553 DWORD Flags)
554 {
555 UNIMPLEMENTED;
556 return ERROR_CALL_NOT_IMPLEMENTED;
557 }
558
559
560 /* Function 31 */
561 NET_API_STATUS
562 __stdcall
563 NetprPathCanonicalize(
564 SRVSVC_HANDLE ServerName,
565 WCHAR *PathName,
566 unsigned char *Outbuf,
567 DWORD OutbufLen,
568 WCHAR *Prefix,
569 DWORD *PathType,
570 DWORD Flags)
571 {
572 UNIMPLEMENTED;
573 return ERROR_CALL_NOT_IMPLEMENTED;
574 }
575
576
577 /* Function 32 */
578 long
579 __stdcall
580 NetprPathCompare(
581 SRVSVC_HANDLE ServerName,
582 WCHAR *PathName1,
583 WCHAR *PathName2,
584 DWORD PathType,
585 DWORD Flags)
586 {
587 UNIMPLEMENTED;
588 return ERROR_CALL_NOT_IMPLEMENTED;
589 }
590
591
592 /* Function 33 */
593 NET_API_STATUS
594 __stdcall
595 NetprNameValidate(
596 SRVSVC_HANDLE ServerName,
597 WCHAR * Name,
598 DWORD NameType,
599 DWORD Flags)
600 {
601 UNIMPLEMENTED;
602 return ERROR_CALL_NOT_IMPLEMENTED;
603 }
604
605
606 /* Function 34 */
607 NET_API_STATUS
608 __stdcall
609 NetprNameCanonicalize(
610 SRVSVC_HANDLE ServerName,
611 WCHAR *Name,
612 WCHAR *Outbuf,
613 DWORD OutbufLen,
614 DWORD NameType,
615 DWORD Flags)
616 {
617 UNIMPLEMENTED;
618 return ERROR_CALL_NOT_IMPLEMENTED;
619 }
620
621
622 /* Function 35 */
623 long
624 __stdcall
625 NetprNameCompare(
626 SRVSVC_HANDLE ServerName,
627 WCHAR *Name1,
628 WCHAR *Name2,
629 DWORD NameType,
630 DWORD Flags)
631 {
632 UNIMPLEMENTED;
633 return ERROR_CALL_NOT_IMPLEMENTED;
634 }
635
636
637 /* Function 36 */
638 NET_API_STATUS
639 __stdcall
640 NetrShareEnumSticky(
641 SRVSVC_HANDLE ServerName,
642 LPSHARE_ENUM_STRUCT InfoStruct,
643 DWORD PreferedMaximumLength,
644 DWORD *TotalEntries,
645 DWORD *ResumeHandle)
646 {
647 UNIMPLEMENTED;
648 return ERROR_CALL_NOT_IMPLEMENTED;
649 }
650
651
652 /* Function 37 */
653 NET_API_STATUS
654 __stdcall
655 NetrShareDelStart(
656 SRVSVC_HANDLE ServerName,
657 WCHAR *NetName,
658 DWORD Reserved,
659 PSHARE_DEL_HANDLE ContextHandle)
660 {
661 UNIMPLEMENTED;
662 return ERROR_CALL_NOT_IMPLEMENTED;
663 }
664
665
666 /* Function 38 */
667 NET_API_STATUS
668 __stdcall
669 NetrShareDelCommit(
670 PSHARE_DEL_HANDLE ContextHandle)
671 {
672 UNIMPLEMENTED;
673 return ERROR_CALL_NOT_IMPLEMENTED;
674 }
675
676
677 /* Function 39 */
678 DWORD
679 __stdcall
680 NetrpGetFileSecurity(
681 SRVSVC_HANDLE ServerName,
682 WCHAR *ShareName,
683 WCHAR *lpFileName,
684 SECURITY_INFORMATION RequestedInformation,
685 PADT_SECURITY_DESCRIPTOR *SecurityDescriptor)
686 {
687 UNIMPLEMENTED;
688 return ERROR_CALL_NOT_IMPLEMENTED;
689 }
690
691
692 /* Function 40 */
693 DWORD
694 __stdcall
695 NetrpSetFileSecurity(
696 SRVSVC_HANDLE ServerName,
697 WCHAR *ShareName,
698 WCHAR *lpFileName,
699 SECURITY_INFORMATION SecurityInformation,
700 PADT_SECURITY_DESCRIPTOR SecurityDescriptor)
701 {
702 UNIMPLEMENTED;
703 return ERROR_CALL_NOT_IMPLEMENTED;
704 }
705
706
707 /* Function 41 */
708 NET_API_STATUS
709 __stdcall
710 NetrServerTransportAddEx(
711 SRVSVC_HANDLE ServerName,
712 DWORD Level,
713 LPTRANSPORT_INFO Buffer)
714 {
715 UNIMPLEMENTED;
716 return ERROR_CALL_NOT_IMPLEMENTED;
717 }
718
719
720 /* Function 42 */
721 void
722 __stdcall
723 Opnum42NotUsedOnWire(void)
724 {
725 UNIMPLEMENTED;
726 }
727
728
729 /* Function 43 */
730 NET_API_STATUS
731 __stdcall
732 NetrDfsGetVersion(
733 SRVSVC_HANDLE ServerName,
734 DWORD *Version)
735 {
736 UNIMPLEMENTED;
737 return ERROR_CALL_NOT_IMPLEMENTED;
738 }
739
740
741 /* Function 44 */
742 NET_API_STATUS
743 __stdcall
744 NetrDfsCreateLocalPartition(
745 SRVSVC_HANDLE ServerName,
746 WCHAR *ShareName,
747 GUID *EntryUid,
748 WCHAR *EntryPrefix,
749 WCHAR *ShortName,
750 LPNET_DFS_ENTRY_ID_CONTAINER RelationInfo,
751 int Force)
752 {
753 UNIMPLEMENTED;
754 return ERROR_CALL_NOT_IMPLEMENTED;
755 }
756
757
758 /* Function 45 */
759 NET_API_STATUS
760 __stdcall
761 NetrDfsDeleteLocalPartition(
762 SRVSVC_HANDLE ServerName,
763 GUID *Uid,
764 WCHAR *Prefix)
765 {
766 UNIMPLEMENTED;
767 return ERROR_CALL_NOT_IMPLEMENTED;
768 }
769
770
771 /* Function 46 */
772 NET_API_STATUS
773 __stdcall
774 NetrDfsSetLocalVolumeState(
775 SRVSVC_HANDLE ServerName,
776 GUID *Uid,
777 WCHAR *Prefix,
778 unsigned long State)
779 {
780 UNIMPLEMENTED;
781 return ERROR_CALL_NOT_IMPLEMENTED;
782 }
783
784
785 /* Function 47 */
786 void
787 __stdcall
788 Opnum47NotUsedOnWire(void)
789 {
790 UNIMPLEMENTED;
791 }
792
793
794 /* Function 48 */
795 NET_API_STATUS
796 __stdcall
797 NetrDfsCreateExitPoint(
798 SRVSVC_HANDLE ServerName,
799 GUID *Uid,
800 WCHAR *Prefix,
801 unsigned long Type,
802 DWORD ShortPrefixLen,
803 WCHAR *ShortPrefix)
804 {
805 UNIMPLEMENTED;
806 return ERROR_CALL_NOT_IMPLEMENTED;
807 }
808
809
810 /* Function 49 */
811 NET_API_STATUS
812 __stdcall
813 NetrDfsDeleteExitPoint(
814 SRVSVC_HANDLE ServerName,
815 GUID *Uid,
816 WCHAR *Prefix,
817 unsigned long Type)
818 {
819 UNIMPLEMENTED;
820 return ERROR_CALL_NOT_IMPLEMENTED;
821 }
822
823
824 /* Function 50 */
825 NET_API_STATUS
826 __stdcall
827 NetrDfsModifyPrefix(
828 SRVSVC_HANDLE ServerName,
829 GUID *Uid,
830 WCHAR *Prefix)
831 {
832 UNIMPLEMENTED;
833 return ERROR_CALL_NOT_IMPLEMENTED;
834 }
835
836
837 /* Function 51 */
838 NET_API_STATUS
839 __stdcall
840 NetrDfsFixLocalVolume(
841 SRVSVC_HANDLE ServerName,
842 WCHAR *VolumeName,
843 unsigned long EntryType,
844 unsigned long ServiceType,
845 WCHAR *StgId,
846 GUID *EntryUid,
847 WCHAR *EntryPrefix,
848 LPNET_DFS_ENTRY_ID_CONTAINER RelationInfo,
849 unsigned long CreateDisposition)
850 {
851 UNIMPLEMENTED;
852 return ERROR_CALL_NOT_IMPLEMENTED;
853 }
854
855
856 /* Function 52 */
857 NET_API_STATUS
858 __stdcall
859 NetrDfsManagerReportSiteInfo(
860 SRVSVC_HANDLE ServerName,
861 LPDFS_SITELIST_INFO *ppSiteInfo)
862 {
863 UNIMPLEMENTED;
864 return ERROR_CALL_NOT_IMPLEMENTED;
865 }
866
867
868 /* Function 53 */
869 NET_API_STATUS
870 __stdcall
871 NetrServerTransportDelEx(
872 SRVSVC_HANDLE ServerName,
873 DWORD Level,
874 LPTRANSPORT_INFO Buffer)
875 {
876 UNIMPLEMENTED;
877 return ERROR_CALL_NOT_IMPLEMENTED;
878 }
879
880 /* EOF */