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