ReactOS  0.4.15-dev-1171-gab82533
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  TRACE("NetrWkstaGetInfo level %lu\n", Level);
89 
90  return 0;
91 }
92 
93 
94 /* Function 1 */
95 unsigned long
98  WKSSVC_IDENTIFY_HANDLE ServerName,
99  unsigned long Level,
100  LPWKSTA_INFO WkstaInfo,
101  unsigned long *ErrorParameter)
102 {
104  return 0;
105 }
106 
107 
108 /* Function 2 */
109 unsigned long
110 __stdcall
112  WKSSVC_IDENTIFY_HANDLE ServerName,
113  LPWKSTA_USER_ENUM_STRUCT UserInfo,
114  unsigned long PreferredMaximumLength,
115  unsigned long *TotalEntries,
116  unsigned long *ResumeHandle)
117 {
119  return 0;
120 }
121 
122 
123 /* Function 3 */
124 unsigned long
125 __stdcall
128  unsigned long Level,
129  LPWKSTA_USER_INFO UserInfo)
130 {
131  FIXME("(%s, %d, %p)\n", debugstr_w(Unused), Level, UserInfo);
132 
134  return 0;
135 }
136 
137 
138 /* Function 4 */
139 unsigned long
140 __stdcall
143  unsigned long Level,
144  LPWKSTA_USER_INFO UserInfo,
145  unsigned long *ErrorParameter)
146 {
148  return 0;
149 }
150 
151 
152 /* Function 5 */
153 unsigned long
154 __stdcall
156  WKSSVC_IDENTIFY_HANDLE ServerName,
157  LPWKSTA_TRANSPORT_ENUM_STRUCT TransportInfo,
158  unsigned long PreferredMaximumLength,
159  unsigned long* TotalEntries,
160  unsigned long *ResumeHandle)
161 {
163  return 0;
164 }
165 
166 
167 /* Function 6 */
168 unsigned long
169 __stdcall
171  WKSSVC_IDENTIFY_HANDLE ServerName,
172  unsigned long Level,
173  LPWKSTA_TRANSPORT_INFO_0 TransportInfo,
174  unsigned long *ErrorParameter)
175 {
177  return 0;
178 }
179 
180 
181 /* Function 7 */
182 unsigned long
183 __stdcall
185  WKSSVC_IDENTIFY_HANDLE ServerName,
186  wchar_t *TransportName,
187  unsigned long ForceLevel)
188 {
190  return 0;
191 }
192 
193 
194 /* Function 8 */
195 unsigned long
196 __stdcall
198  WKSSVC_IMPERSONATE_HANDLE ServerName,
199  unsigned long Level,
200  LPUSE_INFO InfoStruct,
201  unsigned long *ErrorParameter)
202 {
204  return 0;
205 }
206 
207 
208 /* Function 9 */
209 unsigned long
210 __stdcall
212  WKSSVC_IMPERSONATE_HANDLE ServerName,
213  wchar_t *UseName,
214  unsigned long Level,
215  LPUSE_INFO InfoStruct)
216 {
218  return 0;
219 }
220 
221 
222 /* Function 10 */
223 unsigned long
224 __stdcall
226  WKSSVC_IMPERSONATE_HANDLE ServerName,
227  wchar_t *UseName,
228  unsigned long ForceLevel)
229 {
231  return 0;
232 }
233 
234 
235 /* Function 11 */
236 unsigned long
237 __stdcall
239  WKSSVC_IDENTIFY_HANDLE ServerName,
240  LPUSE_ENUM_STRUCT InfoStruct,
241  unsigned long PreferredMaximumLength,
242  unsigned long *TotalEntries,
243  unsigned long *ResumeHandle)
244 {
246  return 0;
247 }
248 
249 
250 /* Function 12 - Not used on wire */
251 unsigned long
252 __stdcall
254 {
255  TRACE("NetrMessageBufferSend()\n");
256  return ERROR_NOT_SUPPORTED;
257 }
258 
259 
260 /* Function 13 */
261 unsigned long
262 __stdcall
264  WKSSVC_IDENTIFY_HANDLE ServerName,
265  wchar_t *ServiceName,
266  unsigned long Level,
267  unsigned long Options,
269 {
270  PSTAT_WORKSTATION_0 pStatBuffer;
271 
272  TRACE("NetrWorkstationStatisticsGet(%p %p %lu 0x%lx %p)\n",
273  ServerName, ServiceName, Level, Options, Buffer);
274 
275  if (Level != 0)
276  return ERROR_INVALID_LEVEL;
277 
278  if (Options != 0)
280 
281  pStatBuffer = midl_user_allocate(sizeof(STAT_WORKSTATION_0));
282  if (pStatBuffer == NULL)
284 
285  ZeroMemory(pStatBuffer, sizeof(STAT_WORKSTATION_0));
286 
287  // FIXME: Return the actual statistcs data!
288 
289  *Buffer = pStatBuffer;
290 
291  return NERR_Success;
292 }
293 
294 
295 /* Function 14 - Not used on wire */
296 unsigned long
297 __stdcall
299  WKSSVC_IDENTIFY_HANDLE DomainName)
300 {
301  TRACE("NetrLogonDomainNameAdd(%s)\n",
302  debugstr_w(DomainName));
303  return ERROR_NOT_SUPPORTED;
304 }
305 
306 
307 /* Function 15 - Not used on wire */
308 unsigned long
309 __stdcall
311  WKSSVC_IDENTIFY_HANDLE DomainName)
312 {
313  TRACE("NetrLogonDomainNameDel(%s)\n",
314  debugstr_w(DomainName));
315  return ERROR_NOT_SUPPORTED;
316 }
317 
318 
319 /* Function 16 - Not used on wire */
320 unsigned long
321 __stdcall
323 {
324  TRACE("NetrJoinDomain()\n");
325  return ERROR_NOT_SUPPORTED;
326 }
327 
328 
329 /* Function 17 - Not used on wire */
330 unsigned long
331 __stdcall
333 {
334  TRACE("NetrUnjoinDomain()\n");
335  return ERROR_NOT_SUPPORTED;
336 }
337 
338 
339 /* Function 18 - Not used on wire */
340 unsigned long
341 __stdcall
343 {
344  TRACE("NetrValidateName()\n");
345  return ERROR_NOT_SUPPORTED;
346 }
347 
348 
349 /* Function 19 - Not used on wire */
350 unsigned long
351 __stdcall
353 {
354  TRACE("NetrRenameMachineInDomain()\n");
355  return ERROR_NOT_SUPPORTED;
356 }
357 
358 
359 /* Function 20 */
360 unsigned long
361 __stdcall
363  WKSSVC_IMPERSONATE_HANDLE ServerName,
364  wchar_t **NameBuffer,
365  PNETSETUP_JOIN_STATUS BufferType)
366 {
367  TRACE("NetrGetJoinInformation(%p %p %p)\n",
368  ServerName, NameBuffer, BufferType);
369 
370  if (NameBuffer == NULL)
372 
373  return NetpGetJoinInformation(NameBuffer,
374  BufferType);
375 }
376 
377 
378 /* Function 21 - Not used on wire */
379 unsigned long
380 __stdcall
382 {
383  TRACE("NetrGetJoinableOUs()\n");
384  return ERROR_NOT_SUPPORTED;
385 }
386 
387 
388 /* Function 22 */
389 unsigned long
390 __stdcall
392  handle_t RpcBindingHandle,
393  wchar_t *ServerName,
394  wchar_t *DomainNameParam,
395  wchar_t *MachineAccountOU,
396  wchar_t *AccountName,
398  unsigned long Options)
399 {
401 
402  FIXME("NetrJoinDomain2(%p %S %S %S %S %p 0x%lx)\n",
403  RpcBindingHandle, ServerName, DomainNameParam, MachineAccountOU,
404  AccountName, Password, Options);
405 
406  if (DomainNameParam == NULL)
408 
410  {
411  FIXME("NetrJoinDomain2: NETSETUP_JOIN_DOMAIN is not supported yet!\n");
413  }
414  else
415  {
416  status = NetpJoinWorkgroup(DomainNameParam);
417  }
418 
419  return status;
420 }
421 
422 
423 /* Function 23 */
424 unsigned long
425 __stdcall
427  handle_t RpcBindingHandle,
428  wchar_t *ServerName,
429  wchar_t *AccountName,
431  unsigned long Options)
432 {
434  return 0;
435 }
436 
437 
438 /* Function 24 */
439 unsigned long
440 __stdcall
442  handle_t RpcBindingHandle,
443  wchar_t *ServerName,
444  wchar_t *MachineName,
445  wchar_t *AccountName,
447  unsigned long Options)
448 {
450  return 0;
451 }
452 
453 
454 /* Function 25 */
455 unsigned long
456 __stdcall
458  handle_t RpcBindingHandle,
459  wchar_t *ServerName,
460  wchar_t *NameToValidate,
461  wchar_t *AccountName,
464 {
466  return 0;
467 }
468 
469 
470 /* Function 26 */
471 unsigned long
472 __stdcall
474  handle_t RpcBindingHandle,
475  wchar_t *ServerName,
476  wchar_t *DomainNameParam,
477  wchar_t *AccountName,
479  unsigned long* OUCount,
480  wchar_t ***OUs)
481 {
483  return 0;
484 }
485 
486 
487 /* Function 27 */
488 unsigned long
489 __stdcall
491  handle_t RpcBindingHandle,
492  wchar_t *ServerName,
493  wchar_t *AlternateName,
494  wchar_t *DomainAccount,
495  PJOINPR_ENCRYPTED_USER_PASSWORD EncryptedPassword,
496  unsigned long Reserved)
497 {
499  return 0;
500 }
501 
502 
503 /* Function 28 */
504 unsigned long
505 __stdcall
507  handle_t RpcBindingHandle,
508  wchar_t *ServerName,
509  wchar_t *AlternateName,
510  wchar_t *DomainAccount,
511  PJOINPR_ENCRYPTED_USER_PASSWORD EncryptedPassword,
512  unsigned long Reserved)
513 {
515  return 0;
516 }
517 
518 
519 /* Function 29 */
520 unsigned long
521 __stdcall
523  handle_t RpcBindingHandle,
524  wchar_t *ServerName,
525  wchar_t *PrimaryName,
526  wchar_t *DomainAccount,
527  PJOINPR_ENCRYPTED_USER_PASSWORD EncryptedPassword,
528  unsigned long Reserved)
529 {
531  return 0;
532 }
533 
534 
535 /* Function 30 */
536 unsigned long
537 __stdcall
539  WKSSVC_IMPERSONATE_HANDLE ServerName,
541  unsigned long Reserved,
542  PNET_COMPUTER_NAME_ARRAY *ComputerNames)
543 {
545  return 0;
546 }
547 
548 /* EOF */
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
WINE_DEFAULT_DEBUG_CHANNEL(browser)
_Must_inspect_result_ typedef _In_ PVOID Unused
Definition: iotypes.h:1149
unsigned long __stdcall NetrMessageBufferSend(void)
Definition: rpcserver.c:253
unsigned long __stdcall NetrLogonDomainNameDel(WKSSVC_IDENTIFY_HANDLE DomainName)
Definition: rpcserver.c:310
unsigned long __stdcall NetrWorkstationStatisticsGet(WKSSVC_IDENTIFY_HANDLE ServerName, wchar_t *ServiceName, unsigned long Level, unsigned long Options, LPSTAT_WORKSTATION_0 *Buffer)
Definition: rpcserver.c:263
unsigned long __stdcall NetrGetJoinableOUs(void)
Definition: rpcserver.c:381
unsigned long __stdcall NetrWkstaSetInfo(WKSSVC_IDENTIFY_HANDLE ServerName, unsigned long Level, LPWKSTA_INFO WkstaInfo, unsigned long *ErrorParameter)
Definition: rpcserver.c:97
unsigned long __stdcall NetrWkstaUserGetInfo(WKSSVC_IDENTIFY_HANDLE Unused, unsigned long Level, LPWKSTA_USER_INFO UserInfo)
Definition: rpcserver.c:126
enum _NET_COMPUTER_NAME_TYPE NET_COMPUTER_NAME_TYPE
unsigned long __stdcall NetrJoinDomain(void)
Definition: rpcserver.c:322
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:490
#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:1648
wchar_t * WKSSVC_IMPERSONATE_HANDLE
Definition: wkssvc.idl:8
_IRQL_requires_same_ typedef _In_ ULONG _In_ UCHAR Level
Definition: wmitypes.h:55
unsigned long __stdcall NetrWkstaGetInfo(WKSSVC_IDENTIFY_HANDLE ServerName, unsigned long Level, LPWKSTA_INFO WkstaInfo)
Definition: rpcserver.c:83
enum OPTION_FLAGS Options
Definition: stats.c:44
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:155
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:473
unsigned long __stdcall NetrRenameMachineInDomain(void)
Definition: rpcserver.c:352
unsigned long __stdcall NetrUseAdd(WKSSVC_IMPERSONATE_HANDLE ServerName, unsigned long Level, LPUSE_INFO InfoStruct, unsigned long *ErrorParameter)
Definition: rpcserver.c:197
#define NERR_Success
Definition: lmerr.h:5
unsigned long __stdcall NetrWkstaTransportDel(WKSSVC_IDENTIFY_HANDLE ServerName, wchar_t *TransportName, unsigned long ForceLevel)
Definition: rpcserver.c:184
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:225
unsigned long __stdcall NetrUnjoinDomain(void)
Definition: rpcserver.c:332
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
smooth NULL
Definition: ftsmooth.c:416
_Reserved_ PVOID Reserved
Definition: winddi.h:3974
Definition: bufpool.h:45
#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:457
NET_API_STATUS NetpJoinWorkgroup(_In_ LPCWSTR lpWorkgroupName)
Definition: domain.c:52
DWORD NET_API_STATUS
Definition: ms-dtyp.idl:91
#define TRACE(s)
Definition: solgame.cpp:4
LPTSTR ServiceName
Definition: ServiceMain.c:15
#define GetProcessHeap()
Definition: compat.h:484
unsigned long __stdcall NetrUseEnum(WKSSVC_IDENTIFY_HANDLE ServerName, LPUSE_ENUM_STRUCT InfoStruct, unsigned long PreferredMaximumLength, unsigned long *TotalEntries, unsigned long *ResumeHandle)
Definition: rpcserver.c:238
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
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:426
unsigned long __stdcall NetrGetJoinInformation(WKSSVC_IMPERSONATE_HANDLE ServerName, wchar_t **NameBuffer, PNETSETUP_JOIN_STATUS BufferType)
Definition: rpcserver.c:362
unsigned long __stdcall NetrWkstaTransportAdd(WKSSVC_IDENTIFY_HANDLE ServerName, unsigned long Level, LPWKSTA_TRANSPORT_INFO_0 TransportInfo, unsigned long *ErrorParameter)
Definition: rpcserver.c:170
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:522
#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
unsigned long __stdcall NetrUseGetInfo(WKSSVC_IMPERSONATE_HANDLE ServerName, wchar_t *UseName, unsigned long Level, LPUSE_INFO InfoStruct)
Definition: rpcserver.c:211
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:111
Status
Definition: gdiplustypes.h:24
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:391
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:141
enum _NETSETUP_JOIN_STATUS * PNETSETUP_JOIN_STATUS
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
ULONG_PTR SIZE_T
Definition: typedefs.h:80
DWORD WINAPI RpcThreadRoutine(LPVOID lpParameter)
Definition: rpcserver.c:20
unsigned long __stdcall NetrLogonDomainNameAdd(WKSSVC_IDENTIFY_HANDLE DomainName)
Definition: rpcserver.c:298
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:506
#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:441
#define HEAP_ZERO_MEMORY
Definition: compat.h:134
void __RPC_FAR *__RPC_USER midl_user_allocate(SIZE_T len)
Definition: rpcserver.c:49
#define ERROR_NOT_SUPPORTED
Definition: compat.h:100
#define ERROR_CALL_NOT_IMPLEMENTED
Definition: compat.h:102
#define UNIMPLEMENTED
Definition: debug.h:115
unsigned long __stdcall NetrValidateName(void)
Definition: rpcserver.c:342
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
static SERVICE_STATUS status
Definition: service.c:31
#define HeapFree(x, y, z)
Definition: compat.h:483
#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:538
Definition: ps.c:97