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/wkssvc/rpcserver.c
23 * PURPOSE: Workstation service
24 * PROGRAMMER: Eric Kohl
27 /* INCLUDES *****************************************************************/
33 WINE_DEFAULT_DEBUG_CHANNEL(wkssvc
);
35 /* FUNCTIONS *****************************************************************/
44 Status
= RpcServerUseProtseqEpW(L
"ncacn_np", 20, L
"\\pipe\\wkssvc", NULL
);
45 if (Status
!= RPC_S_OK
)
47 ERR("RpcServerUseProtseqEpW() failed (Status %lx)\n", Status
);
51 Status
= RpcServerRegisterIf(wkssvc_v1_0_s_ifspec
, NULL
, NULL
);
52 if (Status
!= RPC_S_OK
)
54 ERR("RpcServerRegisterIf() failed (Status %lx)\n", Status
);
58 Status
= RpcServerListen(1, RPC_C_LISTEN_MAX_CALLS_DEFAULT
, FALSE
);
59 if (Status
!= RPC_S_OK
)
61 ERR("RpcServerListen() failed (Status %lx)\n", Status
);
68 void __RPC_FAR
* __RPC_USER
midl_user_allocate(SIZE_T len
)
70 return HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY
, len
);
74 void __RPC_USER
midl_user_free(void __RPC_FAR
* ptr
)
76 HeapFree(GetProcessHeap(), 0, ptr
);
84 WKSSVC_IDENTIFY_HANDLE ServerName
,
86 LPWKSTA_INFO WkstaInfo
)
88 TRACE("NetrWkstaGetInfo level %lu\n", Level
);
98 WKSSVC_IDENTIFY_HANDLE ServerName
,
100 LPWKSTA_INFO WkstaInfo
,
101 unsigned long *ErrorParameter
)
112 WKSSVC_IDENTIFY_HANDLE ServerName
,
113 LPWKSTA_USER_ENUM_STRUCT UserInfo
,
114 unsigned long PreferredMaximumLength
,
115 unsigned long *TotalEntries
,
116 unsigned long *ResumeHandle
)
126 NetrWkstaUserGetInfo(
127 WKSSVC_IDENTIFY_HANDLE Unused
,
129 LPWKSTA_USER_INFO UserInfo
)
131 FIXME("(%s, %d, %p)\n", debugstr_w(Unused
), Level
, UserInfo
);
141 NetrWkstaUserSetInfo (
142 WKSSVC_IDENTIFY_HANDLE Unused
,
144 LPWKSTA_USER_INFO UserInfo
,
145 unsigned long *ErrorParameter
)
155 NetrWkstaTransportEnum(
156 WKSSVC_IDENTIFY_HANDLE ServerName
,
157 LPWKSTA_TRANSPORT_ENUM_STRUCT TransportInfo
,
158 unsigned long PreferredMaximumLength
,
159 unsigned long* TotalEntries
,
160 unsigned long *ResumeHandle
)
170 NetrWkstaTransportAdd(
171 WKSSVC_IDENTIFY_HANDLE ServerName
,
173 LPWKSTA_TRANSPORT_INFO_0 TransportInfo
,
174 unsigned long *ErrorParameter
)
184 NetrWkstaTransportDel(
185 WKSSVC_IDENTIFY_HANDLE ServerName
,
186 wchar_t *TransportName
,
187 unsigned long ForceLevel
)
198 WKSSVC_IMPERSONATE_HANDLE ServerName
,
200 LPUSE_INFO InfoStruct
,
201 unsigned long *ErrorParameter
)
212 WKSSVC_IMPERSONATE_HANDLE ServerName
,
215 LPUSE_INFO InfoStruct
)
226 WKSSVC_IMPERSONATE_HANDLE ServerName
,
228 unsigned long ForceLevel
)
239 WKSSVC_IDENTIFY_HANDLE ServerName
,
240 LPUSE_ENUM_STRUCT InfoStruct
,
241 unsigned long PreferredMaximumLength
,
242 unsigned long *TotalEntries
,
243 unsigned long *ResumeHandle
)
253 Opnum12NotUsedOnWire(void)
263 NetrWorkstationStatisticsGet(
264 WKSSVC_IDENTIFY_HANDLE ServerName
,
265 wchar_t *ServiceName
,
267 unsigned long Options
,
268 LPSTAT_WORKSTATION_0
*Buffer
)
270 PSTAT_WORKSTATION_0 pStatBuffer
;
272 TRACE("NetrWorkstationStatisticsGet(%p %p %lu 0x%lx %p)\n",
273 ServerName
, ServiceName
, Level
, Options
, Buffer
);
276 return ERROR_INVALID_LEVEL
;
279 return ERROR_INVALID_PARAMETER
;
281 pStatBuffer
= midl_user_allocate(sizeof(STAT_WORKSTATION_0
));
282 if (pStatBuffer
== NULL
)
283 return ERROR_NOT_ENOUGH_MEMORY
;
285 ZeroMemory(pStatBuffer
, sizeof(STAT_WORKSTATION_0
));
287 // FIXME: Return the actual statistcs data!
289 *Buffer
= pStatBuffer
;
298 Opnum14NotUsedOnWire(void)
308 Opnum15NotUsedOnWire(void)
318 Opnum16NotUsedOnWire(void)
328 Opnum17NotUsedOnWire(void)
338 Opnum18NotUsedOnWire(void)
348 Opnum19NotUsedOnWire(void)
358 NetrGetJoinInformation(
359 WKSSVC_IMPERSONATE_HANDLE ServerName
,
360 wchar_t **NameBuffer
,
361 PNETSETUP_JOIN_STATUS BufferType
)
363 TRACE("NetrGetJoinInformation()\n");
366 *BufferType
= NetSetupUnjoined
;
375 Opnum21NotUsedOnWire(void)
386 handle_t RpcBindingHandle
,
388 wchar_t *DomainNameParam
,
389 wchar_t *MachineAccountOU
,
390 wchar_t *AccountName
,
391 PJOINPR_ENCRYPTED_USER_PASSWORD Password
,
392 unsigned long Options
)
403 handle_t RpcBindingHandle
,
405 wchar_t *AccountName
,
406 PJOINPR_ENCRYPTED_USER_PASSWORD Password
,
407 unsigned long Options
)
417 NetrRenameMachineInDomain2(
418 handle_t RpcBindingHandle
,
420 wchar_t *MachineName
,
421 wchar_t *AccountName
,
422 PJOINPR_ENCRYPTED_USER_PASSWORD Password
,
423 unsigned long Options
)
434 handle_t RpcBindingHandle
,
436 wchar_t *NameToValidate
,
437 wchar_t *AccountName
,
438 PJOINPR_ENCRYPTED_USER_PASSWORD Password
,
439 NETSETUP_NAME_TYPE NameType
)
450 handle_t RpcBindingHandle
,
452 wchar_t *DomainNameParam
,
453 wchar_t *AccountName
,
454 PJOINPR_ENCRYPTED_USER_PASSWORD Password
,
455 unsigned long* OUCount
,
466 NetrAddAlternateComputerName(
467 handle_t RpcBindingHandle
,
469 wchar_t *AlternateName
,
470 wchar_t *DomainAccount
,
471 PJOINPR_ENCRYPTED_USER_PASSWORD EncryptedPassword
,
472 unsigned long Reserved
)
482 NetrRemoveAlternateComputerName(
483 handle_t RpcBindingHandle
,
485 wchar_t *AlternateName
,
486 wchar_t *DomainAccount
,
487 PJOINPR_ENCRYPTED_USER_PASSWORD EncryptedPassword
,
488 unsigned long Reserved
)
498 NetrSetPrimaryComputerName(
499 handle_t RpcBindingHandle
,
501 wchar_t *PrimaryName
,
502 wchar_t *DomainAccount
,
503 PJOINPR_ENCRYPTED_USER_PASSWORD EncryptedPassword
,
504 unsigned long Reserved
)
514 NetrEnumerateComputerNames(
515 WKSSVC_IMPERSONATE_HANDLE ServerName
,
516 NET_COMPUTER_NAME_TYPE NameType
,
517 unsigned long Reserved
,
518 PNET_COMPUTER_NAME_ARRAY
*ComputerNames
)