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