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