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