Something went wrong. Try again.
Reactos
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993/* * 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 *****************************************************************/
DWORDWINAPIRpcThreadRoutine( 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__stdcallOpnum0NotUsedOnWire(void){ UNIMPLEMENTED;}
/* Function 1 */void__stdcallOpnum1NotUsedOnWire(void){ UNIMPLEMENTED;}
/* Function 2 */void__stdcallOpnum2NotUsedOnWire(void){ UNIMPLEMENTED;}
/* Function 3 */void__stdcallOpnum3NotUsedOnWire(void){ UNIMPLEMENTED;}
/* Function 4 */void__stdcallOpnum4NotUsedOnWire(void){ UNIMPLEMENTED;}
/* Function 5 */void__stdcallOpnum5NotUsedOnWire(void){ UNIMPLEMENTED;}
/* Function 6 */void__stdcallOpnum6NotUsedOnWire(void){ UNIMPLEMENTED;}
/* Function 7 */void__stdcallOpnum7NotUsedOnWire(void){ UNIMPLEMENTED;}
/* Function 8 */NET_API_STATUS__stdcallNetrConnectionEnum( SRVSVC_HANDLE ServerName, WCHAR *Qualifier, LPCONNECT_ENUM_STRUCT InfoStruct, DWORD PreferedMaximumLength, DWORD *TotalEntries, DWORD *ResumeHandle){ UNIMPLEMENTED; return 0;}
/* Function 9 */NET_API_STATUS__stdcallNetrFileEnum( 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__stdcallNetrFileGetInfo( SRVSVC_HANDLE ServerName, DWORD FileId, DWORD Level, LPFILE_INFO InfoStruct){ UNIMPLEMENTED; return 0;}
/* Function 11 */NET_API_STATUS__stdcallNetrFileClose( SRVSVC_HANDLE ServerName, DWORD FileId){ UNIMPLEMENTED; return 0;}
/* Function 12 */NET_API_STATUS__stdcallNetrSessionEnum( 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__stdcallNetrSessionDel( SRVSVC_HANDLE ServerName, WCHAR *ClientName, WCHAR *UserName){ UNIMPLEMENTED; return ERROR_CALL_NOT_IMPLEMENTED;}
/* Function 14 */NET_API_STATUS__stdcallNetrShareAdd( SRVSVC_HANDLE ServerName, DWORD Level, LPSHARE_INFO InfoStruct, DWORD *ParmErr){ UNIMPLEMENTED; return ERROR_CALL_NOT_IMPLEMENTED;}
/* Function 15 */NET_API_STATUS__stdcallNetrShareEnum( SRVSVC_HANDLE ServerName, LPSHARE_ENUM_STRUCT InfoStruct, DWORD PreferedMaximumLength, DWORD *TotalEntries, DWORD *ResumeHandle){ UNIMPLEMENTED; return ERROR_CALL_NOT_IMPLEMENTED;}
/* Function 16 */NET_API_STATUS__stdcallNetrShareGetInfo( SRVSVC_HANDLE ServerName, WCHAR *NetName, DWORD Level, LPSHARE_INFO InfoStruct){ UNIMPLEMENTED; return ERROR_CALL_NOT_IMPLEMENTED;}
/* Function 17 */NET_API_STATUS__stdcallNetrShareSetInfo( SRVSVC_HANDLE ServerName, WCHAR *NetName, DWORD Level, LPSHARE_INFO ShareInfo, DWORD *ParmErr){ UNIMPLEMENTED; return ERROR_CALL_NOT_IMPLEMENTED;}
/* Function 18 */NET_API_STATUS__stdcallNetrShareDel( SRVSVC_HANDLE ServerName, WCHAR *NetName, DWORD Reserved){ UNIMPLEMENTED; return ERROR_CALL_NOT_IMPLEMENTED;}
/* Function 19 */NET_API_STATUS__stdcallNetrShareDelSticky( SRVSVC_HANDLE ServerName, WCHAR *NetName, DWORD Reserved){ UNIMPLEMENTED; return ERROR_CALL_NOT_IMPLEMENTED;}
/* Function 20 */NET_API_STATUS__stdcallNetrShareCheck( SRVSVC_HANDLE ServerName, WCHAR *Device, DWORD *Type){ UNIMPLEMENTED; return ERROR_CALL_NOT_IMPLEMENTED;}
/* Function 21 */NET_API_STATUS__stdcallNetrServerGetInfo( SRVSVC_HANDLE ServerName, DWORD Level, LPSERVER_INFO *InfoStruct){ WCHAR szComputerName[MAX_COMPUTERNAME_LENGTH + 1]; DWORD dwComputerNameLength, dwSize; PSERVER_INFO pServerInfo = NULL; OSVERSIONINFOW VersionInfo;
TRACE("NetrServerGetInfo(%p %lu %p)\n", ServerName, Level, InfoStruct);
dwComputerNameLength = MAX_COMPUTERNAME_LENGTH + 1; GetComputerNameW(szComputerName, &dwComputerNameLength); dwComputerNameLength++; /* include NULL terminator */
VersionInfo.dwOSVersionInfoSize = sizeof(VersionInfo); GetVersionExW(&VersionInfo);
switch (Level) { case 100: dwSize = sizeof(SERVER_INFO_100) + dwComputerNameLength * sizeof(WCHAR); pServerInfo = midl_user_allocate(dwSize); if (pServerInfo == NULL) return ERROR_NOT_ENOUGH_MEMORY;
pServerInfo->ServerInfo100.sv100_platform_id = PLATFORM_ID_NT; pServerInfo->ServerInfo100.sv100_name = (LPWSTR)((ULONG_PTR)pServerInfo + sizeof(SERVER_INFO_100)); wcscpy(pServerInfo->ServerInfo100.sv100_name, szComputerName);
*InfoStruct = pServerInfo; break;
case 101: dwSize = sizeof(SERVER_INFO_101) + dwComputerNameLength * sizeof(WCHAR); pServerInfo = midl_user_allocate(dwSize); if (pServerInfo == NULL) return ERROR_NOT_ENOUGH_MEMORY;
pServerInfo->ServerInfo101.sv101_platform_id = PLATFORM_ID_NT; pServerInfo->ServerInfo101.sv101_name = (LPWSTR)((ULONG_PTR)pServerInfo + sizeof(SERVER_INFO_101)); wcscpy(pServerInfo->ServerInfo101.sv101_name, szComputerName);
pServerInfo->ServerInfo101.sv101_version_major = VersionInfo.dwMajorVersion; pServerInfo->ServerInfo101.sv101_version_minor = VersionInfo.dwMinorVersion; pServerInfo->ServerInfo101.sv101_type = dwServiceBits | SV_TYPE_NT; pServerInfo->ServerInfo101.sv101_comment = NULL; /* FIXME */
*InfoStruct = pServerInfo; break;
case 102: dwSize = sizeof(SERVER_INFO_102) + dwComputerNameLength * sizeof(WCHAR); pServerInfo = midl_user_allocate(dwSize); if (pServerInfo == NULL) return ERROR_NOT_ENOUGH_MEMORY;
pServerInfo->ServerInfo102.sv102_platform_id = PLATFORM_ID_NT; pServerInfo->ServerInfo102.sv102_name = (LPWSTR)((ULONG_PTR)pServerInfo + sizeof(SERVER_INFO_102)); wcscpy(pServerInfo->ServerInfo102.sv102_name, szComputerName);
pServerInfo->ServerInfo102.sv102_version_major = VersionInfo.dwMajorVersion; pServerInfo->ServerInfo102.sv102_version_minor = VersionInfo.dwMinorVersion; pServerInfo->ServerInfo102.sv102_type = dwServiceBits | SV_TYPE_NT; pServerInfo->ServerInfo102.sv102_comment = NULL; /* FIXME */
pServerInfo->ServerInfo102.sv102_users = 0; /* FIXME */ pServerInfo->ServerInfo102.sv102_disc = 0; /* FIXME */ pServerInfo->ServerInfo102.sv102_hidden = SV_VISIBLE; /* FIXME */ pServerInfo->ServerInfo102.sv102_announce = 0; /* FIXME */ pServerInfo->ServerInfo102.sv102_anndelta = 0; /* FIXME */ pServerInfo->ServerInfo102.sv102_licenses = 0; /* FIXME */ pServerInfo->ServerInfo102.sv102_userpath = NULL; /* FIXME */
*InfoStruct = pServerInfo; break;
default: FIXME("level %d unimplemented\n", Level); return ERROR_INVALID_LEVEL; }
return NERR_Success;}
/* Function 22 */NET_API_STATUS__stdcallNetrServerSetInfo( SRVSVC_HANDLE ServerName, DWORD Level, LPSERVER_INFO ServerInfo, DWORD *ParmErr){ UNIMPLEMENTED; return ERROR_CALL_NOT_IMPLEMENTED;}
/* Function 23 */NET_API_STATUS__stdcallNetrServerDiskEnum( 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__stdcallNetrServerStatisticsGet( SRVSVC_HANDLE ServerName, WCHAR *Service, DWORD Level, DWORD Options, LPSTAT_SERVER_0 *InfoStruct){ SYSTEM_TIMEOFDAY_INFORMATION TimeOfDayInfo; PSTAT_SERVER_0 pStatBuffer = NULL; NTSTATUS Status;
TRACE("NetrServerStatisticsGet(%p %p %lu 0x%lx %p)\n", ServerName, Service, Level, Options, InfoStruct);
if (Level != 0) return ERROR_INVALID_LEVEL;
if (Options != 0) return ERROR_INVALID_PARAMETER;
pStatBuffer = midl_user_allocate(sizeof(STAT_SERVER_0)); if (pStatBuffer == NULL) return ERROR_NOT_ENOUGH_MEMORY;
ZeroMemory(pStatBuffer, sizeof(STAT_SERVER_0));
/* Query the boot time */ Status = NtQuerySystemInformation(SystemTimeOfDayInformation, &TimeOfDayInfo, sizeof(TimeOfDayInfo), NULL); if (NT_SUCCESS(Status)) { ULONG Seconds = 0; if (RtlTimeToSecondsSince1970(&TimeOfDayInfo.BootTime, &Seconds)) { pStatBuffer->sts0_start = Seconds; } }
// FIXME: Return the actual statistcs data!
*InfoStruct = pStatBuffer;
return NERR_Success;}
/* Function 25 */NET_API_STATUS__stdcallNetrServerTransportAdd( SRVSVC_HANDLE ServerName, DWORD Level, LPSERVER_TRANSPORT_INFO_0 Buffer){ UNIMPLEMENTED; return ERROR_CALL_NOT_IMPLEMENTED;}
/* Function 26 */NET_API_STATUS__stdcallNetrServerTransportEnum( 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__stdcallNetrServerTransportDel( SRVSVC_HANDLE ServerName, DWORD Level, LPSERVER_TRANSPORT_INFO_0 Buffer){ UNIMPLEMENTED; return ERROR_CALL_NOT_IMPLEMENTED;}
/* Function 28 */NET_API_STATUS__stdcallNetrRemoteTOD( 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 - Not used on wire */NET_API_STATUS__stdcallNetrServerSetServiceBits( SRVSVC_HANDLE ServerName, WCHAR *Transport, DWORD ServiceBits, DWORD UpdateImmediately){ FIXME("NetrServerSetServiceBits(%p %s %lx %lu)\n", ServerName, debugstr_w(Transport), ServiceBits, UpdateImmediately);
/* FIXME: Support Transport */ /* FIXME: Support UpdateImmdiately */
dwServiceBits = ServiceBits;
return NERR_Success;}
/* Function 30 */NET_API_STATUS__stdcallNetprPathType( SRVSVC_HANDLE ServerName, WCHAR *PathName, DWORD *PathType, DWORD Flags){ UNIMPLEMENTED; return ERROR_CALL_NOT_IMPLEMENTED;}
/* Function 31 */NET_API_STATUS__stdcallNetprPathCanonicalize( 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__stdcallNetprPathCompare( SRVSVC_HANDLE ServerName, WCHAR *PathName1, WCHAR *PathName2, DWORD PathType, DWORD Flags){ UNIMPLEMENTED; return ERROR_CALL_NOT_IMPLEMENTED;}
/* Function 33 */NET_API_STATUS__stdcallNetprNameValidate( SRVSVC_HANDLE ServerName, WCHAR * Name, DWORD NameType, DWORD Flags){ UNIMPLEMENTED; return ERROR_CALL_NOT_IMPLEMENTED;}
/* Function 34 */NET_API_STATUS__stdcallNetprNameCanonicalize( SRVSVC_HANDLE ServerName, WCHAR *Name, WCHAR *Outbuf, DWORD OutbufLen, DWORD NameType, DWORD Flags){ UNIMPLEMENTED; return ERROR_CALL_NOT_IMPLEMENTED;}
/* Function 35 */long__stdcallNetprNameCompare( SRVSVC_HANDLE ServerName, WCHAR *Name1, WCHAR *Name2, DWORD NameType, DWORD Flags){ UNIMPLEMENTED; return ERROR_CALL_NOT_IMPLEMENTED;}
/* Function 36 */NET_API_STATUS__stdcallNetrShareEnumSticky( SRVSVC_HANDLE ServerName, LPSHARE_ENUM_STRUCT InfoStruct, DWORD PreferedMaximumLength, DWORD *TotalEntries, DWORD *ResumeHandle){ UNIMPLEMENTED; return ERROR_CALL_NOT_IMPLEMENTED;}
/* Function 37 */NET_API_STATUS__stdcallNetrShareDelStart( SRVSVC_HANDLE ServerName, WCHAR *NetName, DWORD Reserved, PSHARE_DEL_HANDLE ContextHandle){ UNIMPLEMENTED; return ERROR_CALL_NOT_IMPLEMENTED;}
/* Function 38 */NET_API_STATUS__stdcallNetrShareDelCommit( PSHARE_DEL_HANDLE ContextHandle){ UNIMPLEMENTED; return ERROR_CALL_NOT_IMPLEMENTED;}
/* Function 39 */DWORD__stdcallNetrpGetFileSecurity( SRVSVC_HANDLE ServerName, WCHAR *ShareName, WCHAR *lpFileName, SECURITY_INFORMATION RequestedInformation, PADT_SECURITY_DESCRIPTOR *SecurityDescriptor){ UNIMPLEMENTED; return ERROR_CALL_NOT_IMPLEMENTED;}
/* Function 40 */DWORD__stdcallNetrpSetFileSecurity( 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__stdcallNetrServerTransportAddEx( SRVSVC_HANDLE ServerName, DWORD Level, LPTRANSPORT_INFO Buffer){ UNIMPLEMENTED; return ERROR_CALL_NOT_IMPLEMENTED;}
/* Function 42 - Not used on wire */NET_API_STATUS__stdcallNetrServerSetServiceBitsEx( SRVSVC_HANDLE ServerName, WCHAR *EmulatedServer, WCHAR *Transport, DWORD ServiceBitsOfInterest, DWORD ServiceBits, DWORD UpdateImmediately){ UNIMPLEMENTED; return ERROR_CALL_NOT_IMPLEMENTED;}
/* Function 43 */NET_API_STATUS__stdcallNetrDfsGetVersion( SRVSVC_HANDLE ServerName, DWORD *Version){ UNIMPLEMENTED; return ERROR_CALL_NOT_IMPLEMENTED;}
/* Function 44 */NET_API_STATUS__stdcallNetrDfsCreateLocalPartition( 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__stdcallNetrDfsDeleteLocalPartition( SRVSVC_HANDLE ServerName, GUID *Uid, WCHAR *Prefix){ UNIMPLEMENTED; return ERROR_CALL_NOT_IMPLEMENTED;}
/* Function 46 */NET_API_STATUS__stdcallNetrDfsSetLocalVolumeState( SRVSVC_HANDLE ServerName, GUID *Uid, WCHAR *Prefix, unsigned long State){ UNIMPLEMENTED; return ERROR_CALL_NOT_IMPLEMENTED;}
/* Function 47 - Not used on wire */NET_API_STATUS__stdcallNetrDfsSetServerInfo(void){ UNIMPLEMENTED; return ERROR_CALL_NOT_IMPLEMENTED;}
/* Function 48 */NET_API_STATUS__stdcallNetrDfsCreateExitPoint( 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__stdcallNetrDfsDeleteExitPoint( SRVSVC_HANDLE ServerName, GUID *Uid, WCHAR *Prefix, unsigned long Type){ UNIMPLEMENTED; return ERROR_CALL_NOT_IMPLEMENTED;}
/* Function 50 */NET_API_STATUS__stdcallNetrDfsModifyPrefix( SRVSVC_HANDLE ServerName, GUID *Uid, WCHAR *Prefix){ UNIMPLEMENTED; return ERROR_CALL_NOT_IMPLEMENTED;}
/* Function 51 */NET_API_STATUS__stdcallNetrDfsFixLocalVolume( 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__stdcallNetrDfsManagerReportSiteInfo( SRVSVC_HANDLE ServerName, LPDFS_SITELIST_INFO *ppSiteInfo){ UNIMPLEMENTED; return ERROR_CALL_NOT_IMPLEMENTED;}
/* Function 53 */NET_API_STATUS__stdcallNetrServerTransportDelEx( SRVSVC_HANDLE ServerName, DWORD Level, LPTRANSPORT_INFO Buffer){ UNIMPLEMENTED; return ERROR_CALL_NOT_IMPLEMENTED;}
/* EOF */