Reactos
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
36WINE_DEFAULT_DEBUG_CHANNEL(srvsvc);
37
38/* FUNCTIONS *****************************************************************/
39
40DWORD
41WINAPI
42RpcThreadRoutine(
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
71void __RPC_FAR * __RPC_USER midl_user_allocate(SIZE_T len)
72{
73 return HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, len);
74}
75
76
77void __RPC_USER midl_user_free(void __RPC_FAR * ptr)
78{
79 HeapFree(GetProcessHeap(), 0, ptr);
80}
81
82
83void __RPC_USER SHARE_DEL_HANDLE_rundown(SHARE_DEL_HANDLE hClientHandle)
84{
85}
86
87
88/* Function 0 */
89void
90__stdcall
91Opnum0NotUsedOnWire(void)
92{
93 UNIMPLEMENTED;
94}
95
96
97/* Function 1 */
98void
99__stdcall
100Opnum1NotUsedOnWire(void)
101{
102 UNIMPLEMENTED;
103}
104
105
106/* Function 2 */
107void
108__stdcall
109Opnum2NotUsedOnWire(void)
110{
111 UNIMPLEMENTED;
112}
113
114
115/* Function 3 */
116void
117__stdcall
118Opnum3NotUsedOnWire(void)
119{
120 UNIMPLEMENTED;
121}
122
123
124/* Function 4 */
125void
126__stdcall
127Opnum4NotUsedOnWire(void)
128{
129 UNIMPLEMENTED;
130}
131
132/* Function 5 */
133void
134__stdcall
135Opnum5NotUsedOnWire(void)
136{
137 UNIMPLEMENTED;
138}
139
140
141/* Function 6 */
142void
143__stdcall
144Opnum6NotUsedOnWire(void)
145{
146 UNIMPLEMENTED;
147}
148
149
150/* Function 7 */
151void
152__stdcall
153Opnum7NotUsedOnWire(void)
154{
155 UNIMPLEMENTED;
156}
157
158
159/* Function 8 */
160NET_API_STATUS
161__stdcall
162NetrConnectionEnum(
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 */
176NET_API_STATUS
177__stdcall
178NetrFileEnum(
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 */
193NET_API_STATUS
194__stdcall
195NetrFileGetInfo(
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 */
207NET_API_STATUS
208__stdcall
209NetrFileClose(
210 SRVSVC_HANDLE ServerName,
211 DWORD FileId)
212{
213 UNIMPLEMENTED;
214 return 0;
215}
216
217
218/* Function 12 */
219NET_API_STATUS
220__stdcall
221NetrSessionEnum(
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 */
236NET_API_STATUS
237__stdcall
238NetrSessionDel(
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 */
249NET_API_STATUS
250__stdcall
251NetrShareAdd(
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 */
263NET_API_STATUS
264__stdcall
265NetrShareEnum(
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 */
278NET_API_STATUS
279__stdcall
280NetrShareGetInfo(
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 */
292NET_API_STATUS
293__stdcall
294NetrShareSetInfo(
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 */
307NET_API_STATUS
308__stdcall
309NetrShareDel(
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 */
320NET_API_STATUS
321__stdcall
322NetrShareDelSticky(
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 */
333NET_API_STATUS
334__stdcall
335NetrShareCheck(
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 */
346NET_API_STATUS
347__stdcall
348NetrServerGetInfo(
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 = dwServiceBits | SV_TYPE_NT;
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 = dwServiceBits | 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 */
440NET_API_STATUS
441__stdcall
442NetrServerSetInfo(
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 */
454NET_API_STATUS
455__stdcall
456NetrServerDiskEnum(
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 */
470NET_API_STATUS
471__stdcall
472NetrServerStatisticsGet(
473 SRVSVC_HANDLE ServerName,
474 WCHAR *Service,
475 DWORD Level,
476 DWORD Options,
477 LPSTAT_SERVER_0 *InfoStruct)
478{
479 SYSTEM_TIMEOFDAY_INFORMATION TimeOfDayInfo;
480 PSTAT_SERVER_0 pStatBuffer = NULL;
481 NTSTATUS Status;
482
483 TRACE("NetrServerStatisticsGet(%p %p %lu 0x%lx %p)\n",
484 ServerName, Service, Level, Options, InfoStruct);
485
486 if (Level != 0)
487 return ERROR_INVALID_LEVEL;
488
489 if (Options != 0)
490 return ERROR_INVALID_PARAMETER;
491
492 pStatBuffer = midl_user_allocate(sizeof(STAT_SERVER_0));
493 if (pStatBuffer == NULL)
494 return ERROR_NOT_ENOUGH_MEMORY;
495
496 ZeroMemory(pStatBuffer, sizeof(STAT_SERVER_0));
497
498 /* Query the boot time */
499 Status = NtQuerySystemInformation(SystemTimeOfDayInformation,
500 &TimeOfDayInfo,
501 sizeof(TimeOfDayInfo),
502 NULL);
503 if (NT_SUCCESS(Status))
504 {
505 ULONG Seconds = 0;
506 if (RtlTimeToSecondsSince1970(&TimeOfDayInfo.BootTime, &Seconds))
507 {
508 pStatBuffer->sts0_start = Seconds;
509 }
510 }
511
512 // FIXME: Return the actual statistcs data!
513
514 *InfoStruct = pStatBuffer;
515
516 return NERR_Success;
517}
518
519
520/* Function 25 */
521NET_API_STATUS
522__stdcall
523NetrServerTransportAdd(
524 SRVSVC_HANDLE ServerName,
525 DWORD Level,
526 LPSERVER_TRANSPORT_INFO_0 Buffer)
527{
528 UNIMPLEMENTED;
529 return ERROR_CALL_NOT_IMPLEMENTED;
530}
531
532
533/* Function 26 */
534NET_API_STATUS
535__stdcall
536NetrServerTransportEnum(
537 SRVSVC_HANDLE ServerName,
538 LPSERVER_XPORT_ENUM_STRUCT InfoStruct,
539 DWORD PreferedMaximumLength,
540 DWORD *TotalEntries,
541 DWORD *ResumeHandle)
542{
543 UNIMPLEMENTED;
544 return ERROR_CALL_NOT_IMPLEMENTED;
545}
546
547
548/* Function 27 */
549NET_API_STATUS
550__stdcall
551NetrServerTransportDel(
552 SRVSVC_HANDLE ServerName,
553 DWORD Level,
554 LPSERVER_TRANSPORT_INFO_0 Buffer)
555{
556 UNIMPLEMENTED;
557 return ERROR_CALL_NOT_IMPLEMENTED;
558}
559
560
561/* Function 28 */
562NET_API_STATUS
563__stdcall
564NetrRemoteTOD(
565 SRVSVC_HANDLE ServerName,
566 LPTIME_OF_DAY_INFO *BufferPtr)
567{
568 SYSTEMTIME SystemTime;
569 LARGE_INTEGER Time;
570 TIME_ZONE_INFORMATION TimeZoneInfo;
571 DWORD TimeZoneId;
572 LPTIME_OF_DAY_INFO lpTod;
573
574 TRACE("NetrRemoteTOD(%p %p)\n", ServerName, BufferPtr);
575
576 *BufferPtr = midl_user_allocate(sizeof(TIME_OF_DAY_INFO));
577 if (*BufferPtr == NULL)
578 return ERROR_NOT_ENOUGH_MEMORY;
579
580 lpTod = *BufferPtr;
581
582 /* Set the seconds since 1970 */
583 NtQuerySystemTime(&Time);
584 RtlTimeToSecondsSince1970(&Time,
585 &lpTod->tod_elapsedt);
586
587 /* Set the tick count */
588 lpTod->tod_msecs = GetTickCount();
589
590 /* Set the timezone */
591 TimeZoneId = GetTimeZoneInformation(&TimeZoneInfo);
592
593 switch (TimeZoneId)
594 {
595 case TIME_ZONE_ID_UNKNOWN:
596 lpTod->tod_timezone = TimeZoneInfo.Bias;
597 break;
598
599 case TIME_ZONE_ID_STANDARD:
600 lpTod->tod_timezone = TimeZoneInfo.Bias + TimeZoneInfo.StandardBias;
601 break;
602
603 case TIME_ZONE_ID_DAYLIGHT:
604 lpTod->tod_timezone = TimeZoneInfo.Bias + TimeZoneInfo.DaylightBias;
605 break;
606
607 default:
608 lpTod->tod_timezone = 0;
609 }
610
611 /* Set the ??? */
612 lpTod->tod_tinterval = 310;
613
614 /* Set the date and time */
615 GetSystemTime(&SystemTime);
616 lpTod->tod_hours = SystemTime.wHour;
617 lpTod->tod_mins = SystemTime.wMinute;
618 lpTod->tod_secs = SystemTime.wSecond;
619 lpTod->tod_hunds = SystemTime.wMilliseconds / 10;
620 lpTod->tod_day = SystemTime.wDay;
621 lpTod->tod_month = SystemTime.wMonth;
622 lpTod->tod_year = SystemTime.wYear;
623 lpTod->tod_weekday = SystemTime.wDayOfWeek;
624
625 return NERR_Success;
626}
627
628
629/* Function 29 - Not used on wire */
630NET_API_STATUS
631__stdcall
632NetrServerSetServiceBits(
633 SRVSVC_HANDLE ServerName,
634 WCHAR *Transport,
635 DWORD ServiceBits,
636 DWORD UpdateImmediately)
637{
638 FIXME("NetrServerSetServiceBits(%p %s %lx %lu)\n",
639 ServerName, debugstr_w(Transport), ServiceBits, UpdateImmediately);
640
641 /* FIXME: Support Transport */
642 /* FIXME: Support UpdateImmdiately */
643
644 dwServiceBits = ServiceBits;
645
646 return NERR_Success;
647}
648
649
650/* Function 30 */
651NET_API_STATUS
652__stdcall
653NetprPathType(
654 SRVSVC_HANDLE ServerName,
655 WCHAR *PathName,
656 DWORD *PathType,
657 DWORD Flags)
658{
659 UNIMPLEMENTED;
660 return ERROR_CALL_NOT_IMPLEMENTED;
661}
662
663
664/* Function 31 */
665NET_API_STATUS
666__stdcall
667NetprPathCanonicalize(
668 SRVSVC_HANDLE ServerName,
669 WCHAR *PathName,
670 unsigned char *Outbuf,
671 DWORD OutbufLen,
672 WCHAR *Prefix,
673 DWORD *PathType,
674 DWORD Flags)
675{
676 UNIMPLEMENTED;
677 return ERROR_CALL_NOT_IMPLEMENTED;
678}
679
680
681/* Function 32 */
682long
683__stdcall
684NetprPathCompare(
685 SRVSVC_HANDLE ServerName,
686 WCHAR *PathName1,
687 WCHAR *PathName2,
688 DWORD PathType,
689 DWORD Flags)
690{
691 UNIMPLEMENTED;
692 return ERROR_CALL_NOT_IMPLEMENTED;
693}
694
695
696/* Function 33 */
697NET_API_STATUS
698__stdcall
699NetprNameValidate(
700 SRVSVC_HANDLE ServerName,
701 WCHAR * Name,
702 DWORD NameType,
703 DWORD Flags)
704{
705 UNIMPLEMENTED;
706 return ERROR_CALL_NOT_IMPLEMENTED;
707}
708
709
710/* Function 34 */
711NET_API_STATUS
712__stdcall
713NetprNameCanonicalize(
714 SRVSVC_HANDLE ServerName,
715 WCHAR *Name,
716 WCHAR *Outbuf,
717 DWORD OutbufLen,
718 DWORD NameType,
719 DWORD Flags)
720{
721 UNIMPLEMENTED;
722 return ERROR_CALL_NOT_IMPLEMENTED;
723}
724
725
726/* Function 35 */
727long
728__stdcall
729NetprNameCompare(
730 SRVSVC_HANDLE ServerName,
731 WCHAR *Name1,
732 WCHAR *Name2,
733 DWORD NameType,
734 DWORD Flags)
735{
736 UNIMPLEMENTED;
737 return ERROR_CALL_NOT_IMPLEMENTED;
738}
739
740
741/* Function 36 */
742NET_API_STATUS
743__stdcall
744NetrShareEnumSticky(
745 SRVSVC_HANDLE ServerName,
746 LPSHARE_ENUM_STRUCT InfoStruct,
747 DWORD PreferedMaximumLength,
748 DWORD *TotalEntries,
749 DWORD *ResumeHandle)
750{
751 UNIMPLEMENTED;
752 return ERROR_CALL_NOT_IMPLEMENTED;
753}
754
755
756/* Function 37 */
757NET_API_STATUS
758__stdcall
759NetrShareDelStart(
760 SRVSVC_HANDLE ServerName,
761 WCHAR *NetName,
762 DWORD Reserved,
763 PSHARE_DEL_HANDLE ContextHandle)
764{
765 UNIMPLEMENTED;
766 return ERROR_CALL_NOT_IMPLEMENTED;
767}
768
769
770/* Function 38 */
771NET_API_STATUS
772__stdcall
773NetrShareDelCommit(
774 PSHARE_DEL_HANDLE ContextHandle)
775{
776 UNIMPLEMENTED;
777 return ERROR_CALL_NOT_IMPLEMENTED;
778}
779
780
781/* Function 39 */
782DWORD
783__stdcall
784NetrpGetFileSecurity(
785 SRVSVC_HANDLE ServerName,
786 WCHAR *ShareName,
787 WCHAR *lpFileName,
788 SECURITY_INFORMATION RequestedInformation,
789 PADT_SECURITY_DESCRIPTOR *SecurityDescriptor)
790{
791 UNIMPLEMENTED;
792 return ERROR_CALL_NOT_IMPLEMENTED;
793}
794
795
796/* Function 40 */
797DWORD
798__stdcall
799NetrpSetFileSecurity(
800 SRVSVC_HANDLE ServerName,
801 WCHAR *ShareName,
802 WCHAR *lpFileName,
803 SECURITY_INFORMATION SecurityInformation,
804 PADT_SECURITY_DESCRIPTOR SecurityDescriptor)
805{
806 UNIMPLEMENTED;
807 return ERROR_CALL_NOT_IMPLEMENTED;
808}
809
810
811/* Function 41 */
812NET_API_STATUS
813__stdcall
814NetrServerTransportAddEx(
815 SRVSVC_HANDLE ServerName,
816 DWORD Level,
817 LPTRANSPORT_INFO Buffer)
818{
819 UNIMPLEMENTED;
820 return ERROR_CALL_NOT_IMPLEMENTED;
821}
822
823
824/* Function 42 - Not used on wire */
825NET_API_STATUS
826__stdcall
827NetrServerSetServiceBitsEx(
828 SRVSVC_HANDLE ServerName,
829 WCHAR *EmulatedServer,
830 WCHAR *Transport,
831 DWORD ServiceBitsOfInterest,
832 DWORD ServiceBits,
833 DWORD UpdateImmediately)
834{
835 UNIMPLEMENTED;
836 return ERROR_CALL_NOT_IMPLEMENTED;
837}
838
839
840/* Function 43 */
841NET_API_STATUS
842__stdcall
843NetrDfsGetVersion(
844 SRVSVC_HANDLE ServerName,
845 DWORD *Version)
846{
847 UNIMPLEMENTED;
848 return ERROR_CALL_NOT_IMPLEMENTED;
849}
850
851
852/* Function 44 */
853NET_API_STATUS
854__stdcall
855NetrDfsCreateLocalPartition(
856 SRVSVC_HANDLE ServerName,
857 WCHAR *ShareName,
858 GUID *EntryUid,
859 WCHAR *EntryPrefix,
860 WCHAR *ShortName,
861 LPNET_DFS_ENTRY_ID_CONTAINER RelationInfo,
862 int Force)
863{
864 UNIMPLEMENTED;
865 return ERROR_CALL_NOT_IMPLEMENTED;
866}
867
868
869/* Function 45 */
870NET_API_STATUS
871__stdcall
872NetrDfsDeleteLocalPartition(
873 SRVSVC_HANDLE ServerName,
874 GUID *Uid,
875 WCHAR *Prefix)
876{
877 UNIMPLEMENTED;
878 return ERROR_CALL_NOT_IMPLEMENTED;
879}
880
881
882/* Function 46 */
883NET_API_STATUS
884__stdcall
885NetrDfsSetLocalVolumeState(
886 SRVSVC_HANDLE ServerName,
887 GUID *Uid,
888 WCHAR *Prefix,
889 unsigned long State)
890{
891 UNIMPLEMENTED;
892 return ERROR_CALL_NOT_IMPLEMENTED;
893}
894
895
896/* Function 47 - Not used on wire */
897NET_API_STATUS
898__stdcall
899NetrDfsSetServerInfo(void)
900{
901 UNIMPLEMENTED;
902 return ERROR_CALL_NOT_IMPLEMENTED;
903}
904
905
906/* Function 48 */
907NET_API_STATUS
908__stdcall
909NetrDfsCreateExitPoint(
910 SRVSVC_HANDLE ServerName,
911 GUID *Uid,
912 WCHAR *Prefix,
913 unsigned long Type,
914 DWORD ShortPrefixLen,
915 WCHAR *ShortPrefix)
916{
917 UNIMPLEMENTED;
918 return ERROR_CALL_NOT_IMPLEMENTED;
919}
920
921
922/* Function 49 */
923NET_API_STATUS
924__stdcall
925NetrDfsDeleteExitPoint(
926 SRVSVC_HANDLE ServerName,
927 GUID *Uid,
928 WCHAR *Prefix,
929 unsigned long Type)
930{
931 UNIMPLEMENTED;
932 return ERROR_CALL_NOT_IMPLEMENTED;
933}
934
935
936/* Function 50 */
937NET_API_STATUS
938__stdcall
939NetrDfsModifyPrefix(
940 SRVSVC_HANDLE ServerName,
941 GUID *Uid,
942 WCHAR *Prefix)
943{
944 UNIMPLEMENTED;
945 return ERROR_CALL_NOT_IMPLEMENTED;
946}
947
948
949/* Function 51 */
950NET_API_STATUS
951__stdcall
952NetrDfsFixLocalVolume(
953 SRVSVC_HANDLE ServerName,
954 WCHAR *VolumeName,
955 unsigned long EntryType,
956 unsigned long ServiceType,
957 WCHAR *StgId,
958 GUID *EntryUid,
959 WCHAR *EntryPrefix,
960 LPNET_DFS_ENTRY_ID_CONTAINER RelationInfo,
961 unsigned long CreateDisposition)
962{
963 UNIMPLEMENTED;
964 return ERROR_CALL_NOT_IMPLEMENTED;
965}
966
967
968/* Function 52 */
969NET_API_STATUS
970__stdcall
971NetrDfsManagerReportSiteInfo(
972 SRVSVC_HANDLE ServerName,
973 LPDFS_SITELIST_INFO *ppSiteInfo)
974{
975 UNIMPLEMENTED;
976 return ERROR_CALL_NOT_IMPLEMENTED;
977}
978
979
980/* Function 53 */
981NET_API_STATUS
982__stdcall
983NetrServerTransportDelEx(
984 SRVSVC_HANDLE ServerName,
985 DWORD Level,
986 LPTRANSPORT_INFO Buffer)
987{
988 UNIMPLEMENTED;
989 return ERROR_CALL_NOT_IMPLEMENTED;
990}
991
992/* EOF */