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
)
250 /* Function 12 - Not used on wire */
253 NetrMessageBufferSend(void)
255 TRACE("NetrMessageBufferSend()\n");
256 return ERROR_NOT_SUPPORTED
;
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
;
295 /* Function 14 - Not used on wire */
298 NetrLogonDomainNameAdd(
299 WKSSVC_IDENTIFY_HANDLE DomainName
)
301 TRACE("NetrLogonDomainNameAdd(%s)\n",
302 debugstr_w(DomainName
));
303 return ERROR_NOT_SUPPORTED
;
307 /* Function 15 - Not used on wire */
310 NetrLogonDomainNameDel(
311 WKSSVC_IDENTIFY_HANDLE DomainName
)
313 TRACE("NetrLogonDomainNameDel(%s)\n",
314 debugstr_w(DomainName
));
315 return ERROR_NOT_SUPPORTED
;
319 /* Function 16 - Not used on wire */
324 TRACE("NetrJoinDomain()\n");
325 return ERROR_NOT_SUPPORTED
;
329 /* Function 17 - Not used on wire */
332 NetrUnjoinDomain(void)
334 TRACE("NetrUnjoinDomain()\n");
335 return ERROR_NOT_SUPPORTED
;
339 /* Function 18 - Not used on wire */
342 NetrValidateName(void)
344 TRACE("NetrValidateName()\n");
345 return ERROR_NOT_SUPPORTED
;
349 /* Function 19 - Not used on wire */
352 NetrRenameMachineInDomain(void)
354 TRACE("NetrRenameMachineInDomain()\n");
355 return ERROR_NOT_SUPPORTED
;
362 NetrGetJoinInformation(
363 WKSSVC_IMPERSONATE_HANDLE ServerName
,
364 wchar_t **NameBuffer
,
365 PNETSETUP_JOIN_STATUS BufferType
)
367 TRACE("NetrGetJoinInformation()\n");
370 *BufferType
= NetSetupUnjoined
;
376 /* Function 21 - Not used on wire */
379 NetrGetJoinableOUs(void)
381 TRACE("NetrGetJoinableOUs()\n");
382 return ERROR_NOT_SUPPORTED
;
390 handle_t RpcBindingHandle
,
392 wchar_t *DomainNameParam
,
393 wchar_t *MachineAccountOU
,
394 wchar_t *AccountName
,
395 PJOINPR_ENCRYPTED_USER_PASSWORD Password
,
396 unsigned long Options
)
407 handle_t RpcBindingHandle
,
409 wchar_t *AccountName
,
410 PJOINPR_ENCRYPTED_USER_PASSWORD Password
,
411 unsigned long Options
)
421 NetrRenameMachineInDomain2(
422 handle_t RpcBindingHandle
,
424 wchar_t *MachineName
,
425 wchar_t *AccountName
,
426 PJOINPR_ENCRYPTED_USER_PASSWORD Password
,
427 unsigned long Options
)
438 handle_t RpcBindingHandle
,
440 wchar_t *NameToValidate
,
441 wchar_t *AccountName
,
442 PJOINPR_ENCRYPTED_USER_PASSWORD Password
,
443 NETSETUP_NAME_TYPE NameType
)
454 handle_t RpcBindingHandle
,
456 wchar_t *DomainNameParam
,
457 wchar_t *AccountName
,
458 PJOINPR_ENCRYPTED_USER_PASSWORD Password
,
459 unsigned long* OUCount
,
470 NetrAddAlternateComputerName(
471 handle_t RpcBindingHandle
,
473 wchar_t *AlternateName
,
474 wchar_t *DomainAccount
,
475 PJOINPR_ENCRYPTED_USER_PASSWORD EncryptedPassword
,
476 unsigned long Reserved
)
486 NetrRemoveAlternateComputerName(
487 handle_t RpcBindingHandle
,
489 wchar_t *AlternateName
,
490 wchar_t *DomainAccount
,
491 PJOINPR_ENCRYPTED_USER_PASSWORD EncryptedPassword
,
492 unsigned long Reserved
)
502 NetrSetPrimaryComputerName(
503 handle_t RpcBindingHandle
,
505 wchar_t *PrimaryName
,
506 wchar_t *DomainAccount
,
507 PJOINPR_ENCRYPTED_USER_PASSWORD EncryptedPassword
,
508 unsigned long Reserved
)
518 NetrEnumerateComputerNames(
519 WKSSVC_IMPERSONATE_HANDLE ServerName
,
520 NET_COMPUTER_NAME_TYPE NameType
,
521 unsigned long Reserved
,
522 PNET_COMPUTER_NAME_ARRAY
*ComputerNames
)