1#include "idl_types.h"
2
3/*import "security.idl", "svcctl.idl";*/
4
5/*
6  srvsvc interface definitions
7*/
8
9[ uuid("4b324fc8-1670-01d3-1278-5a47bf6ee188"),
10  version(3.0),
11  endpoint("ncacn_np:[\\pipe\\srvsvc]", "ncacn_ip_tcp:", "ncalrpc:"),
12  pointer_default(unique),
13  pointer_default_top(unique),
14  helpstring("Server Service")
15] interface srvsvc
16{
17	typedef bitmap svcctl_ServerType svcctl_ServerType;
18	typedef bitmap security_secinfo security_secinfo;
19
20/**************************/
21/* srvsvc_NetCharDev      */
22/**************************/
23	typedef struct {
24		[string,charset(UTF16)] uint16 *device;
25	} srvsvc_NetCharDevInfo0;
26
27	typedef struct {
28		uint32 count;
29		[size_is(count)] srvsvc_NetCharDevInfo0 *array;
30	} srvsvc_NetCharDevCtr0;
31
32	typedef struct {
33		[string,charset(UTF16)] uint16 *device;
34		uint32 status;
35		[string,charset(UTF16)] uint16 *user;
36		uint32 time;
37	} srvsvc_NetCharDevInfo1;
38
39	typedef struct {
40		uint32 count;
41		[size_is(count)] srvsvc_NetCharDevInfo1 *array;
42	} srvsvc_NetCharDevCtr1;
43
44	typedef union {
45		[case(0)] srvsvc_NetCharDevInfo0 *info0;
46		[case(1)] srvsvc_NetCharDevInfo1 *info1;
47		[default] ;
48	} srvsvc_NetCharDevInfo;
49
50	typedef union {
51		[case(0)] srvsvc_NetCharDevCtr0 *ctr0;
52		[case(1)] srvsvc_NetCharDevCtr1 *ctr1;
53		[default] ;
54	} srvsvc_NetCharDevCtr;
55
56	/******************/
57	/* Function: 0x00 */
58	WERROR srvsvc_NetCharDevEnum(
59		[in]   [string,charset(UTF16)] uint16 *server_unc,
60		[in,out,ref]   uint32 *level,
61		[in,out,switch_is(level),ref]   srvsvc_NetCharDevCtr *ctr,
62		[in]   uint32 max_buffer,
63		[out,ref]  uint32 *totalentries,
64		[in,out]   uint32 *resume_handle
65		);
66
67	/******************/
68	/* Function: 0x01 */
69	WERROR srvsvc_NetCharDevGetInfo(
70		[in]   [string,charset(UTF16)] uint16 *server_unc,
71		[in]   [string,charset(UTF16)] uint16 device_name[],
72		[in]   uint32 level,
73		[out,switch_is(level),ref]   srvsvc_NetCharDevInfo *info
74		);
75
76	/******************/
77	/* Function: 0x02 */
78	WERROR srvsvc_NetCharDevControl(
79		[in]   [string,charset(UTF16)] uint16 *server_unc,
80		[in]   [string,charset(UTF16)] uint16 device_name[],
81		[in]   uint32 opcode
82		);
83
84/**************************/
85/* srvsvc_NetCharDevQ     */
86/**************************/
87	typedef struct {
88		[string,charset(UTF16)] uint16 *device;
89	} srvsvc_NetCharDevQInfo0;
90
91	typedef struct {
92		uint32 count;
93		[size_is(count)] srvsvc_NetCharDevQInfo0 *array;
94	} srvsvc_NetCharDevQCtr0;
95
96	typedef struct {
97		[string,charset(UTF16)] uint16 *device;
98		uint32 priority;
99		[string,charset(UTF16)] uint16 *devices;
100		uint32 users;
101		uint32 num_ahead;
102	} srvsvc_NetCharDevQInfo1;
103
104	typedef struct {
105		uint32 count;
106		[size_is(count)] srvsvc_NetCharDevQInfo1 *array;
107	} srvsvc_NetCharDevQCtr1;
108
109	typedef union {
110		[case(0)] srvsvc_NetCharDevQInfo0 *info0;
111		[case(1)] srvsvc_NetCharDevQInfo1 *info1;
112		[default] ;
113	} srvsvc_NetCharDevQInfo;
114
115	typedef union {
116		[case(0)] srvsvc_NetCharDevQCtr0 *ctr0;
117		[case(1)] srvsvc_NetCharDevQCtr1 *ctr1;
118		[default] ;
119	} srvsvc_NetCharDevQCtr;
120
121	/******************/
122	/* Function: 0x03 */
123	WERROR srvsvc_NetCharDevQEnum(
124		[in]   [string,charset(UTF16)] uint16 *server_unc,
125		[in]   [string,charset(UTF16)] uint16 *user,
126		[in,out,ref]   uint32 *level,
127		[in,out,switch_is(level),ref]   srvsvc_NetCharDevQCtr *ctr,
128		[in]   uint32 max_buffer,
129		[out,ref]  uint32 *totalentries,
130		[in,out]   uint32 *resume_handle
131		);
132
133	/******************/
134	/* Function: 0x04 */
135	WERROR srvsvc_NetCharDevQGetInfo(
136		[in]   [string,charset(UTF16)] uint16 *server_unc,
137		[in]   [string,charset(UTF16)] uint16 queue_name[],
138		[in]   [string,charset(UTF16)] uint16 user[],
139		[in]   uint32 level,
140		[out,switch_is(level),ref]   srvsvc_NetCharDevQInfo *info
141		);
142
143	/******************/
144	/* Function: 0x05 */
145	WERROR srvsvc_NetCharDevQSetInfo(
146		[in]   [string,charset(UTF16)] uint16 *server_unc,
147		[in]   [string,charset(UTF16)] uint16 queue_name[],
148		[in]   uint32 level,
149		[in,switch_is(level)]   srvsvc_NetCharDevQInfo info,
150		[in,out]   uint32 *parm_error
151		);
152
153	/******************/
154	/* Function: 0x06 */
155	WERROR srvsvc_NetCharDevQPurge(
156		[in]   [string,charset(UTF16)] uint16 *server_unc,
157		[in]   [string,charset(UTF16)] uint16 queue_name[]
158		);
159
160	/******************/
161	/* Function: 0x07 */
162	WERROR srvsvc_NetCharDevQPurgeSelf(
163		[in]   [string,charset(UTF16)] uint16 *server_unc,
164		[in]   [string,charset(UTF16)] uint16 queue_name[],
165		[in]   [string,charset(UTF16)] uint16 computer_name[]
166		);
167
168/**************************/
169/* srvsvc_NetConn         */
170/**************************/
171	typedef struct {
172		uint32 conn_id;
173	} srvsvc_NetConnInfo0;
174
175	typedef struct {
176		uint32 count;
177		[size_is(count)] srvsvc_NetConnInfo0 *array;
178	} srvsvc_NetConnCtr0;
179
180	typedef struct {
181		uint32 conn_id;
182		uint32 conn_type;
183		uint32 num_open;
184		uint32 num_users;
185		uint32 conn_time;
186		[string,charset(UTF16)] uint16 *user;
187		[string,charset(UTF16)] uint16 *share;
188	} srvsvc_NetConnInfo1;
189
190	typedef struct {
191		uint32 count;
192		[size_is(count)] srvsvc_NetConnInfo1 *array;
193	} srvsvc_NetConnCtr1;
194
195	typedef union {
196		[case(0)] srvsvc_NetConnCtr0 *ctr0;
197		[case(1)] srvsvc_NetConnCtr1 *ctr1;
198		[default] ;
199	} srvsvc_NetConnCtr;
200
201	/******************/
202	/* Function: 0x08 */
203	WERROR srvsvc_NetConnEnum(
204		[in]   [string,charset(UTF16)] uint16 *server_unc,
205		[in]   [string,charset(UTF16)] uint16 *path,
206		[in,out,ref]   uint32 *level,
207		[in,out,switch_is(level),ref]   srvsvc_NetConnCtr *ctr,
208		[in]   uint32 max_buffer,
209		[out,ref]  uint32 *totalentries,
210		[in,out]   uint32 *resume_handle
211		);
212
213/**************************/
214/* srvsvc_NetFile         */
215/**************************/
216	typedef struct {
217		uint32 fid;
218	} srvsvc_NetFileInfo2;
219
220	typedef struct {
221		uint32 count;
222		[size_is(count)] srvsvc_NetFileInfo2 *array;
223	} srvsvc_NetFileCtr2;
224
225	typedef struct {
226		uint32 fid;
227		uint32 permissions;
228		uint32 num_locks;
229		[string,charset(UTF16)] uint16 *path;
230		[string,charset(UTF16)] uint16 *user;
231	} srvsvc_NetFileInfo3;
232
233	typedef struct {
234		uint32 count;
235		[size_is(count)] srvsvc_NetFileInfo3 *array;
236	} srvsvc_NetFileCtr3;
237
238	typedef union {
239		[case(2)] srvsvc_NetFileInfo2 *info2;
240		[case(3)] srvsvc_NetFileInfo3 *info3;
241		[default] ;
242	} srvsvc_NetFileInfo;
243
244	typedef union {
245		[case(2)] srvsvc_NetFileCtr2 *ctr2;
246		[case(3)] srvsvc_NetFileCtr3 *ctr3;
247		[default] ;
248	} srvsvc_NetFileCtr;
249
250	/******************/
251	/* Function: 0x09 */
252	WERROR srvsvc_NetFileEnum(
253		[in]   [string,charset(UTF16)] uint16 *server_unc,
254		[in]   [string,charset(UTF16)] uint16 *path,
255		[in]   [string,charset(UTF16)] uint16 *user,
256		[in,out,ref]   uint32 *level,
257		[in,out,switch_is(level),ref]   srvsvc_NetFileCtr *ctr,
258		[in]   uint32 max_buffer,
259		[out,ref]  uint32 *totalentries,
260		[in,out]   uint32 *resume_handle
261		);
262
263	/******************/
264	/* Function: 0x0a */
265	WERROR srvsvc_NetFileGetInfo(
266		[in]   [string,charset(UTF16)] uint16 *server_unc,
267		[in]   uint32 fid,
268		[in]   uint32 level,
269		[out,switch_is(level),ref]   srvsvc_NetFileInfo *info
270		);
271
272	/******************/
273	/* Function: 0x0b */
274	WERROR srvsvc_NetFileClose(
275		[in]   [string,charset(UTF16)] uint16 *server_unc,
276		[in]   uint32 fid
277		);
278
279/**************************/
280/* srvsvc_NetSess         */
281/**************************/
282	typedef [bitmap32bit] bitmap {
283		SESS_GUEST		= 0x00000001,
284		SESS_NOENCRYPTION	= 0x00000002
285	} srvsvc_SessionUserFlags;
286
287	typedef struct {
288		[string,charset(UTF16)] uint16 *client;
289	} srvsvc_NetSessInfo0;
290
291	typedef struct {
292		uint32 count;
293		[size_is(count)] srvsvc_NetSessInfo0 *array;
294	} srvsvc_NetSessCtr0;
295
296	typedef struct {
297		[string,charset(UTF16)] uint16 *client;
298		[string,charset(UTF16)] uint16 *user;
299		uint32 num_open;
300		uint32 time;
301		uint32 idle_time;
302		srvsvc_SessionUserFlags user_flags;
303	} srvsvc_NetSessInfo1;
304
305	typedef struct {
306		uint32 count;
307		[size_is(count)] srvsvc_NetSessInfo1 *array;
308	} srvsvc_NetSessCtr1;
309
310	typedef struct {
311		[string,charset(UTF16)] uint16 *client;
312		[string,charset(UTF16)] uint16 *user;
313		uint32 num_open;
314		uint32 time;
315		uint32 idle_time;
316		srvsvc_SessionUserFlags user_flags;
317		[string,charset(UTF16)] uint16 *client_type;
318	} srvsvc_NetSessInfo2;
319
320	typedef struct {
321		uint32 count;
322		[size_is(count)] srvsvc_NetSessInfo2 *array;
323	} srvsvc_NetSessCtr2;
324
325	typedef struct {
326		[string,charset(UTF16)] uint16 *client;
327		[string,charset(UTF16)] uint16 *user;
328		uint32 time;
329		uint32 idle_time;
330	} srvsvc_NetSessInfo10;
331
332	typedef struct {
333		uint32 count;
334		[size_is(count)] srvsvc_NetSessInfo10 *array;
335	} srvsvc_NetSessCtr10;
336
337	typedef struct {
338		[string,charset(UTF16)] uint16 *client;
339		[string,charset(UTF16)] uint16 *user;
340		uint32 num_open;
341		uint32 time;
342		uint32 idle_time;
343		srvsvc_SessionUserFlags user_flags;
344		[string,charset(UTF16)] uint16 *client_type;
345		[string,charset(UTF16)] uint16 *transport;
346	} srvsvc_NetSessInfo502;
347
348	typedef struct {
349		uint32 count;
350		[size_is(count)] srvsvc_NetSessInfo502 *array;
351	} srvsvc_NetSessCtr502;
352
353	typedef union {
354		[case(0)] srvsvc_NetSessCtr0 *ctr0;
355		[case(1)] srvsvc_NetSessCtr1 *ctr1;
356		[case(2)] srvsvc_NetSessCtr2 *ctr2;
357		[case(10)] srvsvc_NetSessCtr10 *ctr10;
358		[case(502)] srvsvc_NetSessCtr502 *ctr502;
359		[default] ;
360	} srvsvc_NetSessCtr;
361
362	/******************/
363	/* Function: 0x0c */
364	WERROR srvsvc_NetSessEnum(
365		[in]   [string,charset(UTF16)] uint16 *server_unc,
366		[in]   [string,charset(UTF16)] uint16 *client,
367		[in]   [string,charset(UTF16)] uint16 *user,
368		[in,out,ref]   uint32 *level,
369		[in,out,switch_is(level),ref]   srvsvc_NetSessCtr *ctr,
370		[in]   uint32 max_buffer,
371		[out,ref]  uint32 *totalentries,
372		[in,out]   uint32 *resume_handle
373		);
374
375	/******************/
376	/* Function: 0x0d */
377	WERROR srvsvc_NetSessDel(
378		[in]   [string,charset(UTF16)] uint16 *server_unc,
379		[in]   [string,charset(UTF16)] uint16 *client,
380		[in]   [string,charset(UTF16)] uint16 *user
381		);
382
383/**************************/
384/* srvsvc_NetShare        */
385/**************************/
386
387	/* share types */
388	const uint32 STYPE_TEMPORARY = 0x40000000; /* share is a temporary one */
389	const uint32 STYPE_HIDDEN    = 0x80000000; /* share is a hidden one */
390
391	typedef [v1_enum, flag(NDR_PAHEX)] enum {
392		STYPE_DISKTREE = 0,
393		STYPE_DISKTREE_TEMPORARY = STYPE_DISKTREE|STYPE_TEMPORARY,
394		STYPE_DISKTREE_HIDDEN    = STYPE_DISKTREE|STYPE_HIDDEN,
395		STYPE_PRINTQ   = 1,
396		STYPE_PRINTQ_TEMPORARY = STYPE_PRINTQ|STYPE_TEMPORARY,
397		STYPE_PRINTQ_HIDDEN    = STYPE_PRINTQ|STYPE_HIDDEN,
398		STYPE_DEVICE   = 2,	/* Serial device */
399		STYPE_DEVICE_TEMPORARY = STYPE_DEVICE|STYPE_TEMPORARY,
400		STYPE_DEVICE_HIDDEN    = STYPE_DEVICE|STYPE_HIDDEN,
401		STYPE_IPC      = 3,	/* Interprocess communication (IPC) */
402		STYPE_IPC_TEMPORARY = STYPE_IPC|STYPE_TEMPORARY,
403		STYPE_IPC_HIDDEN    = STYPE_IPC|STYPE_HIDDEN
404	} srvsvc_ShareType;
405
406	typedef struct {
407		[string,charset(UTF16)] uint16 *name;
408	} srvsvc_NetShareInfo0;
409
410	typedef struct {
411		[string,charset(UTF16)] uint16 *name;
412		srvsvc_ShareType type;
413		[string,charset(UTF16)] uint16 *comment;
414	} srvsvc_NetShareInfo1;
415
416	typedef struct {
417		[string,charset(UTF16)] uint16 *name;
418		srvsvc_ShareType type;
419		[string,charset(UTF16)] uint16 *comment;
420		uint32 permissions;
421		uint32 max_users;
422		uint32 current_users;
423		[string,charset(UTF16)] uint16 *path;
424		[string,charset(UTF16)] uint16 *password;
425	} srvsvc_NetShareInfo2;
426
427	typedef struct {
428		[string,charset(UTF16)] uint16 *name;
429		srvsvc_ShareType type;
430		[string,charset(UTF16)] uint16 *comment;
431		uint32 csc_policy;
432	} srvsvc_NetShareInfo501;
433
434	typedef struct {
435		[string,charset(UTF16)] uint16 *name;
436		srvsvc_ShareType type;
437		[string,charset(UTF16)] uint16 *comment;
438		uint32 permissions;
439		int32 max_users;
440		uint32 current_users;
441		[string,charset(UTF16)] uint16 *path;
442		[string,charset(UTF16)] uint16 *password;
443		/* maybe here is a struct sec_desc_buf following */
444		uint32 unknown;
445		[subcontext(4)] security_descriptor *sd;
446	} srvsvc_NetShareInfo502;
447
448	typedef struct {
449		[string,charset(UTF16)] uint16 *comment;
450	} srvsvc_NetShareInfo1004;
451
452	typedef struct {
453		int32 max_users;
454	} srvsvc_NetShareInfo1006;
455
456	typedef [bitmap32bit] bitmap {
457		SHARE_1005_FLAGS_IN_DFS			= 0x00000001,
458		SHARE_1005_FLAGS_DFS_ROOT		= 0x00000002,
459		CSC_CACHE_AUTO_REINT			= 0x00000010,
460		CSC_CACHE_VDO				= 0x00000020,
461		FLAGS_RESTRICT_EXCLUSIVE_OPENS		= 0x00000100,
462		FLAGS_FORCE_SHARED_DELETE		= 0x00000200,
463		FLAGS_ALLOW_NAMESPACE_CACHING		= 0x00000400,
464		FLAGS_ACCESS_BASED_DIRECTORY_ENUM	= 0x00000800
465	} srvsvc_DFSFlags;
466
467	const uint32 SHARE_1005_CSC_POLICY_MASK = 0x00000030;
468	const uint32 SHARE_1005_CSC_POLICY_SHIFT = 4;
469
470	typedef struct {
471		uint32 count;
472		[size_is(count)] srvsvc_NetShareInfo0 *array;
473	} srvsvc_NetShareCtr0;
474
475	typedef struct {
476		uint32 count;
477		[size_is(count)] srvsvc_NetShareInfo1 *array;
478	} srvsvc_NetShareCtr1;
479
480	typedef struct {
481		uint32 count;
482		[size_is(count)] srvsvc_NetShareInfo2 *array;
483	} srvsvc_NetShareCtr2;
484
485	typedef struct {
486		uint32 count;
487		[size_is(count)] srvsvc_NetShareInfo501 *array;
488	} srvsvc_NetShareCtr501;
489
490	typedef struct {
491		uint32 count;
492		[size_is(count)] srvsvc_NetShareInfo502 *array;
493	} srvsvc_NetShareCtr502;
494
495	typedef struct {
496		uint32 count;
497		[size_is(count)] srvsvc_NetShareInfo1004 *array;
498	} srvsvc_NetShareCtr1004;
499
500	typedef struct {
501		srvsvc_DFSFlags dfs_flags;
502	} srvsvc_NetShareInfo1005;
503
504	typedef struct {
505		uint32 count;
506		[size_is(count)] srvsvc_NetShareInfo1005 *array;
507	} srvsvc_NetShareCtr1005;
508
509	typedef struct {
510		uint32 count;
511		[size_is(count)] srvsvc_NetShareInfo1006 *array;
512	} srvsvc_NetShareCtr1006;
513
514	typedef struct {
515		uint32 flags;
516		[string,charset(UTF16)] uint16 *alternate_directory_name;
517	} srvsvc_NetShareInfo1007;
518
519	typedef struct {
520		uint32 count;
521		[size_is(count)] srvsvc_NetShareInfo1007 *array;
522	} srvsvc_NetShareCtr1007;
523
524	typedef struct {
525		uint32 count;
526		[size_is(count)] sec_desc_buf *array;
527	} srvsvc_NetShareCtr1501;
528
529	typedef union {
530		[case(0)] srvsvc_NetShareInfo0 *info0;
531		[case(1)] srvsvc_NetShareInfo1 *info1;
532		[case(2)] srvsvc_NetShareInfo2 *info2;
533		[case(501)] srvsvc_NetShareInfo501 *info501;
534		[case(502)] srvsvc_NetShareInfo502 *info502;
535		[case(1004)] srvsvc_NetShareInfo1004 *info1004;
536		[case(1005)] srvsvc_NetShareInfo1005 *info1005;
537		[case(1006)] srvsvc_NetShareInfo1006 *info1006;
538		[case(1007)] srvsvc_NetShareInfo1007 *info1007;
539		[case(1501)] sec_desc_buf *info1501;
540		[default] ;
541	} srvsvc_NetShareInfo;
542
543	typedef union {
544		[case(0)] srvsvc_NetShareCtr0 *ctr0;
545		[case(1)] srvsvc_NetShareCtr1 *ctr1;
546		[case(2)] srvsvc_NetShareCtr2 *ctr2;
547		[case(501)] srvsvc_NetShareCtr501 *ctr501;
548		[case(502)] srvsvc_NetShareCtr502 *ctr502;
549		[case(1004)] srvsvc_NetShareCtr1004 *ctr1004;
550		[case(1005)] srvsvc_NetShareCtr1005 *ctr1005;
551		[case(1006)] srvsvc_NetShareCtr1006 *ctr1006;
552		[case(1007)] srvsvc_NetShareCtr1007 *ctr1007;
553		[case(1501)] srvsvc_NetShareCtr1501 *ctr1501;
554		[default] ;
555	} srvsvc_NetShareCtr;
556
557	/******************/
558	/* Function: 0x0e */
559	WERROR srvsvc_NetShareAdd(
560		[in]   [string,charset(UTF16)] uint16 *server_unc,
561		[in]   uint32 level,
562		[in,switch_is(level)] srvsvc_NetShareInfo info,
563		[in,out]   uint32 *parm_error
564		);
565
566	/******************/
567	/* Function: 0x0f */
568	WERROR srvsvc_NetShareEnumAll (
569		[in]   [string,charset(UTF16)] uint16 *server_unc,
570		[in,out,ref]   uint32 *level,
571		[in,out,switch_is(level),ref] srvsvc_NetShareCtr *ctr,
572		[in]   uint32 max_buffer,
573		[out,ref]  uint32 *totalentries,
574		[in,out]   uint32 *resume_handle
575		);
576
577	/******************/
578	/* Function: 0x10 */
579	WERROR srvsvc_NetShareGetInfo(
580		[in]   [string,charset(UTF16)] uint16 *server_unc,
581		[in]   [string,charset(UTF16)] uint16 share_name[],
582		[in]   uint32 level,
583		[out,switch_is(level),ref] srvsvc_NetShareInfo *info
584		);
585
586	/******************/
587	/* Function: 0x11 */
588	WERROR srvsvc_NetShareSetInfo(
589		[in]   [string,charset(UTF16)] uint16 *server_unc,
590		[in]   [string,charset(UTF16)] uint16 share_name[],
591		[in]   uint32 level,
592		[in,switch_is(level)] srvsvc_NetShareInfo info,
593		[in,out]   uint32 *parm_error
594		);
595
596	/******************/
597	/* Function: 0x12 */
598	WERROR srvsvc_NetShareDel(
599		[in]   [string,charset(UTF16)] uint16 *server_unc,
600		[in]   [string,charset(UTF16)] uint16 share_name[],
601		[in]   uint32 reserved
602		);
603
604	/******************/
605	/* Function: 0x13 */
606	WERROR srvsvc_NetShareDelSticky(
607		[in]   [string,charset(UTF16)] uint16 *server_unc,
608		[in]   [string,charset(UTF16)] uint16 share_name[],
609		[in]   uint32 reserved
610		);
611
612	/******************/
613	/* Function: 0x14 */
614	WERROR srvsvc_NetShareCheck(
615		[in]   [string,charset(UTF16)] uint16 *server_unc,
616		[in]   [string,charset(UTF16)] uint16 device_name[],
617		[out,ref]  srvsvc_ShareType *type
618		);
619
620/**************************/
621/* srvsvc_NetSrv          */
622/**************************/
623	typedef [public,v1_enum] enum {
624		PLATFORM_ID_DOS = 300,
625		PLATFORM_ID_OS2 = 400,
626		PLATFORM_ID_NT	= 500,
627		PLATFORM_ID_OSF = 600,
628		PLATFORM_ID_VMS = 700
629	} srvsvc_PlatformId;
630
631	typedef struct {
632		srvsvc_PlatformId platform_id;
633		[string,charset(UTF16)] uint16 *server_name;
634	} srvsvc_NetSrvInfo100;
635
636	typedef struct {
637		srvsvc_PlatformId platform_id;
638		[string,charset(UTF16)] uint16 *server_name;
639		uint32 version_major;
640		uint32 version_minor;
641		svcctl_ServerType server_type;
642		[string,charset(UTF16)] uint16 *comment;
643	} srvsvc_NetSrvInfo101;
644
645	typedef struct {
646		srvsvc_PlatformId platform_id;
647		[string,charset(UTF16)] uint16 *server_name;
648		uint32 version_major;
649		uint32 version_minor;
650		svcctl_ServerType server_type;
651		[string,charset(UTF16)] uint16 *comment;
652		uint32 users;
653		uint32 disc;
654		uint32 hidden;
655		uint32 announce;
656		uint32 anndelta;
657		uint32 licenses;
658		[string,charset(UTF16)] uint16 *userpath;
659	} srvsvc_NetSrvInfo102;
660
661	typedef struct {
662		uint32 ulist_mtime;
663		uint32 glist_mtime;
664		uint32 alist_mtime;
665		[string,charset(UTF16)] uint16 *alerts;
666		uint32 security;
667		uint32 numadmin;
668		uint32 lanmask;
669		[string,charset(UTF16)] uint16 *guestaccount;
670		uint32 chdevs;
671		uint32 chdevqs;
672		uint32 chdevjobs;
673		uint32 connections;
674		uint32 shares;
675		uint32 openfiles;
676		uint32 sessopen;
677		uint32 sesssvc;
678		uint32 sessreqs;
679		uint32 opensearch;
680		uint32 activelocks;
681		uint32 sizereqbufs;
682		uint32 numbigbufs;
683		uint32 numfiletasks;
684		uint32 alertsched;
685		uint32 erroralert;
686		uint32 logonalert;
687		uint32 accessalert;
688		uint32 diskalert;
689		uint32 netioalert;
690		uint32 maxaudits;
691		[string,charset(UTF16)] uint16 *srvheuristics;
692	} srvsvc_NetSrvInfo402;
693
694	typedef struct {
695		uint32 ulist_mtime;
696		uint32 glist_mtime;
697		uint32 alist_mtime;
698		[string,charset(UTF16)] uint16 *alerts;
699		uint32 security;
700		uint32 numadmin;
701		uint32 lanmask;
702		[string,charset(UTF16)] uint16 *guestaccount;
703		uint32 chdevs;
704		uint32 chdevqs;
705		uint32 chdevjobs;
706		uint32 connections;
707		uint32 shares;
708		uint32 openfiles;
709		uint32 sessopen;
710		uint32 sesssvc;
711		uint32 sessreqs;
712		uint32 opensearch;
713		uint32 activelocks;
714		uint32 sizereqbufs;
715		uint32 numbigbufs;
716		uint32 numfiletasks;
717		uint32 alertsched;
718		uint32 eroralert;
719		uint32 logonalert;
720		uint32 accessalert;
721		uint32 diskalert;
722		uint32 netioalert;
723		uint32 maxaudits;
724		[string,charset(UTF16)] uint16 *srvheuristics;
725		uint32 auditedevents;
726		uint32 auditprofile;
727		[string,charset(UTF16)] uint16 *autopath;
728	} srvsvc_NetSrvInfo403;
729
730	typedef struct {
731		uint32 sessopen;
732		uint32 sesssvc;
733		uint32 opensearch;
734		uint32 sizereqbufs;
735		uint32 initworkitems;
736		uint32 maxworkitems;
737		uint32 rawworkitems;
738		uint32 irpstacksize;
739		uint32 maxrawbuflen;
740		uint32 sessusers;
741		uint32 sessconns;
742		uint32 maxpagedmemoryusage;
743		uint32 maxnonpagedmemoryusage;
744		uint32 enablesoftcompat;
745		uint32 enableforcedlogoff;
746		uint32 timesource;
747		uint32 acceptdownlevelapis;
748		uint32 lmannounce;
749	} srvsvc_NetSrvInfo502;
750
751        typedef struct{
752		uint32 sessopen;
753		uint32 sesssvc;
754		uint32 opensearch;
755		uint32 sizereqbufs;
756		uint32 initworkitems;
757		uint32 maxworkitems;
758		uint32 rawworkitems;
759		uint32 irpstacksize;
760		uint32 maxrawbuflen;
761		uint32 sessusers;
762		uint32 sessconns;
763		uint32 maxpagedmemoryusage;
764		uint32 maxnonpagedmemoryusage;
765		uint32 enablesoftcompat;
766		uint32 enableforcedlogoff;
767		uint32 timesource;
768		uint32 acceptdownlevelapis;
769		uint32 lmannounce;
770		[string,charset(UTF16)] uint16 *domain;
771		uint32 maxcopyreadlen;
772		uint32 maxcopywritelen;
773		uint32 minkeepsearch;
774		uint32 maxkeepsearch;
775		uint32 minkeepcomplsearch;
776		uint32 maxkeepcomplsearch;
777		uint32 threadcountadd;
778		uint32 numlockthreads;
779		uint32 scavtimeout;
780		uint32 minrcvqueue;
781		uint32 minfreeworkitems;
782		uint32 xactmemsize;
783		uint32 threadpriority;
784		uint32 maxmpxct;
785		uint32 oplockbreakwait;
786		uint32 oplockbreakresponsewait;
787		uint32 enableoplocks;
788		uint32 enableoplockforceclose;
789		uint32 enablefcbopens;
790		uint32 enableraw;
791		uint32 enablesharednetdrives;
792		uint32 minfreeconnections;
793		uint32 maxfreeconnections;
794        } srvsvc_NetSrvInfo503;
795
796        typedef struct{
797		uint32 sessopen;
798		uint32 sesssvc;
799		uint32 opensearch;
800		uint32 sizereqbufs;
801		uint32 initworkitems;
802		uint32 maxworkitems;
803		uint32 rawworkitems;
804		uint32 irpstacksize;
805		uint32 maxrawbuflen;
806		uint32 sessusers;
807		uint32 sessconns;
808		uint32 maxpagedmemoryusage;
809		uint32 maxnonpagedmemoryusage;
810		uint32 enablesoftcompat;
811		uint32 enableforcedlogoff;
812		uint32 timesource;
813		uint32 acceptdownlevelapis;
814		uint32 lmannounce;
815		[string,charset(UTF16)] uint16 *domain;
816		uint32 maxcopyreadlen;
817		uint32 maxcopywritelen;
818		uint32 minkeepsearch;
819		uint32 minkeepcomplsearch;
820		uint32 maxkeepcomplsearch;
821		uint32 threadcountadd;
822		uint32 numlockthreads;
823		uint32 scavtimeout;
824		uint32 minrcvqueue;
825		uint32 minfreeworkitems;
826		uint32 xactmemsize;
827		uint32 threadpriority;
828		uint32 maxmpxct;
829		uint32 oplockbreakwait;
830		uint32 oplockbreakresponsewait;
831		uint32 enableoplocks;
832		uint32 enableoplockforceclose;
833		uint32 enablefcbopens;
834		uint32 enableraw;
835		uint32 enablesharednetdrives;
836		uint32 minfreeconnections;
837		uint32 maxfreeconnections;
838		uint32 initsesstable;
839		uint32 initconntable;
840		uint32 initfiletable;
841		uint32 initsearchtable;
842		uint32 alertsched;
843		uint32 errortreshold;
844		uint32 networkerrortreshold;
845		uint32 diskspacetreshold;
846		uint32 reserved;
847		uint32 maxlinkdelay;
848		uint32 minlinkthroughput;
849		uint32 linkinfovalidtime;
850		uint32 scavqosinfoupdatetime;
851		uint32 maxworkitemidletime;
852        } srvsvc_NetSrvInfo599;
853
854        typedef struct{
855		[string,charset(UTF16)] uint16 *comment;
856        } srvsvc_NetSrvInfo1005;
857
858        typedef struct{
859                uint32 disc;
860        } srvsvc_NetSrvInfo1010;
861
862        typedef struct{
863                uint32 hidden;
864        } srvsvc_NetSrvInfo1016;
865
866        typedef struct{
867                uint32 announce;
868        } srvsvc_NetSrvInfo1017;
869
870        typedef struct{
871                uint32 anndelta;
872        } srvsvc_NetSrvInfo1018;
873
874        typedef struct{
875                uint32 users;
876        } srvsvc_NetSrvInfo1107;
877
878        typedef struct{
879                uint32 sessopens;
880        } srvsvc_NetSrvInfo1501;
881
882        typedef struct{
883                uint32 sessvcs;
884        } srvsvc_NetSrvInfo1502;
885
886        typedef struct{
887                uint32 opensearch;
888        } srvsvc_NetSrvInfo1503;
889
890        typedef struct{
891                uint32 maxworkitems;
892        } srvsvc_NetSrvInfo1506;
893
894        typedef struct{
895                uint32 maxrawbuflen;
896        } srvsvc_NetSrvInfo1509;
897
898        typedef struct{
899                uint32 sessusers;
900        } srvsvc_NetSrvInfo1510;
901
902        typedef struct{
903                uint32 sesscons;
904        } srvsvc_NetSrvInfo1511;
905
906        typedef struct{
907                uint32 maxnonpagedmemoryusage;
908        } srvsvc_NetSrvInfo1512;
909
910        typedef struct{
911                uint32 maxpagedmemoryusage;
912        } srvsvc_NetSrvInfo1513;
913
914        typedef struct{
915                uint32 enablesoftcompat;
916        } srvsvc_NetSrvInfo1514;
917
918        typedef struct{
919                uint32 enableforcedlogoff;
920        } srvsvc_NetSrvInfo1515;
921
922        typedef struct{
923                uint32 timesource;
924        } srvsvc_NetSrvInfo1516;
925
926        typedef struct{
927                uint32 lmannounce;
928        } srvsvc_NetSrvInfo1518;
929
930        typedef struct{
931                uint32 maxcopyreadlen;
932        } srvsvc_NetSrvInfo1520;
933
934        typedef struct{
935                uint32 maxcopywritelen;
936        } srvsvc_NetSrvInfo1521;
937
938        typedef struct{
939                uint32 minkeepsearch;
940        } srvsvc_NetSrvInfo1522;
941
942        typedef struct{
943                uint32 maxkeepsearch;
944        } srvsvc_NetSrvInfo1523;
945
946        typedef struct{
947                uint32 minkeepcomplsearch;
948        } srvsvc_NetSrvInfo1524;
949
950        typedef struct{
951                uint32 maxkeepcomplsearch;
952        } srvsvc_NetSrvInfo1525;
953
954        typedef struct{
955                uint32 scavtimeout;
956        } srvsvc_NetSrvInfo1528;
957
958        typedef struct{
959                uint32 minrcvqueue;
960        } srvsvc_NetSrvInfo1529;
961
962        typedef struct{
963                uint32 minfreeworkitems;
964        } srvsvc_NetSrvInfo1530;
965
966        typedef struct{
967                uint32 maxmpxct;
968        } srvsvc_NetSrvInfo1533;
969
970        typedef struct{
971                uint32 oplockbreakwait;
972        } srvsvc_NetSrvInfo1534;
973
974        typedef struct{
975                uint32 oplockbreakresponsewait;
976        } srvsvc_NetSrvInfo1535;
977
978        typedef struct{
979                uint32 enableoplocks;
980        } srvsvc_NetSrvInfo1536;
981
982        typedef struct{
983                uint32 enableoplockforceclose;
984        } srvsvc_NetSrvInfo1537;
985
986        typedef struct{
987                uint32 enablefcbopens;
988        } srvsvc_NetSrvInfo1538;
989
990        typedef struct{
991                uint32 enableraw;
992        } srvsvc_NetSrvInfo1539;
993
994        typedef struct{
995                uint32 enablesharednetdrives;
996        } srvsvc_NetSrvInfo1540;
997
998        typedef struct{
999                uint32 minfreeconnections;
1000        } srvsvc_NetSrvInfo1541;
1001
1002        typedef struct{
1003                uint32 maxfreeconnections;
1004        } srvsvc_NetSrvInfo1542;
1005
1006        typedef struct{
1007                uint32 initsesstable;
1008        } srvsvc_NetSrvInfo1543;
1009
1010        typedef struct{
1011                uint32 initconntable;
1012        } srvsvc_NetSrvInfo1544;
1013
1014        typedef struct{
1015                uint32 initfiletable;
1016        } srvsvc_NetSrvInfo1545;
1017
1018        typedef struct{
1019                uint32 initsearchtable;
1020        } srvsvc_NetSrvInfo1546;
1021
1022        typedef struct{
1023                uint32 alertsched;
1024        } srvsvc_NetSrvInfo1547;
1025
1026        typedef struct{
1027                uint32 errortreshold;
1028        } srvsvc_NetSrvInfo1548;
1029
1030        typedef struct{
1031                uint32 networkerrortreshold;
1032        } srvsvc_NetSrvInfo1549;
1033
1034        typedef struct{
1035                uint32 diskspacetreshold;
1036        } srvsvc_NetSrvInfo1550;
1037
1038        typedef struct{
1039                uint32 maxlinkdelay;
1040        } srvsvc_NetSrvInfo1552;
1041
1042        typedef struct{
1043                uint32 minlinkthroughput;
1044        } srvsvc_NetSrvInfo1553;
1045
1046        typedef struct{
1047                uint32 linkinfovalidtime;
1048        } srvsvc_NetSrvInfo1554;
1049
1050        typedef struct{
1051                uint32 scavqosinfoupdatetime;
1052        } srvsvc_NetSrvInfo1555;
1053
1054        typedef struct{
1055                uint32 maxworkitemidletime;
1056        } srvsvc_NetSrvInfo1556;
1057
1058
1059	typedef union{
1060                [case(100)]     srvsvc_NetSrvInfo100 *info100;
1061                [case(101)]     srvsvc_NetSrvInfo101 *info101;
1062                [case(102)]     srvsvc_NetSrvInfo102 *info102;
1063                [case(402)]     srvsvc_NetSrvInfo402 *info402;
1064                [case(403)]     srvsvc_NetSrvInfo403 *info403;
1065                [case(502)]     srvsvc_NetSrvInfo502 *info502;
1066                [case(503)]     srvsvc_NetSrvInfo503 *info503;
1067                [case(599)]     srvsvc_NetSrvInfo599 *info599;
1068                [case(1005)]    srvsvc_NetSrvInfo1005 *info1005;
1069                [case(1010)]    srvsvc_NetSrvInfo1010 *info1010;
1070                [case(1016)]    srvsvc_NetSrvInfo1016 *info1016;
1071                [case(1017)]    srvsvc_NetSrvInfo1017 *info1017;
1072                [case(1018)]    srvsvc_NetSrvInfo1018 *info1018;
1073                [case(1107)]    srvsvc_NetSrvInfo1107 *info1107;
1074                [case(1501)]    srvsvc_NetSrvInfo1501 *info1501;
1075                [case(1502)]    srvsvc_NetSrvInfo1502 *info1502;
1076                [case(1503)]    srvsvc_NetSrvInfo1503 *info1503;
1077                [case(1506)]    srvsvc_NetSrvInfo1506 *info1506;
1078                [case(1509)]    srvsvc_NetSrvInfo1509 *info1509;
1079                [case(1510)]    srvsvc_NetSrvInfo1510 *info1510;
1080                [case(1511)]    srvsvc_NetSrvInfo1511 *info1511;
1081                [case(1512)]    srvsvc_NetSrvInfo1512 *info1512;
1082                [case(1513)]    srvsvc_NetSrvInfo1513 *info1513;
1083                [case(1514)]    srvsvc_NetSrvInfo1514 *info1514;
1084                [case(1515)]    srvsvc_NetSrvInfo1515 *info1515;
1085                [case(1516)]    srvsvc_NetSrvInfo1516 *info1516;
1086                [case(1518)]    srvsvc_NetSrvInfo1518 *info1518;
1087                [case(1520)]    srvsvc_NetSrvInfo1520 *info1520;
1088                [case(1521)]    srvsvc_NetSrvInfo1521 *info1521;
1089                [case(1522)]    srvsvc_NetSrvInfo1522 *info1522;
1090                [case(1523)]    srvsvc_NetSrvInfo1523 *info1523;
1091                [case(1524)]    srvsvc_NetSrvInfo1524 *info1524;
1092                [case(1525)]    srvsvc_NetSrvInfo1525 *info1525;
1093                [case(1528)]    srvsvc_NetSrvInfo1528 *info1528;
1094                [case(1529)]    srvsvc_NetSrvInfo1529 *info1529;
1095                [case(1530)]    srvsvc_NetSrvInfo1530 *info1530;
1096                [case(1533)]    srvsvc_NetSrvInfo1533 *info1533;
1097                [case(1534)]    srvsvc_NetSrvInfo1534 *info1534;
1098                [case(1535)]    srvsvc_NetSrvInfo1535 *info1535;
1099                [case(1536)]    srvsvc_NetSrvInfo1536 *info1536;
1100                [case(1537)]    srvsvc_NetSrvInfo1537 *info1537;
1101                [case(1538)]    srvsvc_NetSrvInfo1538 *info1538;
1102                [case(1539)]    srvsvc_NetSrvInfo1539 *info1539;
1103                [case(1540)]    srvsvc_NetSrvInfo1540 *info1540;
1104                [case(1541)]    srvsvc_NetSrvInfo1541 *info1541;
1105                [case(1542)]    srvsvc_NetSrvInfo1542 *info1542;
1106                [case(1543)]    srvsvc_NetSrvInfo1543 *info1543;
1107                [case(1544)]    srvsvc_NetSrvInfo1544 *info1544;
1108                [case(1545)]    srvsvc_NetSrvInfo1545 *info1545;
1109                [case(1546)]    srvsvc_NetSrvInfo1546 *info1546;
1110                [case(1547)]    srvsvc_NetSrvInfo1547 *info1547;
1111                [case(1548)]    srvsvc_NetSrvInfo1548 *info1548;
1112                [case(1549)]    srvsvc_NetSrvInfo1549 *info1549;
1113                [case(1550)]    srvsvc_NetSrvInfo1550 *info1550;
1114                [case(1552)]    srvsvc_NetSrvInfo1552 *info1552;
1115                [case(1553)]    srvsvc_NetSrvInfo1553 *info1553;
1116                [case(1554)]    srvsvc_NetSrvInfo1554 *info1554;
1117                [case(1555)]    srvsvc_NetSrvInfo1555 *info1555;
1118                [case(1556)]    srvsvc_NetSrvInfo1556 *info1556;
1119		[default];
1120	} srvsvc_NetSrvInfo;
1121
1122	/******************/
1123	/* Function: 0x15 */
1124	WERROR srvsvc_NetSrvGetInfo(
1125		[in]   [string,charset(UTF16)] uint16 *server_unc,
1126		[in]   uint32 level,
1127		[out,switch_is(level),ref] srvsvc_NetSrvInfo *info
1128		);
1129
1130	/******************/
1131	/* Function: 0x16 */
1132	WERROR srvsvc_NetSrvSetInfo(
1133		[in]   [string,charset(UTF16)] uint16 *server_unc,
1134		[in]   uint32 level,
1135		[in,switch_is(level)] srvsvc_NetSrvInfo info,
1136		[in,out]   uint32 *parm_error
1137		);
1138
1139/**************************/
1140/* srvsvc_NetDisk         */
1141/**************************/
1142	typedef struct {
1143		[flag(STR_LEN4)] string disk;
1144	} srvsvc_NetDiskInfo0;
1145
1146	typedef struct {
1147		uint32 count;
1148		[size_is(count), length_is(count)] srvsvc_NetDiskInfo0 *disks;
1149	} srvsvc_NetDiskInfo;
1150
1151	/******************/
1152	/* Function: 0x17 */
1153	WERROR srvsvc_NetDiskEnum(
1154		[in]      [string,charset(UTF16)] uint16 *server_unc,
1155		[in]      uint32 level,
1156		[in,out,ref]  srvsvc_NetDiskInfo *info,
1157		[in]      uint32 maxlen,
1158		[out,ref] uint32 *totalentries,
1159		[in,out]  uint32 *resume_handle
1160		);
1161
1162/**************************/
1163/* srvsvc_NetStatistics   */
1164/**************************/
1165	typedef struct {
1166		uint32 start;
1167		uint32 fopens;
1168		uint32 devopens;
1169		uint32 jobsqueued;
1170		uint32 sopens;
1171		uint32 stimeouts;
1172		uint32 serrorout;
1173		uint32 pwerrors;
1174		uint32 permerrors;
1175		uint32 syserrors;
1176		uint32 bytessent_low;
1177		uint32 bytessent_high;
1178		uint32 bytesrcvd_low;
1179		uint32 bytesrcvd_high;
1180		uint32 avresponse;
1181		uint32 reqbufneed;
1182		uint32 bigbufneed;
1183	} srvsvc_Statistics;
1184
1185	/******************/
1186	/* Function: 0x18 */
1187	WERROR srvsvc_NetServerStatisticsGet(
1188		[in]      [string,charset(UTF16)] uint16 *server_unc,
1189		[in]      [string,charset(UTF16)] uint16 *service,
1190		[in]      uint32 level,
1191		[in]      uint32 options,
1192		[out,ref] srvsvc_Statistics *stat
1193		);
1194
1195/**************************/
1196/* srvsvc_NetTransport    */
1197/**************************/
1198	typedef struct {
1199		uint32 vcs;
1200		[string,charset(UTF16)] uint16 *name;
1201		[size_is(addr_len)] uint8 *addr;
1202		uint32 addr_len;
1203		[string,charset(UTF16)] uint16 *net_addr;
1204	} srvsvc_NetTransportInfo0;
1205
1206	/******************/
1207	/* Function: 0x19 */
1208	WERROR srvsvc_NetTransportAdd(
1209		[in]   [string,charset(UTF16)] uint16 *server_unc,
1210		[in] uint32 level,
1211		[in,switch_is(level)]   srvsvc_NetTransportInfo info
1212		);
1213
1214	typedef struct {
1215		uint32 count;
1216		[size_is(count)] srvsvc_NetTransportInfo0 *array;
1217	} srvsvc_NetTransportCtr0;
1218
1219	typedef struct {
1220		uint32 vcs;
1221		[string,charset(UTF16)] uint16 *name;
1222		[size_is(addr_len)] uint8 *addr;
1223		uint32 addr_len;
1224		[string,charset(UTF16)] uint16 *net_addr;
1225		[string,charset(UTF16)] uint16 *domain;
1226	} srvsvc_NetTransportInfo1;
1227
1228	typedef struct {
1229		uint32 count;
1230		[size_is(count)] srvsvc_NetTransportInfo1 *array;
1231	} srvsvc_NetTransportCtr1;
1232
1233	typedef [bitmap32bit] bitmap {
1234		SVTI2_REMAP_PIPE_NAMES		= 0x00000001
1235	} srvsvc_TransportFlags;
1236
1237
1238	typedef struct {
1239		uint32 vcs;
1240		[string,charset(UTF16)] uint16 *name;
1241		[size_is(addr_len)] uint8 *addr;
1242		uint32 addr_len;
1243		[string,charset(UTF16)] uint16 *net_addr;
1244		[string,charset(UTF16)] uint16 *domain;
1245		srvsvc_TransportFlags transport_flags;
1246	} srvsvc_NetTransportInfo2;
1247
1248	typedef struct {
1249		uint32 count;
1250		[size_is(count)] srvsvc_NetTransportInfo2 *array;
1251	} srvsvc_NetTransportCtr2;
1252
1253	typedef struct {
1254		uint32 vcs;
1255		[string,charset(UTF16)] uint16 *name;
1256		[size_is(addr_len)] uint8 *addr;
1257		uint32 addr_len;
1258		[string,charset(UTF16)] uint16 *net_addr;
1259		[string,charset(UTF16)] uint16 *domain;
1260		srvsvc_TransportFlags transport_flags;
1261		uint32 password_len;
1262		uint8 password[256];
1263	} srvsvc_NetTransportInfo3;
1264
1265	typedef struct {
1266		uint32 count;
1267		[size_is(count)] srvsvc_NetTransportInfo3 *array;
1268	} srvsvc_NetTransportCtr3;
1269
1270	typedef union {
1271		[case(0)] srvsvc_NetTransportCtr0 *ctr0;
1272		[case(1)] srvsvc_NetTransportCtr1 *ctr1;
1273		[case(2)] srvsvc_NetTransportCtr2 *ctr2;
1274		[case(3)] srvsvc_NetTransportCtr3 *ctr3;
1275		[default];
1276	} srvsvc_NetTransportCtr;
1277
1278	/******************/
1279	/* Function: 0x1a */
1280	WERROR srvsvc_NetTransportEnum(
1281		[in]   [string,charset(UTF16)] uint16 *server_unc,
1282		[in,out,ref] uint32 *level,
1283		[in,out,switch_is(level),ref]   srvsvc_NetTransportCtr *transports,
1284		[in]   uint32 max_buffer,
1285		[out,ref]  uint32 *totalentries,
1286		[in,out]   uint32 *resume_handle
1287		);
1288
1289	/******************/
1290	/* Function: 0x1b */
1291	WERROR srvsvc_NetTransportDel(
1292		[in]   [string,charset(UTF16)] uint16 *server_unc,
1293		[in]	uint32 unknown,
1294		[in] 	srvsvc_NetTransportInfo0 transport
1295		);
1296
1297/**************************/
1298/* srvsvc_NetRemoteTOD    */
1299/**************************/
1300	typedef struct {
1301		uint32 elapsed; /* time(NULL) */
1302		uint32 msecs; /* milliseconds till system reboot (uptime) */
1303		uint32 hours;
1304		uint32 mins;
1305		uint32 secs;
1306		uint32 hunds;
1307		int32 timezone; /* in minutes */
1308		uint32 tinterval; /* clock tick interval in 0.0001 second units; 310 on windows */
1309		uint32 day;
1310		uint32 month;
1311		uint32 year;
1312		uint32 weekday;
1313	} srvsvc_NetRemoteTODInfo;
1314
1315	/******************/
1316	/* Function: 0x1c */
1317	WERROR srvsvc_NetRemoteTOD(
1318		[in]   [string,charset(UTF16)] uint16 *server_unc,
1319		[out,unique]   srvsvc_NetRemoteTODInfo *info
1320		);
1321
1322/**************************/
1323/* srvsvc_NetServiceBits  */
1324/**************************/
1325	/******************/
1326	/* Function: 0x1d */
1327	WERROR srvsvc_NetSetServiceBits(
1328		[in]   [string,charset(UTF16)] uint16 *server_unc,
1329		[in]   [string,charset(UTF16)] uint16 *transport,
1330		[in]   uint32 servicebits,
1331		[in]   uint32 updateimmediately
1332		);
1333
1334/**************************/
1335/* srvsvc_NetPath         */
1336/**************************/
1337	/******************/
1338	/* Function: 0x1e */
1339	WERROR srvsvc_NetPathType(
1340		[in]   [string,charset(UTF16)] uint16 *server_unc,
1341		[in]   [string,charset(UTF16)] uint16 path[],
1342		[in]   uint32 pathflags,
1343		[out,ref]   uint32 *pathtype
1344		);
1345
1346	/******************/
1347	/* Function: 0x1f */
1348	WERROR srvsvc_NetPathCanonicalize(
1349		[in]   [string,charset(UTF16)] uint16 *server_unc,
1350		[in]   [string,charset(UTF16)] uint16 path[],
1351		[out]  [size_is(maxbuf)] uint8 can_path[],
1352		[in]   uint32 maxbuf,
1353		[in]   [string,charset(UTF16)] uint16 prefix[],
1354		[in,out,ref] uint32 *pathtype,
1355		[in]    uint32 pathflags
1356		);
1357
1358	/******************/
1359	/* Function: 0x20 */
1360	WERROR srvsvc_NetPathCompare(
1361		[in]   [string,charset(UTF16)] uint16 *server_unc,
1362		[in]   [string,charset(UTF16)] uint16 path1[],
1363		[in]   [string,charset(UTF16)] uint16 path2[],
1364		[in]    uint32 pathtype,
1365		[in]    uint32 pathflags
1366		);
1367
1368/**************************/
1369/* srvsvc_NetName         */
1370/**************************/
1371	/******************/
1372	/* Function: 0x21 */
1373	WERROR srvsvc_NetNameValidate(
1374		[in]   [string,charset(UTF16)] uint16 *server_unc,
1375		[in]   [string,charset(UTF16)] uint16 name[],
1376		[in]    uint32 name_type,
1377		[in]    uint32 flags
1378		);
1379
1380	/******************/
1381	/* Function: 0x22 */
1382	WERROR srvsvc_NETRPRNAMECANONICALIZE(
1383		);
1384
1385	/******************/
1386	/* Function: 0x23 */
1387	WERROR srvsvc_NetPRNameCompare(
1388		[in]   [string,charset(UTF16)] uint16 *server_unc,
1389		[in]   [string,charset(UTF16)] uint16 name1[],
1390		[in]   [string,charset(UTF16)] uint16 name2[],
1391		[in]    uint32 name_type,
1392		[in]    uint32 flags
1393		);
1394
1395/**************************/
1396/* srvsvc_NetShare ...    */
1397/**************************/
1398	/******************/
1399	/* Function: 0x24 */
1400	/* Note, there must be some way to return entries read vs
1401	   total entries ... */
1402	WERROR srvsvc_NetShareEnum(
1403		[in]       [string,charset(UTF16)] uint16 *server_unc,
1404	 	[in,out,ref]   uint32 *level,
1405		[in,out,switch_is(level),ref]   srvsvc_NetShareCtr *ctr,
1406		[in]       uint32 max_buffer,
1407		[out,ref]  uint32 *totalentries,
1408		[in,out]   uint32 *resume_handle
1409		);
1410
1411	/******************/
1412	/* Function: 0x25 */
1413	WERROR srvsvc_NetShareDelStart(
1414		[in]       [string,charset(UTF16)] uint16 *server_unc,
1415		[in]       [string,charset(UTF16)] uint16 share[],
1416		[in]       uint32 reserved,
1417		[out,unique] policy_handle *hnd
1418		);
1419
1420	/******************/
1421	/* Function: 0x26 */
1422	WERROR srvsvc_NetShareDelCommit(
1423		[in, out] policy_handle *hnd
1424		);
1425
1426	/******************/
1427	/* Function: 0x27 */
1428	WERROR srvsvc_NetGetFileSecurity(
1429		[in]       [string,charset(UTF16)] uint16 *server_unc,
1430		[in]       [string,charset(UTF16)] uint16 *share,
1431		[in]       [string,charset(UTF16)] uint16 file[],
1432		[in]       security_secinfo securityinformation,
1433		[out,unique]	   sec_desc_buf *sd_buf
1434		);
1435
1436	/******************/
1437	/* Function: 0x28 */
1438	WERROR srvsvc_NetSetFileSecurity(
1439		[in]       [string,charset(UTF16)] uint16 *server_unc,
1440		[in]       [string,charset(UTF16)] uint16 *share,
1441		[in]       [string,charset(UTF16)] uint16 file[],
1442		[in]       security_secinfo securityinformation,
1443		[in]	   sec_desc_buf sd_buf
1444		);
1445
1446
1447
1448	typedef [switch_type(uint32)] union {
1449		[case(0)] srvsvc_NetTransportInfo0 info0;
1450		[case(1)] srvsvc_NetTransportInfo1 info1;
1451		[case(2)] srvsvc_NetTransportInfo2 info2;
1452		[case(3)] srvsvc_NetTransportInfo3 info3;
1453	} srvsvc_NetTransportInfo;
1454
1455	/******************/
1456	/* Function: 0x29 */
1457	WERROR srvsvc_NetServerTransportAddEx(
1458		[in]   [string,charset(UTF16)] uint16 *server_unc,
1459		[in] uint32 level,
1460		[in,switch_is(level)]   srvsvc_NetTransportInfo info
1461		);
1462
1463	/******************/
1464	/* Function: 0x2a */
1465	WERROR srvsvc_NetServerSetServiceBitsEx(
1466		[in]   [string,charset(UTF16)] uint16 *server_unc,
1467		[in]   [string,charset(UTF16)] uint16 *emulated_server_unc,
1468		[in]   [string,charset(UTF16)] uint16 *transport,
1469		[in]   uint32 servicebitsofinterest,
1470		[in]   uint32 servicebits,
1471		[in]   uint32 updateimmediately
1472		);
1473
1474	/******************/
1475	/* Function: 0x2b */
1476	WERROR srvsvc_NETRDFSGETVERSION(
1477		);
1478
1479	/******************/
1480	/* Function: 0x2c */
1481	WERROR srvsvc_NETRDFSCREATELOCALPARTITION(
1482		);
1483
1484	/******************/
1485	/* Function: 0x2d */
1486	WERROR srvsvc_NETRDFSDELETELOCALPARTITION(
1487		);
1488
1489	/******************/
1490	/* Function: 0x2e */
1491	WERROR srvsvc_NETRDFSSETLOCALVOLUMESTATE(
1492		);
1493
1494	/******************/
1495	/* Function: 0x2f */
1496	WERROR srvsvc_NETRDFSSETSERVERINFO(
1497		);
1498
1499	/******************/
1500	/* Function: 0x30 */
1501	WERROR srvsvc_NETRDFSCREATEEXITPOINT(
1502		);
1503
1504	/******************/
1505	/* Function: 0x31 */
1506	WERROR srvsvc_NETRDFSDELETEEXITPOINT(
1507		);
1508
1509	/******************/
1510	/* Function: 0x32 */
1511	WERROR srvsvc_NETRDFSMODIFYPREFIX(
1512		);
1513
1514	/******************/
1515	/* Function: 0x33 */
1516	WERROR srvsvc_NETRDFSFIXLOCALVOLUME(
1517		);
1518
1519	/******************/
1520	/* Function: 0x34 */
1521	WERROR srvsvc_NETRDFSMANAGERREPORTSITEINFO(
1522		);
1523
1524	/******************/
1525	/* Function: 0x35 */
1526	WERROR srvsvc_NETRSERVERTRANSPORTDELEX(
1527		);
1528}
1529