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
)
398 PSTAT_SERVER_0 pStatBuffer
;
400 TRACE("NetrServerStatisticsGet(%p %p %lu 0x%lx %p)\n",
401 ServerName
, Service
, Level
, Options
, InfoStruct
);
404 return ERROR_INVALID_LEVEL
;
407 return ERROR_INVALID_PARAMETER
;
409 pStatBuffer
= midl_user_allocate(sizeof(STAT_SERVER_0
));
410 if (pStatBuffer
== NULL
)
411 return ERROR_NOT_ENOUGH_MEMORY
;
413 ZeroMemory(pStatBuffer
, sizeof(STAT_SERVER_0
));
415 // FIXME: Return the actual statistcs data!
417 *InfoStruct
= pStatBuffer
;
426 NetrServerTransportAdd(
427 SRVSVC_HANDLE ServerName
,
429 LPSERVER_TRANSPORT_INFO_0 Buffer
)
432 return ERROR_CALL_NOT_IMPLEMENTED
;
439 NetrServerTransportEnum(
440 SRVSVC_HANDLE ServerName
,
441 LPSERVER_XPORT_ENUM_STRUCT InfoStruct
,
442 DWORD PreferedMaximumLength
,
447 return ERROR_CALL_NOT_IMPLEMENTED
;
454 NetrServerTransportDel(
455 SRVSVC_HANDLE ServerName
,
457 LPSERVER_TRANSPORT_INFO_0 Buffer
)
460 return ERROR_CALL_NOT_IMPLEMENTED
;
468 SRVSVC_HANDLE ServerName
,
469 LPTIME_OF_DAY_INFO
*BufferPtr
)
471 SYSTEMTIME SystemTime
;
473 TIME_ZONE_INFORMATION TimeZoneInfo
;
475 LPTIME_OF_DAY_INFO lpTod
;
477 TRACE("NetrRemoteTOD(%p %p)\n", ServerName
, BufferPtr
);
479 *BufferPtr
= midl_user_allocate(sizeof(TIME_OF_DAY_INFO
));
480 if (*BufferPtr
== NULL
)
481 return ERROR_NOT_ENOUGH_MEMORY
;
485 /* Set the seconds since 1970 */
486 NtQuerySystemTime(&Time
);
487 RtlTimeToSecondsSince1970(&Time
,
488 &lpTod
->tod_elapsedt
);
490 /* Set the tick count */
491 lpTod
->tod_msecs
= GetTickCount();
493 /* Set the timezone */
494 TimeZoneId
= GetTimeZoneInformation(&TimeZoneInfo
);
498 case TIME_ZONE_ID_UNKNOWN
:
499 lpTod
->tod_timezone
= TimeZoneInfo
.Bias
;
502 case TIME_ZONE_ID_STANDARD
:
503 lpTod
->tod_timezone
= TimeZoneInfo
.Bias
+ TimeZoneInfo
.StandardBias
;
506 case TIME_ZONE_ID_DAYLIGHT
:
507 lpTod
->tod_timezone
= TimeZoneInfo
.Bias
+ TimeZoneInfo
.DaylightBias
;
511 lpTod
->tod_timezone
= 0;
515 lpTod
->tod_tinterval
= 310;
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
;
535 Opnum29NotUsedOnWire(void)
545 SRVSVC_HANDLE ServerName
,
551 return ERROR_CALL_NOT_IMPLEMENTED
;
558 NetprPathCanonicalize(
559 SRVSVC_HANDLE ServerName
,
561 unsigned char *Outbuf
,
568 return ERROR_CALL_NOT_IMPLEMENTED
;
576 SRVSVC_HANDLE ServerName
,
583 return ERROR_CALL_NOT_IMPLEMENTED
;
591 SRVSVC_HANDLE ServerName
,
597 return ERROR_CALL_NOT_IMPLEMENTED
;
604 NetprNameCanonicalize(
605 SRVSVC_HANDLE ServerName
,
613 return ERROR_CALL_NOT_IMPLEMENTED
;
621 SRVSVC_HANDLE ServerName
,
628 return ERROR_CALL_NOT_IMPLEMENTED
;
636 SRVSVC_HANDLE ServerName
,
637 LPSHARE_ENUM_STRUCT InfoStruct
,
638 DWORD PreferedMaximumLength
,
643 return ERROR_CALL_NOT_IMPLEMENTED
;
651 SRVSVC_HANDLE ServerName
,
654 PSHARE_DEL_HANDLE ContextHandle
)
657 return ERROR_CALL_NOT_IMPLEMENTED
;
665 PSHARE_DEL_HANDLE ContextHandle
)
668 return ERROR_CALL_NOT_IMPLEMENTED
;
675 NetrpGetFileSecurity(
676 SRVSVC_HANDLE ServerName
,
679 SECURITY_INFORMATION RequestedInformation
,
680 PADT_SECURITY_DESCRIPTOR
*SecurityDescriptor
)
683 return ERROR_CALL_NOT_IMPLEMENTED
;
690 NetrpSetFileSecurity(
691 SRVSVC_HANDLE ServerName
,
694 SECURITY_INFORMATION SecurityInformation
,
695 PADT_SECURITY_DESCRIPTOR SecurityDescriptor
)
698 return ERROR_CALL_NOT_IMPLEMENTED
;
705 NetrServerTransportAddEx(
706 SRVSVC_HANDLE ServerName
,
708 LPTRANSPORT_INFO Buffer
)
711 return ERROR_CALL_NOT_IMPLEMENTED
;
718 Opnum42NotUsedOnWire(void)
728 SRVSVC_HANDLE ServerName
,
732 return ERROR_CALL_NOT_IMPLEMENTED
;
739 NetrDfsCreateLocalPartition(
740 SRVSVC_HANDLE ServerName
,
745 LPNET_DFS_ENTRY_ID_CONTAINER RelationInfo
,
749 return ERROR_CALL_NOT_IMPLEMENTED
;
756 NetrDfsDeleteLocalPartition(
757 SRVSVC_HANDLE ServerName
,
762 return ERROR_CALL_NOT_IMPLEMENTED
;
769 NetrDfsSetLocalVolumeState(
770 SRVSVC_HANDLE ServerName
,
776 return ERROR_CALL_NOT_IMPLEMENTED
;
783 Opnum47NotUsedOnWire(void)
792 NetrDfsCreateExitPoint(
793 SRVSVC_HANDLE ServerName
,
797 DWORD ShortPrefixLen
,
801 return ERROR_CALL_NOT_IMPLEMENTED
;
808 NetrDfsDeleteExitPoint(
809 SRVSVC_HANDLE ServerName
,
815 return ERROR_CALL_NOT_IMPLEMENTED
;
823 SRVSVC_HANDLE ServerName
,
828 return ERROR_CALL_NOT_IMPLEMENTED
;
835 NetrDfsFixLocalVolume(
836 SRVSVC_HANDLE ServerName
,
838 unsigned long EntryType
,
839 unsigned long ServiceType
,
843 LPNET_DFS_ENTRY_ID_CONTAINER RelationInfo
,
844 unsigned long CreateDisposition
)
847 return ERROR_CALL_NOT_IMPLEMENTED
;
854 NetrDfsManagerReportSiteInfo(
855 SRVSVC_HANDLE ServerName
,
856 LPDFS_SITELIST_INFO
*ppSiteInfo
)
859 return ERROR_CALL_NOT_IMPLEMENTED
;
866 NetrServerTransportDelEx(
867 SRVSVC_HANDLE ServerName
,
869 LPTRANSPORT_INFO Buffer
)
872 return ERROR_CALL_NOT_IMPLEMENTED
;