d1d9f3dc3d1b4324c8ae514334dc3a2b3609e946
[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 WCHAR szComputerName[MAX_COMPUTERNAME_LENGTH + 1];
354 DWORD dwComputerNameLength, dwSize;
355 PSERVER_INFO pServerInfo = NULL;
356 OSVERSIONINFOW VersionInfo;
357
358 TRACE("NetrServerGetInfo(%p %lu %p)\n",
359 ServerName, Level, InfoStruct);
360
361 dwComputerNameLength = MAX_COMPUTERNAME_LENGTH + 1;
362 GetComputerNameW(szComputerName, &dwComputerNameLength);
363 dwComputerNameLength++; /* include NULL terminator */
364
365 VersionInfo.dwOSVersionInfoSize = sizeof(VersionInfo);
366 GetVersionExW(&VersionInfo);
367
368 switch (Level)
369 {
370 case 100:
371 dwSize = sizeof(SERVER_INFO_100) +
372 dwComputerNameLength * sizeof(WCHAR);
373 pServerInfo = midl_user_allocate(dwSize);
374 if (pServerInfo == NULL)
375 return ERROR_NOT_ENOUGH_MEMORY;
376
377 pServerInfo->ServerInfo100.sv100_platform_id = PLATFORM_ID_NT;
378 pServerInfo->ServerInfo100.sv100_name = (LPWSTR)((ULONG_PTR)pServerInfo + sizeof(SERVER_INFO_100));
379 wcscpy(pServerInfo->ServerInfo100.sv100_name, szComputerName);
380
381 *InfoStruct = pServerInfo;
382 break;
383
384 case 101:
385 dwSize = sizeof(SERVER_INFO_101) +
386 dwComputerNameLength * sizeof(WCHAR);
387 pServerInfo = midl_user_allocate(dwSize);
388 if (pServerInfo == NULL)
389 return ERROR_NOT_ENOUGH_MEMORY;
390
391 pServerInfo->ServerInfo101.sv101_platform_id = PLATFORM_ID_NT;
392 pServerInfo->ServerInfo101.sv101_name = (LPWSTR)((ULONG_PTR)pServerInfo + sizeof(SERVER_INFO_101));
393 wcscpy(pServerInfo->ServerInfo101.sv101_name, szComputerName);
394
395 pServerInfo->ServerInfo101.sv101_version_major = VersionInfo.dwMajorVersion;
396 pServerInfo->ServerInfo101.sv101_version_minor = VersionInfo.dwMinorVersion;
397 pServerInfo->ServerInfo101.sv101_type = SV_TYPE_NT; /* FIXME */
398 pServerInfo->ServerInfo101.sv101_comment = NULL; /* FIXME */
399
400 *InfoStruct = pServerInfo;
401 break;
402
403 case 102:
404 dwSize = sizeof(SERVER_INFO_102) +
405 dwComputerNameLength * sizeof(WCHAR);
406 pServerInfo = midl_user_allocate(dwSize);
407 if (pServerInfo == NULL)
408 return ERROR_NOT_ENOUGH_MEMORY;
409
410 pServerInfo->ServerInfo102.sv102_platform_id = PLATFORM_ID_NT;
411 pServerInfo->ServerInfo102.sv102_name = (LPWSTR)((ULONG_PTR)pServerInfo + sizeof(SERVER_INFO_102));
412 wcscpy(pServerInfo->ServerInfo102.sv102_name, szComputerName);
413
414 pServerInfo->ServerInfo102.sv102_version_major = VersionInfo.dwMajorVersion;
415 pServerInfo->ServerInfo102.sv102_version_minor = VersionInfo.dwMinorVersion;
416 pServerInfo->ServerInfo102.sv102_type = SV_TYPE_NT;
417 pServerInfo->ServerInfo102.sv102_comment = NULL; /* FIXME */
418
419 pServerInfo->ServerInfo102.sv102_users = 0; /* FIXME */
420 pServerInfo->ServerInfo102.sv102_disc = 0; /* FIXME */
421 pServerInfo->ServerInfo102.sv102_hidden = SV_VISIBLE; /* FIXME */
422 pServerInfo->ServerInfo102.sv102_announce = 0; /* FIXME */
423 pServerInfo->ServerInfo102.sv102_anndelta = 0; /* FIXME */
424 pServerInfo->ServerInfo102.sv102_licenses = 0; /* FIXME */
425 pServerInfo->ServerInfo102.sv102_userpath = NULL; /* FIXME */
426
427 *InfoStruct = pServerInfo;
428 break;
429
430 default:
431 FIXME("level %d unimplemented\n", Level);
432 return ERROR_INVALID_LEVEL;
433 }
434
435 return NERR_Success;
436 }
437
438
439 /* Function 22 */
440 NET_API_STATUS
441 __stdcall
442 NetrServerSetInfo(
443 SRVSVC_HANDLE ServerName,
444 DWORD Level,
445 LPSERVER_INFO ServerInfo,
446 DWORD *ParmErr)
447 {
448 UNIMPLEMENTED;
449 return ERROR_CALL_NOT_IMPLEMENTED;
450 }
451
452
453 /* Function 23 */
454 NET_API_STATUS
455 __stdcall
456 NetrServerDiskEnum(
457 SRVSVC_HANDLE ServerName,
458 DWORD Level,
459 DISK_ENUM_CONTAINER *DiskInfoStruct,
460 DWORD PreferedMaximumLength,
461 DWORD *TotalEntries,
462 DWORD *ResumeHandle)
463 {
464 UNIMPLEMENTED;
465 return ERROR_CALL_NOT_IMPLEMENTED;
466 }
467
468
469 /* Function 24 */
470 NET_API_STATUS
471 __stdcall
472 NetrServerStatisticsGet(
473 SRVSVC_HANDLE ServerName,
474 WCHAR *Service,
475 DWORD Level,
476 DWORD Options,
477 LPSTAT_SERVER_0 *InfoStruct)
478 {
479 PSTAT_SERVER_0 pStatBuffer;
480
481 TRACE("NetrServerStatisticsGet(%p %p %lu 0x%lx %p)\n",
482 ServerName, Service, Level, Options, InfoStruct);
483
484 if (Level != 0)
485 return ERROR_INVALID_LEVEL;
486
487 if (Options != 0)
488 return ERROR_INVALID_PARAMETER;
489
490 pStatBuffer = midl_user_allocate(sizeof(STAT_SERVER_0));
491 if (pStatBuffer == NULL)
492 return ERROR_NOT_ENOUGH_MEMORY;
493
494 ZeroMemory(pStatBuffer, sizeof(STAT_SERVER_0));
495
496 // FIXME: Return the actual statistcs data!
497
498 *InfoStruct = pStatBuffer;
499
500 return NERR_Success;
501 }
502
503
504 /* Function 25 */
505 NET_API_STATUS
506 __stdcall
507 NetrServerTransportAdd(
508 SRVSVC_HANDLE ServerName,
509 DWORD Level,
510 LPSERVER_TRANSPORT_INFO_0 Buffer)
511 {
512 UNIMPLEMENTED;
513 return ERROR_CALL_NOT_IMPLEMENTED;
514 }
515
516
517 /* Function 26 */
518 NET_API_STATUS
519 __stdcall
520 NetrServerTransportEnum(
521 SRVSVC_HANDLE ServerName,
522 LPSERVER_XPORT_ENUM_STRUCT InfoStruct,
523 DWORD PreferedMaximumLength,
524 DWORD *TotalEntries,
525 DWORD *ResumeHandle)
526 {
527 UNIMPLEMENTED;
528 return ERROR_CALL_NOT_IMPLEMENTED;
529 }
530
531
532 /* Function 27 */
533 NET_API_STATUS
534 __stdcall
535 NetrServerTransportDel(
536 SRVSVC_HANDLE ServerName,
537 DWORD Level,
538 LPSERVER_TRANSPORT_INFO_0 Buffer)
539 {
540 UNIMPLEMENTED;
541 return ERROR_CALL_NOT_IMPLEMENTED;
542 }
543
544
545 /* Function 28 */
546 NET_API_STATUS
547 __stdcall
548 NetrRemoteTOD(
549 SRVSVC_HANDLE ServerName,
550 LPTIME_OF_DAY_INFO *BufferPtr)
551 {
552 SYSTEMTIME SystemTime;
553 LARGE_INTEGER Time;
554 TIME_ZONE_INFORMATION TimeZoneInfo;
555 DWORD TimeZoneId;
556 LPTIME_OF_DAY_INFO lpTod;
557
558 TRACE("NetrRemoteTOD(%p %p)\n", ServerName, BufferPtr);
559
560 *BufferPtr = midl_user_allocate(sizeof(TIME_OF_DAY_INFO));
561 if (*BufferPtr == NULL)
562 return ERROR_NOT_ENOUGH_MEMORY;
563
564 lpTod = *BufferPtr;
565
566 /* Set the seconds since 1970 */
567 NtQuerySystemTime(&Time);
568 RtlTimeToSecondsSince1970(&Time,
569 &lpTod->tod_elapsedt);
570
571 /* Set the tick count */
572 lpTod->tod_msecs = GetTickCount();
573
574 /* Set the timezone */
575 TimeZoneId = GetTimeZoneInformation(&TimeZoneInfo);
576
577 switch (TimeZoneId)
578 {
579 case TIME_ZONE_ID_UNKNOWN:
580 lpTod->tod_timezone = TimeZoneInfo.Bias;
581 break;
582
583 case TIME_ZONE_ID_STANDARD:
584 lpTod->tod_timezone = TimeZoneInfo.Bias + TimeZoneInfo.StandardBias;
585 break;
586
587 case TIME_ZONE_ID_DAYLIGHT:
588 lpTod->tod_timezone = TimeZoneInfo.Bias + TimeZoneInfo.DaylightBias;
589 break;
590
591 default:
592 lpTod->tod_timezone = 0;
593 }
594
595 /* Set the ??? */
596 lpTod->tod_tinterval = 310;
597
598 /* Set the date and time */
599 GetSystemTime(&SystemTime);
600 lpTod->tod_hours = SystemTime.wHour;
601 lpTod->tod_mins = SystemTime.wMinute;
602 lpTod->tod_secs = SystemTime.wSecond;
603 lpTod->tod_hunds = SystemTime.wMilliseconds / 10;
604 lpTod->tod_day = SystemTime.wDay;
605 lpTod->tod_month = SystemTime.wMonth;
606 lpTod->tod_year = SystemTime.wYear;
607 lpTod->tod_weekday = SystemTime.wDayOfWeek;
608
609 return NERR_Success;
610 }
611
612
613 /* Function 29 - Not used on wire */
614 NET_API_STATUS
615 __stdcall
616 NetrServerSetServiceBits(
617 SRVSVC_HANDLE ServerName,
618 WCHAR *Transport,
619 DWORD ServiceBits,
620 DWORD UpdateImmediately)
621 {
622 UNIMPLEMENTED;
623 return ERROR_CALL_NOT_IMPLEMENTED;
624 }
625
626
627 /* Function 30 */
628 NET_API_STATUS
629 __stdcall
630 NetprPathType(
631 SRVSVC_HANDLE ServerName,
632 WCHAR *PathName,
633 DWORD *PathType,
634 DWORD Flags)
635 {
636 UNIMPLEMENTED;
637 return ERROR_CALL_NOT_IMPLEMENTED;
638 }
639
640
641 /* Function 31 */
642 NET_API_STATUS
643 __stdcall
644 NetprPathCanonicalize(
645 SRVSVC_HANDLE ServerName,
646 WCHAR *PathName,
647 unsigned char *Outbuf,
648 DWORD OutbufLen,
649 WCHAR *Prefix,
650 DWORD *PathType,
651 DWORD Flags)
652 {
653 UNIMPLEMENTED;
654 return ERROR_CALL_NOT_IMPLEMENTED;
655 }
656
657
658 /* Function 32 */
659 long
660 __stdcall
661 NetprPathCompare(
662 SRVSVC_HANDLE ServerName,
663 WCHAR *PathName1,
664 WCHAR *PathName2,
665 DWORD PathType,
666 DWORD Flags)
667 {
668 UNIMPLEMENTED;
669 return ERROR_CALL_NOT_IMPLEMENTED;
670 }
671
672
673 /* Function 33 */
674 NET_API_STATUS
675 __stdcall
676 NetprNameValidate(
677 SRVSVC_HANDLE ServerName,
678 WCHAR * Name,
679 DWORD NameType,
680 DWORD Flags)
681 {
682 UNIMPLEMENTED;
683 return ERROR_CALL_NOT_IMPLEMENTED;
684 }
685
686
687 /* Function 34 */
688 NET_API_STATUS
689 __stdcall
690 NetprNameCanonicalize(
691 SRVSVC_HANDLE ServerName,
692 WCHAR *Name,
693 WCHAR *Outbuf,
694 DWORD OutbufLen,
695 DWORD NameType,
696 DWORD Flags)
697 {
698 UNIMPLEMENTED;
699 return ERROR_CALL_NOT_IMPLEMENTED;
700 }
701
702
703 /* Function 35 */
704 long
705 __stdcall
706 NetprNameCompare(
707 SRVSVC_HANDLE ServerName,
708 WCHAR *Name1,
709 WCHAR *Name2,
710 DWORD NameType,
711 DWORD Flags)
712 {
713 UNIMPLEMENTED;
714 return ERROR_CALL_NOT_IMPLEMENTED;
715 }
716
717
718 /* Function 36 */
719 NET_API_STATUS
720 __stdcall
721 NetrShareEnumSticky(
722 SRVSVC_HANDLE ServerName,
723 LPSHARE_ENUM_STRUCT InfoStruct,
724 DWORD PreferedMaximumLength,
725 DWORD *TotalEntries,
726 DWORD *ResumeHandle)
727 {
728 UNIMPLEMENTED;
729 return ERROR_CALL_NOT_IMPLEMENTED;
730 }
731
732
733 /* Function 37 */
734 NET_API_STATUS
735 __stdcall
736 NetrShareDelStart(
737 SRVSVC_HANDLE ServerName,
738 WCHAR *NetName,
739 DWORD Reserved,
740 PSHARE_DEL_HANDLE ContextHandle)
741 {
742 UNIMPLEMENTED;
743 return ERROR_CALL_NOT_IMPLEMENTED;
744 }
745
746
747 /* Function 38 */
748 NET_API_STATUS
749 __stdcall
750 NetrShareDelCommit(
751 PSHARE_DEL_HANDLE ContextHandle)
752 {
753 UNIMPLEMENTED;
754 return ERROR_CALL_NOT_IMPLEMENTED;
755 }
756
757
758 /* Function 39 */
759 DWORD
760 __stdcall
761 NetrpGetFileSecurity(
762 SRVSVC_HANDLE ServerName,
763 WCHAR *ShareName,
764 WCHAR *lpFileName,
765 SECURITY_INFORMATION RequestedInformation,
766 PADT_SECURITY_DESCRIPTOR *SecurityDescriptor)
767 {
768 UNIMPLEMENTED;
769 return ERROR_CALL_NOT_IMPLEMENTED;
770 }
771
772
773 /* Function 40 */
774 DWORD
775 __stdcall
776 NetrpSetFileSecurity(
777 SRVSVC_HANDLE ServerName,
778 WCHAR *ShareName,
779 WCHAR *lpFileName,
780 SECURITY_INFORMATION SecurityInformation,
781 PADT_SECURITY_DESCRIPTOR SecurityDescriptor)
782 {
783 UNIMPLEMENTED;
784 return ERROR_CALL_NOT_IMPLEMENTED;
785 }
786
787
788 /* Function 41 */
789 NET_API_STATUS
790 __stdcall
791 NetrServerTransportAddEx(
792 SRVSVC_HANDLE ServerName,
793 DWORD Level,
794 LPTRANSPORT_INFO Buffer)
795 {
796 UNIMPLEMENTED;
797 return ERROR_CALL_NOT_IMPLEMENTED;
798 }
799
800
801 /* Function 42 */
802 void
803 __stdcall
804 Opnum42NotUsedOnWire(void)
805 {
806 UNIMPLEMENTED;
807 }
808
809
810 /* Function 43 */
811 NET_API_STATUS
812 __stdcall
813 NetrDfsGetVersion(
814 SRVSVC_HANDLE ServerName,
815 DWORD *Version)
816 {
817 UNIMPLEMENTED;
818 return ERROR_CALL_NOT_IMPLEMENTED;
819 }
820
821
822 /* Function 44 */
823 NET_API_STATUS
824 __stdcall
825 NetrDfsCreateLocalPartition(
826 SRVSVC_HANDLE ServerName,
827 WCHAR *ShareName,
828 GUID *EntryUid,
829 WCHAR *EntryPrefix,
830 WCHAR *ShortName,
831 LPNET_DFS_ENTRY_ID_CONTAINER RelationInfo,
832 int Force)
833 {
834 UNIMPLEMENTED;
835 return ERROR_CALL_NOT_IMPLEMENTED;
836 }
837
838
839 /* Function 45 */
840 NET_API_STATUS
841 __stdcall
842 NetrDfsDeleteLocalPartition(
843 SRVSVC_HANDLE ServerName,
844 GUID *Uid,
845 WCHAR *Prefix)
846 {
847 UNIMPLEMENTED;
848 return ERROR_CALL_NOT_IMPLEMENTED;
849 }
850
851
852 /* Function 46 */
853 NET_API_STATUS
854 __stdcall
855 NetrDfsSetLocalVolumeState(
856 SRVSVC_HANDLE ServerName,
857 GUID *Uid,
858 WCHAR *Prefix,
859 unsigned long State)
860 {
861 UNIMPLEMENTED;
862 return ERROR_CALL_NOT_IMPLEMENTED;
863 }
864
865
866 /* Function 47 */
867 void
868 __stdcall
869 Opnum47NotUsedOnWire(void)
870 {
871 UNIMPLEMENTED;
872 }
873
874
875 /* Function 48 */
876 NET_API_STATUS
877 __stdcall
878 NetrDfsCreateExitPoint(
879 SRVSVC_HANDLE ServerName,
880 GUID *Uid,
881 WCHAR *Prefix,
882 unsigned long Type,
883 DWORD ShortPrefixLen,
884 WCHAR *ShortPrefix)
885 {
886 UNIMPLEMENTED;
887 return ERROR_CALL_NOT_IMPLEMENTED;
888 }
889
890
891 /* Function 49 */
892 NET_API_STATUS
893 __stdcall
894 NetrDfsDeleteExitPoint(
895 SRVSVC_HANDLE ServerName,
896 GUID *Uid,
897 WCHAR *Prefix,
898 unsigned long Type)
899 {
900 UNIMPLEMENTED;
901 return ERROR_CALL_NOT_IMPLEMENTED;
902 }
903
904
905 /* Function 50 */
906 NET_API_STATUS
907 __stdcall
908 NetrDfsModifyPrefix(
909 SRVSVC_HANDLE ServerName,
910 GUID *Uid,
911 WCHAR *Prefix)
912 {
913 UNIMPLEMENTED;
914 return ERROR_CALL_NOT_IMPLEMENTED;
915 }
916
917
918 /* Function 51 */
919 NET_API_STATUS
920 __stdcall
921 NetrDfsFixLocalVolume(
922 SRVSVC_HANDLE ServerName,
923 WCHAR *VolumeName,
924 unsigned long EntryType,
925 unsigned long ServiceType,
926 WCHAR *StgId,
927 GUID *EntryUid,
928 WCHAR *EntryPrefix,
929 LPNET_DFS_ENTRY_ID_CONTAINER RelationInfo,
930 unsigned long CreateDisposition)
931 {
932 UNIMPLEMENTED;
933 return ERROR_CALL_NOT_IMPLEMENTED;
934 }
935
936
937 /* Function 52 */
938 NET_API_STATUS
939 __stdcall
940 NetrDfsManagerReportSiteInfo(
941 SRVSVC_HANDLE ServerName,
942 LPDFS_SITELIST_INFO *ppSiteInfo)
943 {
944 UNIMPLEMENTED;
945 return ERROR_CALL_NOT_IMPLEMENTED;
946 }
947
948
949 /* Function 53 */
950 NET_API_STATUS
951 __stdcall
952 NetrServerTransportDelEx(
953 SRVSVC_HANDLE ServerName,
954 DWORD Level,
955 LPTRANSPORT_INFO Buffer)
956 {
957 UNIMPLEMENTED;
958 return ERROR_CALL_NOT_IMPLEMENTED;
959 }
960
961 /* EOF */