3 * Copyright (C) 2015 ReactOS Team
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.
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.
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.
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
27 /* INCLUDES *****************************************************************/
31 #include "ndk/kefuncs.h"
32 #include "ndk/rtlfuncs.h"
36 WINE_DEFAULT_DEBUG_CHANNEL(srvsvc
);
38 /* FUNCTIONS *****************************************************************/
47 Status
= RpcServerUseProtseqEpW(L
"ncacn_np", 20, L
"\\pipe\\srvsvc", NULL
);
48 if (Status
!= RPC_S_OK
)
50 ERR("RpcServerUseProtseqEpW() failed (Status %lx)\n", Status
);
54 Status
= RpcServerRegisterIf(srvsvc_v3_0_s_ifspec
, NULL
, NULL
);
55 if (Status
!= RPC_S_OK
)
57 ERR("RpcServerRegisterIf() failed (Status %lx)\n", Status
);
61 Status
= RpcServerListen(1, RPC_C_LISTEN_MAX_CALLS_DEFAULT
, FALSE
);
62 if (Status
!= RPC_S_OK
)
64 ERR("RpcServerListen() failed (Status %lx)\n", Status
);
71 void __RPC_FAR
* __RPC_USER
midl_user_allocate(SIZE_T len
)
73 return HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY
, len
);
77 void __RPC_USER
midl_user_free(void __RPC_FAR
* ptr
)
79 HeapFree(GetProcessHeap(), 0, ptr
);
83 void __RPC_USER
SHARE_DEL_HANDLE_rundown(SHARE_DEL_HANDLE hClientHandle
)
91 Opnum0NotUsedOnWire(void)
100 Opnum1NotUsedOnWire(void)
109 Opnum2NotUsedOnWire(void)
118 Opnum3NotUsedOnWire(void)
127 Opnum4NotUsedOnWire(void)
135 Opnum5NotUsedOnWire(void)
144 Opnum6NotUsedOnWire(void)
153 Opnum7NotUsedOnWire(void)
163 SRVSVC_HANDLE ServerName
,
165 LPCONNECT_ENUM_STRUCT InfoStruct
,
166 DWORD PreferedMaximumLength
,
179 SRVSVC_HANDLE ServerName
,
182 PFILE_ENUM_STRUCT InfoStruct
,
183 DWORD PreferedMaximumLength
,
196 SRVSVC_HANDLE ServerName
,
199 LPFILE_INFO InfoStruct
)
210 SRVSVC_HANDLE ServerName
,
222 SRVSVC_HANDLE ServerName
,
225 PSESSION_ENUM_STRUCT InfoStruct
,
226 DWORD PreferedMaximumLength
,
239 SRVSVC_HANDLE ServerName
,
244 return ERROR_CALL_NOT_IMPLEMENTED
;
252 SRVSVC_HANDLE ServerName
,
254 LPSHARE_INFO InfoStruct
,
258 return ERROR_CALL_NOT_IMPLEMENTED
;
266 SRVSVC_HANDLE ServerName
,
267 LPSHARE_ENUM_STRUCT InfoStruct
,
268 DWORD PreferedMaximumLength
,
273 return ERROR_CALL_NOT_IMPLEMENTED
;
281 SRVSVC_HANDLE ServerName
,
284 LPSHARE_INFO InfoStruct
)
287 return ERROR_CALL_NOT_IMPLEMENTED
;
295 SRVSVC_HANDLE ServerName
,
298 LPSHARE_INFO ShareInfo
,
302 return ERROR_CALL_NOT_IMPLEMENTED
;
310 SRVSVC_HANDLE ServerName
,
315 return ERROR_CALL_NOT_IMPLEMENTED
;
323 SRVSVC_HANDLE ServerName
,
328 return ERROR_CALL_NOT_IMPLEMENTED
;
336 SRVSVC_HANDLE ServerName
,
341 return ERROR_CALL_NOT_IMPLEMENTED
;
349 SRVSVC_HANDLE ServerName
,
351 LPSERVER_INFO InfoStruct
)
354 return ERROR_CALL_NOT_IMPLEMENTED
;
362 SRVSVC_HANDLE ServerName
,
364 LPSERVER_INFO ServerInfo
,
368 return ERROR_CALL_NOT_IMPLEMENTED
;
376 SRVSVC_HANDLE ServerName
,
378 DISK_ENUM_CONTAINER
*DiskInfoStruct
,
379 DWORD PreferedMaximumLength
,
384 return ERROR_CALL_NOT_IMPLEMENTED
;
391 NetrServerStatisticsGet(
392 SRVSVC_HANDLE ServerName
,
396 LPSTAT_SERVER_0
*InfoStruct
)
399 return ERROR_CALL_NOT_IMPLEMENTED
;
406 NetrServerTransportAdd(
407 SRVSVC_HANDLE ServerName
,
409 LPSERVER_TRANSPORT_INFO_0 Buffer
)
412 return ERROR_CALL_NOT_IMPLEMENTED
;
419 NetrServerTransportEnum(
420 SRVSVC_HANDLE ServerName
,
421 LPSERVER_XPORT_ENUM_STRUCT InfoStruct
,
422 DWORD PreferedMaximumLength
,
427 return ERROR_CALL_NOT_IMPLEMENTED
;
434 NetrServerTransportDel(
435 SRVSVC_HANDLE ServerName
,
437 LPSERVER_TRANSPORT_INFO_0 Buffer
)
440 return ERROR_CALL_NOT_IMPLEMENTED
;
448 SRVSVC_HANDLE ServerName
,
449 LPTIME_OF_DAY_INFO
*BufferPtr
)
451 SYSTEMTIME SystemTime
;
453 TIME_ZONE_INFORMATION TimeZoneInfo
;
455 LPTIME_OF_DAY_INFO lpTod
;
457 TRACE("NetrRemoteTOD(%p %p)\n", ServerName
, BufferPtr
);
459 *BufferPtr
= midl_user_allocate(sizeof(TIME_OF_DAY_INFO
));
460 if (*BufferPtr
== NULL
)
461 return ERROR_NOT_ENOUGH_MEMORY
;
465 /* Set the seconds since 1970 */
466 NtQuerySystemTime(&Time
);
467 RtlTimeToSecondsSince1970(&Time
,
468 &lpTod
->tod_elapsedt
);
470 /* Set the tick count */
471 lpTod
->tod_msecs
= GetTickCount();
473 /* Set the timezone */
474 TimeZoneId
= GetTimeZoneInformation(&TimeZoneInfo
);
478 case TIME_ZONE_ID_UNKNOWN
:
479 lpTod
->tod_timezone
= TimeZoneInfo
.Bias
;
482 case TIME_ZONE_ID_STANDARD
:
483 lpTod
->tod_timezone
= TimeZoneInfo
.Bias
+ TimeZoneInfo
.StandardBias
;
486 case TIME_ZONE_ID_DAYLIGHT
:
487 lpTod
->tod_timezone
= TimeZoneInfo
.Bias
+ TimeZoneInfo
.DaylightBias
;
491 lpTod
->tod_timezone
= 0;
495 lpTod
->tod_tinterval
= 310;
497 /* Set the date and time */
498 GetSystemTime(&SystemTime
);
499 lpTod
->tod_hours
= SystemTime
.wHour
;
500 lpTod
->tod_mins
= SystemTime
.wMinute
;
501 lpTod
->tod_secs
= SystemTime
.wSecond
;
502 lpTod
->tod_hunds
= SystemTime
.wMilliseconds
/ 10;
503 lpTod
->tod_day
= SystemTime
.wDay
;
504 lpTod
->tod_month
= SystemTime
.wMonth
;
505 lpTod
->tod_year
= SystemTime
.wYear
;
506 lpTod
->tod_weekday
= SystemTime
.wDayOfWeek
;
515 Opnum29NotUsedOnWire(void)
525 SRVSVC_HANDLE ServerName
,
531 return ERROR_CALL_NOT_IMPLEMENTED
;
538 NetprPathCanonicalize(
539 SRVSVC_HANDLE ServerName
,
541 unsigned char *Outbuf
,
548 return ERROR_CALL_NOT_IMPLEMENTED
;
556 SRVSVC_HANDLE ServerName
,
563 return ERROR_CALL_NOT_IMPLEMENTED
;
571 SRVSVC_HANDLE ServerName
,
577 return ERROR_CALL_NOT_IMPLEMENTED
;
584 NetprNameCanonicalize(
585 SRVSVC_HANDLE ServerName
,
593 return ERROR_CALL_NOT_IMPLEMENTED
;
601 SRVSVC_HANDLE ServerName
,
608 return ERROR_CALL_NOT_IMPLEMENTED
;
616 SRVSVC_HANDLE ServerName
,
617 LPSHARE_ENUM_STRUCT InfoStruct
,
618 DWORD PreferedMaximumLength
,
623 return ERROR_CALL_NOT_IMPLEMENTED
;
631 SRVSVC_HANDLE ServerName
,
634 PSHARE_DEL_HANDLE ContextHandle
)
637 return ERROR_CALL_NOT_IMPLEMENTED
;
645 PSHARE_DEL_HANDLE ContextHandle
)
648 return ERROR_CALL_NOT_IMPLEMENTED
;
655 NetrpGetFileSecurity(
656 SRVSVC_HANDLE ServerName
,
659 SECURITY_INFORMATION RequestedInformation
,
660 PADT_SECURITY_DESCRIPTOR
*SecurityDescriptor
)
663 return ERROR_CALL_NOT_IMPLEMENTED
;
670 NetrpSetFileSecurity(
671 SRVSVC_HANDLE ServerName
,
674 SECURITY_INFORMATION SecurityInformation
,
675 PADT_SECURITY_DESCRIPTOR SecurityDescriptor
)
678 return ERROR_CALL_NOT_IMPLEMENTED
;
685 NetrServerTransportAddEx(
686 SRVSVC_HANDLE ServerName
,
688 LPTRANSPORT_INFO Buffer
)
691 return ERROR_CALL_NOT_IMPLEMENTED
;
698 Opnum42NotUsedOnWire(void)
708 SRVSVC_HANDLE ServerName
,
712 return ERROR_CALL_NOT_IMPLEMENTED
;
719 NetrDfsCreateLocalPartition(
720 SRVSVC_HANDLE ServerName
,
725 LPNET_DFS_ENTRY_ID_CONTAINER RelationInfo
,
729 return ERROR_CALL_NOT_IMPLEMENTED
;
736 NetrDfsDeleteLocalPartition(
737 SRVSVC_HANDLE ServerName
,
742 return ERROR_CALL_NOT_IMPLEMENTED
;
749 NetrDfsSetLocalVolumeState(
750 SRVSVC_HANDLE ServerName
,
756 return ERROR_CALL_NOT_IMPLEMENTED
;
763 Opnum47NotUsedOnWire(void)
772 NetrDfsCreateExitPoint(
773 SRVSVC_HANDLE ServerName
,
777 DWORD ShortPrefixLen
,
781 return ERROR_CALL_NOT_IMPLEMENTED
;
788 NetrDfsDeleteExitPoint(
789 SRVSVC_HANDLE ServerName
,
795 return ERROR_CALL_NOT_IMPLEMENTED
;
803 SRVSVC_HANDLE ServerName
,
808 return ERROR_CALL_NOT_IMPLEMENTED
;
815 NetrDfsFixLocalVolume(
816 SRVSVC_HANDLE ServerName
,
818 unsigned long EntryType
,
819 unsigned long ServiceType
,
823 LPNET_DFS_ENTRY_ID_CONTAINER RelationInfo
,
824 unsigned long CreateDisposition
)
827 return ERROR_CALL_NOT_IMPLEMENTED
;
834 NetrDfsManagerReportSiteInfo(
835 SRVSVC_HANDLE ServerName
,
836 LPDFS_SITELIST_INFO
*ppSiteInfo
)
839 return ERROR_CALL_NOT_IMPLEMENTED
;
846 NetrServerTransportDelEx(
847 SRVSVC_HANDLE ServerName
,
849 LPTRANSPORT_INFO Buffer
)
852 return ERROR_CALL_NOT_IMPLEMENTED
;