Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers...
[reactos.git] / base / services / srvsvc / rpcserver.c
diff --git a/base/services/srvsvc/rpcserver.c b/base/services/srvsvc/rpcserver.c
new file mode 100644 (file)
index 0000000..217d662
--- /dev/null
@@ -0,0 +1,855 @@
+/*
+ *  ReactOS Services
+ *  Copyright (C) 2015 ReactOS Team
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License along
+ *  with this program; if not, write to the Free Software Foundation, Inc.,
+ *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+/*
+ * COPYRIGHT:        See COPYING in the top level directory
+ * PROJECT:          ReactOS Services
+ * FILE:             base/services/srvsvc/rpcserver.c
+ * PURPOSE:          Server service
+ * PROGRAMMER:       Eric Kohl
+ */
+
+/* INCLUDES *****************************************************************/
+
+#include "precomp.h"
+
+#include "ndk/kefuncs.h"
+#include "ndk/rtlfuncs.h"
+#include "winerror.h"
+#include "lmerr.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(srvsvc);
+
+/* FUNCTIONS *****************************************************************/
+
+DWORD
+WINAPI
+RpcThreadRoutine(
+    LPVOID lpParameter)
+{
+    RPC_STATUS Status;
+
+    Status = RpcServerUseProtseqEpW(L"ncacn_np", 20, L"\\pipe\\srvsvc", NULL);
+    if (Status != RPC_S_OK)
+    {
+        ERR("RpcServerUseProtseqEpW() failed (Status %lx)\n", Status);
+        return 0;
+    }
+
+    Status = RpcServerRegisterIf(srvsvc_v3_0_s_ifspec, NULL, NULL);
+    if (Status != RPC_S_OK)
+    {
+        ERR("RpcServerRegisterIf() failed (Status %lx)\n", Status);
+        return 0;
+    }
+
+    Status = RpcServerListen(1, RPC_C_LISTEN_MAX_CALLS_DEFAULT, FALSE);
+    if (Status != RPC_S_OK)
+    {
+        ERR("RpcServerListen() failed (Status %lx)\n", Status);
+    }
+
+    return 0;
+}
+
+
+void __RPC_FAR * __RPC_USER midl_user_allocate(SIZE_T len)
+{
+    return HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, len);
+}
+
+
+void __RPC_USER midl_user_free(void __RPC_FAR * ptr)
+{
+    HeapFree(GetProcessHeap(), 0, ptr);
+}
+
+
+void __RPC_USER SHARE_DEL_HANDLE_rundown(SHARE_DEL_HANDLE hClientHandle)
+{
+}
+
+
+/* Function 0 */
+void
+__stdcall
+Opnum0NotUsedOnWire(void)
+{
+    UNIMPLEMENTED;
+}
+
+
+/* Function 1 */
+void
+__stdcall
+Opnum1NotUsedOnWire(void)
+{
+    UNIMPLEMENTED;
+}
+
+
+/* Function 2 */
+void
+__stdcall
+Opnum2NotUsedOnWire(void)
+{
+    UNIMPLEMENTED;
+}
+
+
+/* Function 3 */
+void
+__stdcall
+Opnum3NotUsedOnWire(void)
+{
+    UNIMPLEMENTED;
+}
+
+
+/* Function 4 */
+void
+__stdcall
+Opnum4NotUsedOnWire(void)
+{
+    UNIMPLEMENTED;
+}
+
+/* Function 5 */
+void
+__stdcall
+Opnum5NotUsedOnWire(void)
+{
+    UNIMPLEMENTED;
+}
+
+
+/* Function 6 */
+void
+__stdcall
+Opnum6NotUsedOnWire(void)
+{
+    UNIMPLEMENTED;
+}
+
+
+/* Function 7 */
+void
+__stdcall
+Opnum7NotUsedOnWire(void)
+{
+    UNIMPLEMENTED;
+}
+
+
+/* Function 8 */
+NET_API_STATUS
+__stdcall
+NetrConnectionEnum(
+    SRVSVC_HANDLE ServerName,
+    WCHAR *Qualifier,
+    LPCONNECT_ENUM_STRUCT InfoStruct,
+    DWORD PreferedMaximumLength,
+    DWORD *TotalEntries,
+    DWORD *ResumeHandle)
+{
+    UNIMPLEMENTED;
+    return 0;
+}
+
+
+/* Function 9 */
+NET_API_STATUS
+__stdcall
+NetrFileEnum(
+    SRVSVC_HANDLE ServerName,
+    WCHAR *BasePath,
+    WCHAR *UserName,
+    PFILE_ENUM_STRUCT InfoStruct,
+    DWORD PreferedMaximumLength,
+    DWORD *TotalEntries,
+    DWORD *ResumeHandle)
+{
+    UNIMPLEMENTED;
+    return 0;
+}
+
+
+/* Function 10 */
+NET_API_STATUS
+__stdcall
+NetrFileGetInfo(
+    SRVSVC_HANDLE ServerName,
+    DWORD FileId,
+    DWORD Level,
+    LPFILE_INFO InfoStruct)
+{
+    UNIMPLEMENTED;
+    return 0;
+}
+
+
+/* Function 11 */
+NET_API_STATUS
+__stdcall
+NetrFileClose(
+    SRVSVC_HANDLE ServerName,
+    DWORD FileId)
+{
+    UNIMPLEMENTED;
+    return 0;
+}
+
+
+/* Function 12 */
+NET_API_STATUS
+__stdcall
+NetrSessionEnum(
+    SRVSVC_HANDLE ServerName,
+    WCHAR *ClientName,
+    WCHAR *UserName,
+    PSESSION_ENUM_STRUCT InfoStruct,
+    DWORD PreferedMaximumLength,
+    DWORD *TotalEntries,
+    DWORD *ResumeHandle)
+{
+    UNIMPLEMENTED;
+    return 0;
+}
+
+
+/* Function 13 */
+NET_API_STATUS
+__stdcall
+NetrSessionDel(
+    SRVSVC_HANDLE ServerName,
+    WCHAR *ClientName,
+    WCHAR *UserName)
+{
+    UNIMPLEMENTED;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+
+/* Function 14 */
+NET_API_STATUS
+__stdcall
+NetrShareAdd(
+    SRVSVC_HANDLE ServerName,
+    DWORD Level,
+    LPSHARE_INFO InfoStruct,
+    DWORD *ParmErr)
+{
+    UNIMPLEMENTED;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+
+/* Function 15 */
+NET_API_STATUS
+__stdcall
+NetrShareEnum(
+    SRVSVC_HANDLE ServerName,
+    LPSHARE_ENUM_STRUCT InfoStruct,
+    DWORD PreferedMaximumLength,
+    DWORD *TotalEntries,
+    DWORD *ResumeHandle)
+{
+    UNIMPLEMENTED;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+
+/* Function 16 */
+NET_API_STATUS
+__stdcall
+NetrShareGetInfo(
+    SRVSVC_HANDLE ServerName,
+    WCHAR *NetName,
+    DWORD Level,
+    LPSHARE_INFO InfoStruct)
+{
+    UNIMPLEMENTED;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+
+/* Function 17 */
+NET_API_STATUS
+__stdcall
+NetrShareSetInfo(
+    SRVSVC_HANDLE ServerName,
+    WCHAR *NetName,
+    DWORD Level,
+    LPSHARE_INFO ShareInfo,
+    DWORD *ParmErr)
+{
+    UNIMPLEMENTED;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+
+/* Function 18 */
+NET_API_STATUS
+__stdcall
+NetrShareDel(
+    SRVSVC_HANDLE ServerName,
+    WCHAR *NetName,
+    DWORD Reserved)
+{
+    UNIMPLEMENTED;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+
+/* Function 19 */
+NET_API_STATUS
+__stdcall
+NetrShareDelSticky(
+    SRVSVC_HANDLE ServerName,
+    WCHAR *NetName,
+    DWORD Reserved)
+{
+    UNIMPLEMENTED;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+
+/* Function 20 */
+NET_API_STATUS
+__stdcall
+NetrShareCheck(
+    SRVSVC_HANDLE ServerName,
+    WCHAR *Device,
+    DWORD *Type)
+{
+    UNIMPLEMENTED;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+
+/* Function 21 */
+NET_API_STATUS
+__stdcall
+NetrServerGetInfo(
+    SRVSVC_HANDLE ServerName,
+    DWORD Level,
+    LPSERVER_INFO InfoStruct)
+{
+    UNIMPLEMENTED;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+
+/* Function 22 */
+NET_API_STATUS
+__stdcall
+NetrServerSetInfo(
+    SRVSVC_HANDLE ServerName,
+    DWORD Level,
+    LPSERVER_INFO ServerInfo,
+    DWORD *ParmErr)
+{
+    UNIMPLEMENTED;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+
+/* Function 23 */
+NET_API_STATUS
+__stdcall
+NetrServerDiskEnum(
+    SRVSVC_HANDLE ServerName,
+    DWORD Level,
+    DISK_ENUM_CONTAINER *DiskInfoStruct,
+    DWORD PreferedMaximumLength,
+    DWORD *TotalEntries,
+    DWORD *ResumeHandle)
+{
+    UNIMPLEMENTED;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+
+/* Function 24 */
+NET_API_STATUS
+__stdcall
+NetrServerStatisticsGet(
+    SRVSVC_HANDLE ServerName,
+    WCHAR *Service,
+    DWORD Level,
+    DWORD Options,
+    LPSTAT_SERVER_0 *InfoStruct)
+{
+    UNIMPLEMENTED;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+
+/* Function 25 */
+NET_API_STATUS
+__stdcall
+NetrServerTransportAdd(
+    SRVSVC_HANDLE ServerName,
+    DWORD Level,
+    LPSERVER_TRANSPORT_INFO_0 Buffer)
+{
+    UNIMPLEMENTED;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+
+/* Function 26 */
+NET_API_STATUS
+__stdcall
+NetrServerTransportEnum(
+    SRVSVC_HANDLE ServerName,
+    LPSERVER_XPORT_ENUM_STRUCT InfoStruct,
+    DWORD PreferedMaximumLength,
+    DWORD *TotalEntries,
+    DWORD *ResumeHandle)
+{
+    UNIMPLEMENTED;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+
+/* Function 27 */
+NET_API_STATUS
+__stdcall
+NetrServerTransportDel(
+    SRVSVC_HANDLE ServerName,
+    DWORD Level,
+    LPSERVER_TRANSPORT_INFO_0 Buffer)
+{
+    UNIMPLEMENTED;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+
+/* Function 28 */
+NET_API_STATUS
+__stdcall
+NetrRemoteTOD(
+    SRVSVC_HANDLE ServerName,
+    LPTIME_OF_DAY_INFO *BufferPtr)
+{
+    SYSTEMTIME SystemTime;
+    LARGE_INTEGER Time;
+    TIME_ZONE_INFORMATION TimeZoneInfo;
+    DWORD TimeZoneId;
+    LPTIME_OF_DAY_INFO lpTod;
+
+    TRACE("NetrRemoteTOD(%p %p)\n", ServerName, BufferPtr);
+
+    *BufferPtr = midl_user_allocate(sizeof(TIME_OF_DAY_INFO));
+    if (*BufferPtr == NULL)
+        return ERROR_NOT_ENOUGH_MEMORY;
+
+    lpTod = *BufferPtr;
+
+    /* Set the seconds since 1970 */
+    NtQuerySystemTime(&Time);
+    RtlTimeToSecondsSince1970(&Time,
+                              &lpTod->tod_elapsedt);
+
+    /* Set the tick count */
+    lpTod->tod_msecs = GetTickCount();
+
+    /* Set the timezone */
+    TimeZoneId = GetTimeZoneInformation(&TimeZoneInfo);
+
+    switch (TimeZoneId)
+    {
+        case TIME_ZONE_ID_UNKNOWN:
+            lpTod->tod_timezone = TimeZoneInfo.Bias;
+            break;
+
+        case TIME_ZONE_ID_STANDARD:
+            lpTod->tod_timezone = TimeZoneInfo.Bias + TimeZoneInfo.StandardBias;
+            break;
+
+        case TIME_ZONE_ID_DAYLIGHT:
+            lpTod->tod_timezone = TimeZoneInfo.Bias + TimeZoneInfo.DaylightBias;
+            break;
+
+        default:
+            lpTod->tod_timezone = 0;
+    }
+
+    /* Set the ??? */
+    lpTod->tod_tinterval = 310;
+
+    /* Set the date and time */
+    GetSystemTime(&SystemTime);
+    lpTod->tod_hours = SystemTime.wHour;
+    lpTod->tod_mins = SystemTime.wMinute;
+    lpTod->tod_secs = SystemTime.wSecond;
+    lpTod->tod_hunds = SystemTime.wMilliseconds / 10;
+    lpTod->tod_day = SystemTime.wDay;
+    lpTod->tod_month = SystemTime.wMonth;
+    lpTod->tod_year = SystemTime.wYear;
+    lpTod->tod_weekday = SystemTime.wDayOfWeek;
+
+    return NERR_Success;
+}
+
+
+/* Function 29 */
+void
+__stdcall
+Opnum29NotUsedOnWire(void)
+{
+    UNIMPLEMENTED;
+}
+
+
+/* Function 30 */
+NET_API_STATUS
+__stdcall
+NetprPathType(
+    SRVSVC_HANDLE ServerName,
+    WCHAR *PathName,
+    DWORD *PathType,
+    DWORD Flags)
+{
+    UNIMPLEMENTED;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+
+/* Function 31 */
+NET_API_STATUS
+__stdcall
+NetprPathCanonicalize(
+    SRVSVC_HANDLE ServerName,
+    WCHAR *PathName,
+    unsigned char *Outbuf,
+    DWORD OutbufLen,
+    WCHAR *Prefix,
+    DWORD *PathType,
+    DWORD Flags)
+{
+    UNIMPLEMENTED;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+
+/* Function 32 */
+long
+__stdcall
+NetprPathCompare(
+    SRVSVC_HANDLE ServerName,
+    WCHAR *PathName1,
+    WCHAR *PathName2,
+    DWORD PathType,
+    DWORD Flags)
+{
+    UNIMPLEMENTED;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+
+/* Function 33 */
+NET_API_STATUS
+__stdcall
+NetprNameValidate(
+    SRVSVC_HANDLE ServerName,
+    WCHAR * Name,
+    DWORD NameType,
+    DWORD Flags)
+{
+    UNIMPLEMENTED;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+
+/* Function 34 */
+NET_API_STATUS
+__stdcall
+NetprNameCanonicalize(
+    SRVSVC_HANDLE ServerName,
+    WCHAR *Name,
+    WCHAR *Outbuf,
+    DWORD OutbufLen,
+    DWORD NameType,
+    DWORD Flags)
+{
+    UNIMPLEMENTED;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+
+/* Function 35 */
+long
+__stdcall
+NetprNameCompare(
+    SRVSVC_HANDLE ServerName,
+    WCHAR *Name1,
+    WCHAR *Name2,
+    DWORD NameType,
+    DWORD Flags)
+{
+    UNIMPLEMENTED;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+
+/* Function 36 */
+NET_API_STATUS
+__stdcall
+NetrShareEnumSticky(
+    SRVSVC_HANDLE ServerName,
+    LPSHARE_ENUM_STRUCT InfoStruct,
+    DWORD PreferedMaximumLength,
+    DWORD *TotalEntries,
+    DWORD *ResumeHandle)
+{
+    UNIMPLEMENTED;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+
+/* Function 37 */
+NET_API_STATUS
+__stdcall
+NetrShareDelStart(
+    SRVSVC_HANDLE ServerName,
+    WCHAR *NetName,
+    DWORD Reserved,
+    PSHARE_DEL_HANDLE ContextHandle)
+{
+    UNIMPLEMENTED;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+
+/* Function 38 */
+NET_API_STATUS
+__stdcall
+NetrShareDelCommit(
+    PSHARE_DEL_HANDLE ContextHandle)
+{
+    UNIMPLEMENTED;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+
+/* Function 39 */
+DWORD
+__stdcall
+NetrpGetFileSecurity(
+    SRVSVC_HANDLE ServerName,
+    WCHAR *ShareName,
+    WCHAR *lpFileName,
+    SECURITY_INFORMATION RequestedInformation,
+    PADT_SECURITY_DESCRIPTOR *SecurityDescriptor)
+{
+    UNIMPLEMENTED;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+
+/* Function 40 */
+DWORD
+__stdcall
+NetrpSetFileSecurity(
+    SRVSVC_HANDLE ServerName,
+    WCHAR *ShareName,
+    WCHAR *lpFileName,
+    SECURITY_INFORMATION SecurityInformation,
+    PADT_SECURITY_DESCRIPTOR SecurityDescriptor)
+{
+    UNIMPLEMENTED;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+
+/* Function 41 */
+NET_API_STATUS
+__stdcall
+NetrServerTransportAddEx(
+    SRVSVC_HANDLE ServerName,
+    DWORD Level,
+    LPTRANSPORT_INFO Buffer)
+{
+    UNIMPLEMENTED;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+
+/* Function 42 */
+void
+__stdcall
+Opnum42NotUsedOnWire(void)
+{
+    UNIMPLEMENTED;
+}
+
+
+/* Function 43 */
+NET_API_STATUS
+__stdcall
+NetrDfsGetVersion(
+    SRVSVC_HANDLE ServerName,
+    DWORD *Version)
+{
+    UNIMPLEMENTED;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+
+/* Function 44 */
+NET_API_STATUS
+__stdcall
+NetrDfsCreateLocalPartition(
+    SRVSVC_HANDLE ServerName,
+    WCHAR *ShareName,
+    GUID *EntryUid,
+    WCHAR *EntryPrefix,
+    WCHAR *ShortName,
+    LPNET_DFS_ENTRY_ID_CONTAINER RelationInfo,
+    int Force)
+{
+    UNIMPLEMENTED;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+
+/* Function 45 */
+NET_API_STATUS
+__stdcall
+NetrDfsDeleteLocalPartition(
+    SRVSVC_HANDLE ServerName,
+    GUID *Uid,
+    WCHAR *Prefix)
+{
+    UNIMPLEMENTED;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+
+/* Function 46 */
+NET_API_STATUS
+__stdcall
+NetrDfsSetLocalVolumeState(
+    SRVSVC_HANDLE ServerName,
+    GUID *Uid,
+    WCHAR *Prefix,
+    unsigned long State)
+{
+    UNIMPLEMENTED;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+
+/* Function 47 */
+void
+__stdcall
+Opnum47NotUsedOnWire(void)
+{
+    UNIMPLEMENTED;
+}
+
+
+/* Function 48 */
+NET_API_STATUS
+__stdcall
+NetrDfsCreateExitPoint(
+    SRVSVC_HANDLE ServerName,
+    GUID *Uid,
+    WCHAR *Prefix,
+    unsigned long Type,
+    DWORD ShortPrefixLen,
+    WCHAR *ShortPrefix)
+{
+    UNIMPLEMENTED;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+
+/* Function 49 */
+NET_API_STATUS
+__stdcall
+NetrDfsDeleteExitPoint(
+    SRVSVC_HANDLE ServerName,
+    GUID *Uid,
+    WCHAR *Prefix,
+    unsigned long Type)
+{
+    UNIMPLEMENTED;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+
+/* Function 50 */
+NET_API_STATUS
+__stdcall
+NetrDfsModifyPrefix(
+    SRVSVC_HANDLE ServerName,
+    GUID *Uid,
+    WCHAR *Prefix)
+{
+    UNIMPLEMENTED;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+
+/* Function 51 */
+NET_API_STATUS
+__stdcall
+NetrDfsFixLocalVolume(
+    SRVSVC_HANDLE ServerName,
+    WCHAR *VolumeName,
+    unsigned long EntryType,
+    unsigned long ServiceType,
+    WCHAR *StgId,
+    GUID *EntryUid,
+    WCHAR *EntryPrefix,
+    LPNET_DFS_ENTRY_ID_CONTAINER RelationInfo,
+    unsigned long CreateDisposition)
+{
+    UNIMPLEMENTED;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+
+/* Function 52 */
+NET_API_STATUS
+__stdcall
+NetrDfsManagerReportSiteInfo(
+    SRVSVC_HANDLE ServerName,
+    LPDFS_SITELIST_INFO *ppSiteInfo)
+{
+    UNIMPLEMENTED;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+
+/* Function 53 */
+NET_API_STATUS
+__stdcall
+NetrServerTransportDelEx(
+    SRVSVC_HANDLE ServerName,
+    DWORD Level,
+    LPTRANSPORT_INFO Buffer)
+{
+    UNIMPLEMENTED;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+/* EOF */