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