ReactOS  0.4.15-dev-2701-g34593d9
rpcserver.c
Go to the documentation of this file.
1 /*
2  * ReactOS Services
3  * Copyright (C) 2015 ReactOS Team
4  *
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.
9  *
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.
14  *
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.
18  */
19 /*
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
25  */
26 
27 /* INCLUDES *****************************************************************/
28 
29 #include "precomp.h"
30 
31 #include "lmerr.h"
32 
34 
35 /* FUNCTIONS *****************************************************************/
36 
37 DWORD
38 WINAPI
41 {
43 
44  Status = RpcServerUseProtseqEpW(L"ncacn_np", 20, L"\\pipe\\wkssvc", NULL);
45  if (Status != RPC_S_OK)
46  {
47  ERR("RpcServerUseProtseqEpW() failed (Status %lx)\n", Status);
48  return 0;
49  }
50 
51  Status = RpcServerRegisterIf(wkssvc_v1_0_s_ifspec, NULL, NULL);
52  if (Status != RPC_S_OK)
53  {
54  ERR("RpcServerRegisterIf() failed (Status %lx)\n", Status);
55  return 0;
56  }
57 
59  if (Status != RPC_S_OK)
60  {
61  ERR("RpcServerListen() failed (Status %lx)\n", Status);
62  }
63 
64  return 0;
65 }
66 
67 
69 {
71 }
72 
73 
75 {
77 }
78 
79 
80 /* Function 0 */
81 unsigned long
84  WKSSVC_IDENTIFY_HANDLE ServerName,
85  unsigned long Level,
86  LPWKSTA_INFO *WkstaInfo)
87 {
88  WCHAR szComputerName[MAX_COMPUTERNAME_LENGTH + 1];
89  DWORD dwComputerNameLength;
90  LPCWSTR pszLanRoot = L"";
91  PWKSTA_INFO pWkstaInfo = NULL;
93  LSA_HANDLE PolicyHandle;
94  PPOLICY_PRIMARY_DOMAIN_INFO DomainInfo = NULL;
95  NTSTATUS NtStatus;
96  DWORD dwResult = NERR_Success;
97 
98  TRACE("NetrWkstaGetInfo level %lu\n", Level);
99 
100  dwComputerNameLength = MAX_COMPUTERNAME_LENGTH + 1;
101  GetComputerNameW(szComputerName, &dwComputerNameLength);
102  dwComputerNameLength++; /* include NULL terminator */
103 
105  NtStatus = LsaOpenPolicy(NULL,
108  &PolicyHandle);
109  if (NtStatus != STATUS_SUCCESS)
110  {
111  WARN("LsaOpenPolicy() failed (Status 0x%08lx)\n", NtStatus);
112  return LsaNtStatusToWinError(NtStatus);
113  }
114 
115  NtStatus = LsaQueryInformationPolicy(PolicyHandle,
117  (PVOID*)&DomainInfo);
118 
119  LsaClose(PolicyHandle);
120 
121  if (NtStatus != STATUS_SUCCESS)
122  {
123  WARN("LsaQueryInformationPolicy() failed (Status 0x%08lx)\n", NtStatus);
124  return LsaNtStatusToWinError(NtStatus);
125  }
126 
127  switch (Level)
128  {
129  case 100:
130  pWkstaInfo = midl_user_allocate(sizeof(WKSTA_INFO_100));
131  if (pWkstaInfo == NULL)
132  {
133  dwResult = ERROR_NOT_ENOUGH_MEMORY;
134  break;
135  }
136 
138 
139  pWkstaInfo->WkstaInfo100.wki100_computername = midl_user_allocate(dwComputerNameLength * sizeof(WCHAR));
140  if (pWkstaInfo->WkstaInfo100.wki100_computername != NULL)
141  wcscpy(pWkstaInfo->WkstaInfo100.wki100_computername, szComputerName);
142 
143  pWkstaInfo->WkstaInfo100.wki100_langroup = midl_user_allocate((wcslen(DomainInfo->Name.Buffer) + 1) * sizeof(WCHAR));
144  if (pWkstaInfo->WkstaInfo100.wki100_langroup != NULL)
145  wcscpy(pWkstaInfo->WkstaInfo100.wki100_langroup, DomainInfo->Name.Buffer);
146 
149 
150  *WkstaInfo = pWkstaInfo;
151  break;
152 
153  case 101:
154  pWkstaInfo = midl_user_allocate(sizeof(WKSTA_INFO_101));
155  if (pWkstaInfo == NULL)
156  {
157  dwResult = ERROR_NOT_ENOUGH_MEMORY;
158  break;
159  }
160 
162 
163  pWkstaInfo->WkstaInfo101.wki101_computername = midl_user_allocate(dwComputerNameLength * sizeof(WCHAR));
164  if (pWkstaInfo->WkstaInfo101.wki101_computername != NULL)
165  wcscpy(pWkstaInfo->WkstaInfo101.wki101_computername, szComputerName);
166 
167  pWkstaInfo->WkstaInfo101.wki101_langroup = midl_user_allocate((wcslen(DomainInfo->Name.Buffer) + 1) * sizeof(WCHAR));
168  if (pWkstaInfo->WkstaInfo101.wki101_langroup != NULL)
169  wcscpy(pWkstaInfo->WkstaInfo101.wki101_langroup, DomainInfo->Name.Buffer);
170 
173 
174  pWkstaInfo->WkstaInfo101.wki101_lanroot = midl_user_allocate((wcslen(pszLanRoot) + 1) * sizeof(WCHAR));
175  if (pWkstaInfo->WkstaInfo101.wki101_lanroot != NULL)
176  wcscpy(pWkstaInfo->WkstaInfo101.wki101_lanroot, pszLanRoot);
177 
178  *WkstaInfo = pWkstaInfo;
179  break;
180 
181  case 102:
182  pWkstaInfo = midl_user_allocate(sizeof(WKSTA_INFO_102));
183  if (pWkstaInfo == NULL)
184  {
185  dwResult = ERROR_NOT_ENOUGH_MEMORY;
186  break;
187  }
188 
190 
191  pWkstaInfo->WkstaInfo102.wki102_computername = midl_user_allocate(dwComputerNameLength * sizeof(WCHAR));
192  if (pWkstaInfo->WkstaInfo102.wki102_computername != NULL)
193  wcscpy(pWkstaInfo->WkstaInfo102.wki102_computername, szComputerName);
194 
195  pWkstaInfo->WkstaInfo102.wki102_langroup = midl_user_allocate((wcslen(DomainInfo->Name.Buffer) + 1) * sizeof(WCHAR));
196  if (pWkstaInfo->WkstaInfo102.wki102_langroup != NULL)
197  wcscpy(pWkstaInfo->WkstaInfo102.wki102_langroup, DomainInfo->Name.Buffer);
198 
201 
202  pWkstaInfo->WkstaInfo102.wki102_lanroot = midl_user_allocate((wcslen(pszLanRoot) + 1) * sizeof(WCHAR));
203  if (pWkstaInfo->WkstaInfo102.wki102_lanroot != NULL)
204  wcscpy(pWkstaInfo->WkstaInfo102.wki102_lanroot, pszLanRoot);
205 
206  pWkstaInfo->WkstaInfo102.wki102_logged_on_users = 1; /* FIXME */
207 
208  *WkstaInfo = pWkstaInfo;
209  break;
210 
211  default:
212  FIXME("Level %d unimplemented\n", Level);
213  dwResult = ERROR_INVALID_LEVEL;
214  break;
215  }
216 
217  if (DomainInfo != NULL)
218  LsaFreeMemory(DomainInfo);
219 
220  return dwResult;
221 }
222 
223 
224 /* Function 1 */
225 unsigned long
226 __stdcall
228  WKSSVC_IDENTIFY_HANDLE ServerName,
229  unsigned long Level,
230  LPWKSTA_INFO WkstaInfo,
231  unsigned long *ErrorParameter)
232 {
234  return 0;
235 }
236 
237 
238 /* Function 2 */
239 unsigned long
240 __stdcall
242  WKSSVC_IDENTIFY_HANDLE ServerName,
243  LPWKSTA_USER_ENUM_STRUCT UserInfo,
244  unsigned long PreferredMaximumLength,
245  unsigned long *TotalEntries,
246  unsigned long *ResumeHandle)
247 {
248  ERR("NetrWkstaUserEnum(%p %p 0x%lx %p %p)\n",
249  ServerName, UserInfo, PreferredMaximumLength, TotalEntries, ResumeHandle);
250 
251 
253  return 0;
254 }
255 
256 
257 /* Function 3 */
258 unsigned long
259 __stdcall
262  unsigned long Level,
263  LPWKSTA_USER_INFO UserInfo)
264 {
265  FIXME("(%s, %d, %p)\n", debugstr_w(Unused), Level, UserInfo);
266 
268  return 0;
269 }
270 
271 
272 /* Function 4 */
273 unsigned long
274 __stdcall
277  unsigned long Level,
278  LPWKSTA_USER_INFO UserInfo,
279  unsigned long *ErrorParameter)
280 {
282  return 0;
283 }
284 
285 
286 /* Function 5 */
287 unsigned long
288 __stdcall
290  WKSSVC_IDENTIFY_HANDLE ServerName,
291  LPWKSTA_TRANSPORT_ENUM_STRUCT TransportInfo,
292  unsigned long PreferredMaximumLength,
293  unsigned long* TotalEntries,
294  unsigned long *ResumeHandle)
295 {
297  return 0;
298 }
299 
300 
301 /* Function 6 */
302 unsigned long
303 __stdcall
305  WKSSVC_IDENTIFY_HANDLE ServerName,
306  unsigned long Level,
307  LPWKSTA_TRANSPORT_INFO_0 TransportInfo,
308  unsigned long *ErrorParameter)
309 {
311  return 0;
312 }
313 
314 
315 /* Function 7 */
316 unsigned long
317 __stdcall
319  WKSSVC_IDENTIFY_HANDLE ServerName,
320  wchar_t *TransportName,
321  unsigned long ForceLevel)
322 {
324  return 0;
325 }
326 
327 
328 /* Function 8 */
329 unsigned long
330 __stdcall
332  WKSSVC_IMPERSONATE_HANDLE ServerName,
333  unsigned long Level,
334  LPUSE_INFO InfoStruct,
335  unsigned long *ErrorParameter)
336 {
338  return 0;
339 }
340 
341 
342 /* Function 9 */
343 unsigned long
344 __stdcall
346  WKSSVC_IMPERSONATE_HANDLE ServerName,
347  wchar_t *UseName,
348  unsigned long Level,
349  LPUSE_INFO InfoStruct)
350 {
352  return 0;
353 }
354 
355 
356 /* Function 10 */
357 unsigned long
358 __stdcall
360  WKSSVC_IMPERSONATE_HANDLE ServerName,
361  wchar_t *UseName,
362  unsigned long ForceLevel)
363 {
365  return 0;
366 }
367 
368 
369 /* Function 11 */
370 unsigned long
371 __stdcall
373  WKSSVC_IDENTIFY_HANDLE ServerName,
374  LPUSE_ENUM_STRUCT InfoStruct,
375  unsigned long PreferredMaximumLength,
376  unsigned long *TotalEntries,
377  unsigned long *ResumeHandle)
378 {
380  return 0;
381 }
382 
383 
384 /* Function 12 - Not used on wire */
385 unsigned long
386 __stdcall
388 {
389  TRACE("NetrMessageBufferSend()\n");
390  return ERROR_NOT_SUPPORTED;
391 }
392 
393 
394 /* Function 13 */
395 unsigned long
396 __stdcall
398  WKSSVC_IDENTIFY_HANDLE ServerName,
399  wchar_t *ServiceName,
400  unsigned long Level,
401  unsigned long Options,
403 {
404  PSTAT_WORKSTATION_0 pStatBuffer;
405 
406  TRACE("NetrWorkstationStatisticsGet(%p %p %lu 0x%lx %p)\n",
407  ServerName, ServiceName, Level, Options, Buffer);
408 
409  if (Level != 0)
410  return ERROR_INVALID_LEVEL;
411 
412  if (Options != 0)
414 
415  pStatBuffer = midl_user_allocate(sizeof(STAT_WORKSTATION_0));
416  if (pStatBuffer == NULL)
418 
419  ZeroMemory(pStatBuffer, sizeof(STAT_WORKSTATION_0));
420 
421  // FIXME: Return the actual statistcs data!
422 
423  *Buffer = pStatBuffer;
424 
425  return NERR_Success;
426 }
427 
428 
429 /* Function 14 - Not used on wire */
430 unsigned long
431 __stdcall
433  WKSSVC_IDENTIFY_HANDLE DomainName)
434 {
435  TRACE("NetrLogonDomainNameAdd(%s)\n",
436  debugstr_w(DomainName));
437  return ERROR_NOT_SUPPORTED;
438 }
439 
440 
441 /* Function 15 - Not used on wire */
442 unsigned long
443 __stdcall
445  WKSSVC_IDENTIFY_HANDLE DomainName)
446 {
447  TRACE("NetrLogonDomainNameDel(%s)\n",
448  debugstr_w(DomainName));
449  return ERROR_NOT_SUPPORTED;
450 }
451 
452 
453 /* Function 16 - Not used on wire */
454 unsigned long
455 __stdcall
457 {
458  TRACE("NetrJoinDomain()\n");
459  return ERROR_NOT_SUPPORTED;
460 }
461 
462 
463 /* Function 17 - Not used on wire */
464 unsigned long
465 __stdcall
467 {
468  TRACE("NetrUnjoinDomain()\n");
469  return ERROR_NOT_SUPPORTED;
470 }
471 
472 
473 /* Function 18 - Not used on wire */
474 unsigned long
475 __stdcall
477 {
478  TRACE("NetrValidateName()\n");
479  return ERROR_NOT_SUPPORTED;
480 }
481 
482 
483 /* Function 19 - Not used on wire */
484 unsigned long
485 __stdcall
487 {
488  TRACE("NetrRenameMachineInDomain()\n");
489  return ERROR_NOT_SUPPORTED;
490 }
491 
492 
493 /* Function 20 */
494 unsigned long
495 __stdcall
497  WKSSVC_IMPERSONATE_HANDLE ServerName,
498  wchar_t **NameBuffer,
499  PNETSETUP_JOIN_STATUS BufferType)
500 {
501  TRACE("NetrGetJoinInformation(%p %p %p)\n",
502  ServerName, NameBuffer, BufferType);
503 
504  if (NameBuffer == NULL)
506 
507  return NetpGetJoinInformation(NameBuffer,
508  BufferType);
509 }
510 
511 
512 /* Function 21 - Not used on wire */
513 unsigned long
514 __stdcall
516 {
517  TRACE("NetrGetJoinableOUs()\n");
518  return ERROR_NOT_SUPPORTED;
519 }
520 
521 
522 /* Function 22 */
523 unsigned long
524 __stdcall
526  handle_t RpcBindingHandle,
527  wchar_t *ServerName,
528  wchar_t *DomainNameParam,
529  wchar_t *MachineAccountOU,
530  wchar_t *AccountName,
532  unsigned long Options)
533 {
535 
536  FIXME("NetrJoinDomain2(%p %S %S %S %S %p 0x%lx)\n",
537  RpcBindingHandle, ServerName, DomainNameParam, MachineAccountOU,
538  AccountName, Password, Options);
539 
540  if (DomainNameParam == NULL)
542 
544  {
545  FIXME("NetrJoinDomain2: NETSETUP_JOIN_DOMAIN is not supported yet!\n");
547  }
548  else
549  {
550  status = NetpJoinWorkgroup(DomainNameParam);
551  }
552 
553  return status;
554 }
555 
556 
557 /* Function 23 */
558 unsigned long
559 __stdcall
561  handle_t RpcBindingHandle,
562  wchar_t *ServerName,
563  wchar_t *AccountName,
565  unsigned long Options)
566 {
568  return 0;
569 }
570 
571 
572 /* Function 24 */
573 unsigned long
574 __stdcall
576  handle_t RpcBindingHandle,
577  wchar_t *ServerName,
578  wchar_t *MachineName,
579  wchar_t *AccountName,
581  unsigned long Options)
582 {
584  return 0;
585 }
586 
587 
588 /* Function 25 */
589 unsigned long
590 __stdcall
592  handle_t RpcBindingHandle,
593  wchar_t *ServerName,
594  wchar_t *NameToValidate,
595  wchar_t *AccountName,
598 {
600  return 0;
601 }
602 
603 
604 /* Function 26 */
605 unsigned long
606 __stdcall
608  handle_t RpcBindingHandle,
609  wchar_t *ServerName,
610  wchar_t *DomainNameParam,
611  wchar_t *AccountName,
613  unsigned long* OUCount,
614  wchar_t ***OUs)
615 {
617  return 0;
618 }
619 
620 
621 /* Function 27 */
622 unsigned long
623 __stdcall
625  handle_t RpcBindingHandle,
626  wchar_t *ServerName,
627  wchar_t *AlternateName,
628  wchar_t *DomainAccount,
629  PJOINPR_ENCRYPTED_USER_PASSWORD EncryptedPassword,
630  unsigned long Reserved)
631 {
633  return 0;
634 }
635 
636 
637 /* Function 28 */
638 unsigned long
639 __stdcall
641  handle_t RpcBindingHandle,
642  wchar_t *ServerName,
643  wchar_t *AlternateName,
644  wchar_t *DomainAccount,
645  PJOINPR_ENCRYPTED_USER_PASSWORD EncryptedPassword,
646  unsigned long Reserved)
647 {
649  return 0;
650 }
651 
652 
653 /* Function 29 */
654 unsigned long
655 __stdcall
657  handle_t RpcBindingHandle,
658  wchar_t *ServerName,
659  wchar_t *PrimaryName,
660  wchar_t *DomainAccount,
661  PJOINPR_ENCRYPTED_USER_PASSWORD EncryptedPassword,
662  unsigned long Reserved)
663 {
665  return 0;
666 }
667 
668 
669 /* Function 30 */
670 unsigned long
671 __stdcall
673  WKSSVC_IMPERSONATE_HANDLE ServerName,
675  unsigned long Reserved,
676  PNET_COMPUTER_NAME_ARRAY *ComputerNames)
677 {
679  return 0;
680 }
681 
682 /* EOF */
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
WINE_DEFAULT_DEBUG_CHANNEL(browser)
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
Definition: conport.c:35
_Must_inspect_result_ typedef _In_ PVOID Unused
Definition: iotypes.h:1166
unsigned long __stdcall NetrMessageBufferSend(void)
Definition: rpcserver.c:387
unsigned long __stdcall NetrLogonDomainNameDel(WKSSVC_IDENTIFY_HANDLE DomainName)
Definition: rpcserver.c:444
unsigned long __stdcall NetrWorkstationStatisticsGet(WKSSVC_IDENTIFY_HANDLE ServerName, wchar_t *ServiceName, unsigned long Level, unsigned long Options, LPSTAT_WORKSTATION_0 *Buffer)
Definition: rpcserver.c:397
unsigned long __stdcall NetrGetJoinableOUs(void)
Definition: rpcserver.c:515
LPWSTR wki101_computername
Definition: lmwksta.h:73
unsigned long __stdcall NetrWkstaSetInfo(WKSSVC_IDENTIFY_HANDLE ServerName, unsigned long Level, LPWKSTA_INFO WkstaInfo, unsigned long *ErrorParameter)
Definition: rpcserver.c:227
unsigned long __stdcall NetrWkstaUserGetInfo(WKSSVC_IDENTIFY_HANDLE Unused, unsigned long Level, LPWKSTA_USER_INFO UserInfo)
Definition: rpcserver.c:260
enum _NET_COMPUTER_NAME_TYPE NET_COMPUTER_NAME_TYPE
NTSTATUS WINAPI LsaQueryInformationPolicy(IN LSA_HANDLE PolicyHandle, IN POLICY_INFORMATION_CLASS InformationClass, OUT PVOID *Buffer)
Definition: lsa.c:1471
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
unsigned long __stdcall NetrJoinDomain(void)
Definition: rpcserver.c:456
#define POLICY_VIEW_LOCAL_INFORMATION
Definition: ntsecapi.h:61
unsigned long __stdcall NetrAddAlternateComputerName(handle_t RpcBindingHandle, wchar_t *ServerName, wchar_t *AlternateName, wchar_t *DomainAccount, PJOINPR_ENCRYPTED_USER_PASSWORD EncryptedPassword, unsigned long Reserved)
Definition: rpcserver.c:624
#define WARN(fmt,...)
Definition: debug.h:112
LONG NTSTATUS
Definition: precomp.h:26
DWORD wki101_ver_minor
Definition: lmwksta.h:76
WKSTA_INFO_101 WkstaInfo101
Definition: wkssvc.idl:217
NTSTATUS WINAPI LsaClose(IN LSA_HANDLE ObjectHandle)
Definition: lsa.c:192
#define ERROR_NOT_ENOUGH_MEMORY
Definition: dderror.h:7
_In_ DWORD _Out_ PDWORD _In_opt_ PCSTR MachineName
Definition: setupapi.h:1286
#define ZeroMemory
Definition: winbase.h:1664
LPWSTR wki101_lanroot
Definition: lmwksta.h:77
wchar_t * WKSSVC_IMPERSONATE_HANDLE
Definition: wkssvc.idl:8
DWORD wki101_ver_major
Definition: lmwksta.h:75
_IRQL_requires_same_ typedef _In_ ULONG _In_ UCHAR Level
Definition: wmitypes.h:55
DWORD wki102_ver_minor
Definition: lmwksta.h:84
BOOL WINAPI GetComputerNameW(LPWSTR lpBuffer, LPDWORD lpnSize)
Definition: compname.c:446
unsigned long __stdcall NetrWkstaTransportEnum(WKSSVC_IDENTIFY_HANDLE ServerName, LPWKSTA_TRANSPORT_ENUM_STRUCT TransportInfo, unsigned long PreferredMaximumLength, unsigned long *TotalEntries, unsigned long *ResumeHandle)
Definition: rpcserver.c:289
unsigned long __stdcall NetrGetJoinableOUs2(handle_t RpcBindingHandle, wchar_t *ServerName, wchar_t *DomainNameParam, wchar_t *AccountName, PJOINPR_ENCRYPTED_USER_PASSWORD Password, unsigned long *OUCount, wchar_t ***OUs)
Definition: rpcserver.c:607
unsigned long __stdcall NetrRenameMachineInDomain(void)
Definition: rpcserver.c:486
unsigned long __stdcall NetrUseAdd(WKSSVC_IMPERSONATE_HANDLE ServerName, unsigned long Level, LPUSE_INFO InfoStruct, unsigned long *ErrorParameter)
Definition: rpcserver.c:331
OSVERSIONINFOW VersionInfo
Definition: wkssvc.c:40
#define NERR_Success
Definition: lmerr.h:5
unsigned long __stdcall NetrWkstaTransportDel(WKSSVC_IDENTIFY_HANDLE ServerName, wchar_t *TransportName, unsigned long ForceLevel)
Definition: rpcserver.c:318
DWORD wki102_ver_major
Definition: lmwksta.h:83
NTSTATUS WINAPI LsaOpenPolicy(IN PLSA_UNICODE_STRING SystemName OPTIONAL, IN PLSA_OBJECT_ATTRIBUTES ObjectAttributes, IN ACCESS_MASK DesiredAccess, OUT PLSA_HANDLE PolicyHandle)
Definition: lsa.c:1181
long RPC_STATUS
Definition: rpc.h:52
#define FALSE
Definition: types.h:117
unsigned long __stdcall NetrUseDel(WKSSVC_IMPERSONATE_HANDLE ServerName, wchar_t *UseName, unsigned long ForceLevel)
Definition: rpcserver.c:359
unsigned long __stdcall NetrUnjoinDomain(void)
Definition: rpcserver.c:466
void __RPC_USER midl_user_free(void __RPC_FAR *ptr)
Definition: rpcserver.c:55
RPC_STATUS WINAPI RpcServerListen(UINT MinimumCallThreads, UINT MaxCalls, UINT DontWait)
Definition: rpc_server.c:1520
#define debugstr_w
Definition: kernel32.h:32
#define FIXME(fmt,...)
Definition: debug.h:111
static PVOID ptr
Definition: dispmode.c:27
#define RPC_C_LISTEN_MAX_CALLS_DEFAULT
Definition: rpcdce.h:122
_Reserved_ PVOID Reserved
Definition: winddi.h:3974
Definition: bufpool.h:45
NTSTATUS WINAPI LsaFreeMemory(IN PVOID Buffer)
Definition: lsa.c:699
#define __RPC_FAR
Definition: rpc.h:56
enum _NETSETUP_NAME_TYPE NETSETUP_NAME_TYPE
#define __RPC_USER
Definition: rpc.h:65
unsigned long __stdcall NetrValidateName2(handle_t RpcBindingHandle, wchar_t *ServerName, wchar_t *NameToValidate, wchar_t *AccountName, PJOINPR_ENCRYPTED_USER_PASSWORD Password, NETSETUP_NAME_TYPE NameType)
Definition: rpcserver.c:591
NET_API_STATUS NetpJoinWorkgroup(_In_ LPCWSTR lpWorkgroupName)
Definition: domain.c:52
LPWSTR wki102_lanroot
Definition: lmwksta.h:85
DWORD NET_API_STATUS
Definition: ms-dtyp.idl:91
Status
Definition: gdiplustypes.h:24
#define TRACE(s)
Definition: solgame.cpp:4
_In_ PWDFDEVICE_INIT _In_ PWDF_REMOVE_LOCK_OPTIONS Options
Definition: wdfdevice.h:3531
ULONG dwMajorVersion
Definition: rtltypes.h:247
LPTSTR ServiceName
Definition: ServiceMain.c:15
#define GetProcessHeap()
Definition: compat.h:595
unsigned long __stdcall NetrUseEnum(WKSSVC_IDENTIFY_HANDLE ServerName, LPUSE_ENUM_STRUCT InfoStruct, unsigned long PreferredMaximumLength, unsigned long *TotalEntries, unsigned long *ResumeHandle)
Definition: rpcserver.c:372
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
DWORD wki102_platform_id
Definition: lmwksta.h:80
NET_API_STATUS NetpGetJoinInformation(LPWSTR *NameBuffer, PNETSETUP_JOIN_STATUS BufferType)
Definition: domain.c:71
unsigned long __stdcall NetrUnjoinDomain2(handle_t RpcBindingHandle, wchar_t *ServerName, wchar_t *AccountName, PJOINPR_ENCRYPTED_USER_PASSWORD Password, unsigned long Options)
Definition: rpcserver.c:560
__wchar_t WCHAR
Definition: xmlstorage.h:180
ULONG WINAPI LsaNtStatusToWinError(IN NTSTATUS Status)
Definition: lsa.c:1129
unsigned long __stdcall NetrGetJoinInformation(WKSSVC_IMPERSONATE_HANDLE ServerName, wchar_t **NameBuffer, PNETSETUP_JOIN_STATUS BufferType)
Definition: rpcserver.c:496
unsigned long __stdcall NetrWkstaTransportAdd(WKSSVC_IDENTIFY_HANDLE ServerName, unsigned long Level, LPWKSTA_TRANSPORT_INFO_0 TransportInfo, unsigned long *ErrorParameter)
Definition: rpcserver.c:304
unsigned long __stdcall NetrSetPrimaryComputerName(handle_t RpcBindingHandle, wchar_t *ServerName, wchar_t *PrimaryName, wchar_t *DomainAccount, PJOINPR_ENCRYPTED_USER_PASSWORD EncryptedPassword, unsigned long Reserved)
Definition: rpcserver.c:656
#define WINAPI
Definition: msvc.h:6
unsigned long DWORD
Definition: ntddk_ex.h:95
RPC_STATUS WINAPI RpcServerRegisterIf(RPC_IF_HANDLE IfSpec, UUID *MgrTypeUuid, RPC_MGR_EPV *MgrEpv)
Definition: rpc_server.c:1116
#define __stdcall
Definition: typedefs.h:25
LPWSTR wki102_computername
Definition: lmwksta.h:81
unsigned long __stdcall NetrUseGetInfo(WKSSVC_IMPERSONATE_HANDLE ServerName, wchar_t *UseName, unsigned long Level, LPUSE_INFO InfoStruct)
Definition: rpcserver.c:345
unsigned long __stdcall NetrWkstaUserEnum(WKSSVC_IDENTIFY_HANDLE ServerName, LPWKSTA_USER_ENUM_STRUCT UserInfo, unsigned long PreferredMaximumLength, unsigned long *TotalEntries, unsigned long *ResumeHandle)
Definition: rpcserver.c:241
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
static const WCHAR L[]
Definition: oid.c:1250
LPVOID lpParameter
Definition: kernel32.h:241
unsigned long __stdcall NetrJoinDomain2(handle_t RpcBindingHandle, wchar_t *ServerName, wchar_t *DomainNameParam, wchar_t *MachineAccountOU, wchar_t *AccountName, PJOINPR_ENCRYPTED_USER_PASSWORD Password, unsigned long Options)
Definition: rpcserver.c:525
GLenum GLsizei len
Definition: glext.h:6722
unsigned long __stdcall NetrWkstaUserSetInfo(WKSSVC_IDENTIFY_HANDLE Unused, unsigned long Level, LPWKSTA_USER_INFO UserInfo, unsigned long *ErrorParameter)
Definition: rpcserver.c:275
enum _NETSETUP_JOIN_STATUS * PNETSETUP_JOIN_STATUS
LPWSTR wki100_langroup
Definition: lmwksta.h:67
RPC_STATUS WINAPI RpcServerUseProtseqEpW(RPC_WSTR Protseq, UINT MaxCalls, RPC_WSTR Endpoint, LPVOID SecurityDescriptor)
Definition: rpc_server.c:927
#define ERR(fmt,...)
Definition: debug.h:110
#define MAX_COMPUTERNAME_LENGTH
Definition: winbase.h:240
ULONG_PTR SIZE_T
Definition: typedefs.h:80
DWORD wki100_ver_minor
Definition: lmwksta.h:69
#define PLATFORM_ID_NT
Definition: lmcons.h:60
DWORD WINAPI RpcThreadRoutine(LPVOID lpParameter)
Definition: rpcserver.c:20
unsigned long __stdcall NetrLogonDomainNameAdd(WKSSVC_IDENTIFY_HANDLE DomainName)
Definition: rpcserver.c:432
unsigned long __stdcall NetrRemoveAlternateComputerName(handle_t RpcBindingHandle, wchar_t *ServerName, wchar_t *AlternateName, wchar_t *DomainAccount, PJOINPR_ENCRYPTED_USER_PASSWORD EncryptedPassword, unsigned long Reserved)
Definition: rpcserver.c:640
LPWSTR wki102_langroup
Definition: lmwksta.h:82
DWORD wki100_ver_major
Definition: lmwksta.h:68
#define NULL
Definition: types.h:112
WKSTA_INFO_100 WkstaInfo100
Definition: wkssvc.idl:216
#define NETSETUP_JOIN_DOMAIN
Definition: lmjoin.h:16
unsigned long __stdcall NetrRenameMachineInDomain2(handle_t RpcBindingHandle, wchar_t *ServerName, wchar_t *MachineName, wchar_t *AccountName, PJOINPR_ENCRYPTED_USER_PASSWORD Password, unsigned long Options)
Definition: rpcserver.c:575
#define HEAP_ZERO_MEMORY
Definition: compat.h:134
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
unsigned long __stdcall NetrWkstaGetInfo(WKSSVC_IDENTIFY_HANDLE ServerName, unsigned long Level, LPWKSTA_INFO *WkstaInfo)
Definition: rpcserver.c:83
void __RPC_FAR *__RPC_USER midl_user_allocate(SIZE_T len)
Definition: rpcserver.c:49
ULONG dwMinorVersion
Definition: rtltypes.h:248
#define ERROR_NOT_SUPPORTED
Definition: compat.h:100
LPWSTR wki100_computername
Definition: lmwksta.h:66
#define ERROR_CALL_NOT_IMPLEMENTED
Definition: compat.h:102
#define UNIMPLEMENTED
Definition: debug.h:115
unsigned long __stdcall NetrValidateName(void)
Definition: rpcserver.c:476
#define STATUS_SUCCESS
Definition: shellext.h:65
ACPI_PHYSICAL_ADDRESS ACPI_SIZE BOOLEAN Warn BOOLEAN Physical UINT32 ACPI_TABLE_HEADER *OutTableHeader ACPI_TABLE_HEADER **OutTable ACPI_HANDLE UINT32 ACPI_WALK_CALLBACK ACPI_WALK_CALLBACK void void **ReturnValue UINT32 NameType
Definition: acpixf.h:654
#define ERROR_INVALID_LEVEL
Definition: winerror.h:196
LPWSTR wki101_langroup
Definition: lmwksta.h:74
DWORD wki100_platform_id
Definition: lmwksta.h:65
WKSTA_INFO_102 WkstaInfo102
Definition: wkssvc.idl:218
static SERVICE_STATUS status
Definition: service.c:31
DWORD wki102_logged_on_users
Definition: lmwksta.h:86
#define HeapFree(x, y, z)
Definition: compat.h:594
DWORD wki101_platform_id
Definition: lmwksta.h:72
#define RPC_S_OK
Definition: rpcnterr.h:22
wchar_t * WKSSVC_IDENTIFY_HANDLE
Definition: wkssvc.idl:7
unsigned long __stdcall NetrEnumerateComputerNames(WKSSVC_IMPERSONATE_HANDLE ServerName, NET_COMPUTER_NAME_TYPE NameType, unsigned long Reserved, PNET_COMPUTER_NAME_ARRAY *ComputerNames)
Definition: rpcserver.c:672
Definition: ps.c:97