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