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