Windows: cm_BPlusDirNextEnumEntry return all errors
[openafs.git] / src / WINNT / afsd / ms-srvsvc.idl
1 /*
2  * Copyright 2009 Microsoft
3  *
4  * Used with permission
5  */
6
7 import "wtypes.idl";
8
9 typedef unsigned char UCHAR;
10 typedef unsigned char *PUCHAR;
11 typedef WCHAR *LMSTR;
12 typedef DWORD NET_API_STATUS;
13 typedef DWORD SECURITY_INFORMATION;
14 typedef DWORD *PSECURITY_INFORMATION;
15
16 [
17     uuid(4B324FC8-1670-01D3-1278-5A47BF6EE188),
18     version(3.0),
19     ms_union,
20     pointer_default(unique)
21 ]
22 interface srvsvc
23 {
24     typedef [handle, string] wchar_t * SRVSVC_HANDLE;
25
26     typedef struct _CONNECTION_INFO_0
27     {
28         DWORD coni0_id;
29     } CONNECTION_INFO_0,
30      *PCONNECTION_INFO_0,
31      *LPCONNECTION_INFO_0;
32
33     typedef struct _CONNECT_INFO_0_CONTAINER
34     {
35         DWORD EntriesRead;
36         [size_is(EntriesRead)] LPCONNECTION_INFO_0 Buffer;
37     } CONNECT_INFO_0_CONTAINER,
38      *PCONNECT_INFO_0_CONTAINER,
39      *LPCONNECT_INFO_0_CONTAINER;
40
41     typedef struct _CONNECTION_INFO_1
42     {
43         DWORD coni1_id;
44         DWORD coni1_type;
45         DWORD coni1_num_opens;
46         DWORD coni1_num_users;
47         DWORD coni1_time;
48         [string] wchar_t * coni1_username;
49         [string] wchar_t * coni1_netname;
50     } CONNECTION_INFO_1,
51      *PCONNECTION_INFO_1,
52      *LPCONNECTION_INFO_1;
53
54     typedef struct _CONNECT_INFO_1_CONTAINER
55     {
56         DWORD EntriesRead;
57         [size_is(EntriesRead)] LPCONNECTION_INFO_1 Buffer;
58     } CONNECT_INFO_1_CONTAINER,
59      *PCONNECT_INFO_1_CONTAINER,
60      *LPCONNECT_INFO_1_CONTAINER;
61
62     typedef [switch_type(DWORD)] union _CONNECT_ENUM_UNION {
63         [case(0)]
64            CONNECT_INFO_0_CONTAINER* Level0;
65         [case(1)]
66            CONNECT_INFO_1_CONTAINER* Level1;
67     } CONNECT_ENUM_UNION;
68
69     typedef struct _CONNECT_ENUM_STRUCT {
70         DWORD Level;
71         [switch_is(Level)] CONNECT_ENUM_UNION ConnectInfo;
72     } CONNECT_ENUM_STRUCT,
73       *PCONNECT_ENUM_STRUCT,
74       *LPCONNECT_ENUM_STRUCT;
75
76     typedef struct _FILE_INFO_2
77     {
78         DWORD fi2_id;
79     } FILE_INFO_2, *PFILE_INFO_2, *LPFILE_INFO_2;
80
81     typedef struct _FILE_INFO_2_CONTAINER
82     {
83         DWORD EntriesRead;
84         [size_is(EntriesRead)] LPFILE_INFO_2 Buffer;
85     } FILE_INFO_2_CONTAINER,
86      *PFILE_INFO_2_CONTAINER,
87      *LPFILE_INFO_2_CONTAINER;
88
89     typedef struct _FILE_INFO_3 {
90         DWORD fi3_id;
91         DWORD fi3_permissions;
92         DWORD fi3_num_locks;
93         [string] wchar_t * fi3_pathname;
94         [string] wchar_t * fi3_username;
95     } FILE_INFO_3,
96      *PFILE_INFO_3,
97      *LPFILE_INFO_3;
98
99     typedef struct _FILE_INFO_3_CONTAINER
100     {
101         DWORD EntriesRead;
102         [size_is(EntriesRead)] LPFILE_INFO_3 Buffer;
103     } FILE_INFO_3_CONTAINER,
104      *PFILE_INFO_3_CONTAINER,
105      *LPFILE_INFO_3_CONTAINER;
106
107     typedef [switch_type(DWORD)] union _FILE_ENUM_UNION {
108         [case(2)]
109            FILE_INFO_2_CONTAINER* Level2;
110         [case(3)]
111            FILE_INFO_3_CONTAINER* Level3;
112     } FILE_ENUM_UNION;
113
114     typedef struct _FILE_ENUM_STRUCT {
115         DWORD Level;
116         [switch_is(Level)] FILE_ENUM_UNION FileInfo;
117     } FILE_ENUM_STRUCT,
118      *PFILE_ENUM_STRUCT,
119      *LPFILE_ENUM_STRUCT;
120
121     typedef [switch_type(unsigned long)] union _FILE_INFO
122     {
123         [case(2)]
124             LPFILE_INFO_2 FileInfo2;
125         [case(3)]
126             LPFILE_INFO_3 FileInfo3;
127     } FILE_INFO,
128      *PFILE_INFO,
129     *LPFILE_INFO;
130
131     typedef struct _SESSION_INFO_0
132     {
133         [string] wchar_t * sesi0_cname;
134     } SESSION_INFO_0,
135      *PSESSION_INFO_0,
136      *LPSESSION_INFO_0;
137
138     typedef struct _SESSION_INFO_0_CONTAINER
139     {
140         DWORD EntriesRead;
141         [size_is(EntriesRead)] LPSESSION_INFO_0 Buffer;
142     } SESSION_INFO_0_CONTAINER,
143      *PSESSION_INFO_0_CONTAINER,
144      *LPSESSION_INFO_0_CONTAINER;
145
146     typedef struct _SESSION_INFO_1
147     {
148         [string] wchar_t * sesi1_cname;
149         [string] wchar_t * sesi1_username;
150         DWORD sesi1_num_opens;
151         DWORD sesi1_time;
152         DWORD sesi1_idle_time;
153         DWORD sesi1_user_flags;
154     } SESSION_INFO_1,
155      *PSESSION_INFO_1,
156      *LPSESSION_INFO_1;
157
158     typedef struct _SESSION_INFO_1_CONTAINER
159     {
160         DWORD EntriesRead;
161         [size_is(EntriesRead)] LPSESSION_INFO_1 Buffer;
162     } SESSION_INFO_1_CONTAINER,
163      *PSESSION_INFO_1_CONTAINER,
164      *LPSESSION_INFO_1_CONTAINER;
165
166     typedef struct _SESSION_INFO_2
167     {
168         [string] wchar_t * sesi2_cname;
169         [string] wchar_t * sesi2_username;
170         DWORD sesi2_num_opens;
171         DWORD sesi2_time;
172         DWORD sesi2_idle_time;
173         DWORD sesi2_user_flags;
174         [string] wchar_t * sesi2_cltype_name;
175     } SESSION_INFO_2,
176      *PSESSION_INFO_2,
177      *LPSESSION_INFO_2;
178
179     typedef struct _SESSION_INFO_2_CONTAINER
180     {
181         DWORD EntriesRead;
182         [size_is(EntriesRead)] LPSESSION_INFO_2 Buffer;
183     } SESSION_INFO_2_CONTAINER,
184      *PSESSION_INFO_2_CONTAINER,
185      *LPSESSION_INFO_2_CONTAINER;
186
187     typedef struct _SESSION_INFO_10
188     {
189         [string] wchar_t * sesi10_cname;
190         [string] wchar_t * sesi10_username;
191         DWORD sesi10_time;
192         DWORD sesi10_idle_time;
193     } SESSION_INFO_10,
194      *PSESSION_INFO_10,
195      *LPSESSION_INFO_10;
196
197     typedef struct _SESSION_INFO_10_CONTAINER
198     {
199         DWORD EntriesRead;
200         [size_is(EntriesRead)] LPSESSION_INFO_10 Buffer;
201     } SESSION_INFO_10_CONTAINER,
202      *PSESSION_INFO_10_CONTAINER,
203      *LPSESSION_INFO_10_CONTAINER;
204
205     typedef struct _SESSION_INFO_502
206     {
207         [string] wchar_t * sesi502_cname;
208         [string] wchar_t * sesi502_username;
209         DWORD sesi502_num_opens;
210         DWORD sesi502_time;
211         DWORD sesi502_idle_time;
212         DWORD sesi502_user_flags;
213         [string] wchar_t * sesi502_cltype_name;
214         [string] wchar_t * sesi502_transport;
215     } SESSION_INFO_502,
216      *PSESSION_INFO_502,
217      *LPSESSION_INFO_502;
218
219     typedef struct _SESSION_INFO_502_CONTAINER
220     {
221         DWORD EntriesRead;
222         [size_is(EntriesRead)] LPSESSION_INFO_502 Buffer;
223     } SESSION_INFO_502_CONTAINER,
224      *PSESSION_INFO_502_CONTAINER,
225      *LPSESSION_INFO_502_CONTAINER;
226
227     typedef [switch_type(DWORD)] union _SESSION_ENUM_UNION {
228 [case(0)]
229         SESSION_INFO_0_CONTAINER* Level0;
230         [case(1)]
231         SESSION_INFO_1_CONTAINER* Level1;
232         [case(2)]
233         SESSION_INFO_2_CONTAINER* Level2;
234         [case(10)]
235             SESSION_INFO_10_CONTAINER* Level10;
236         [case(502)]
237         SESSION_INFO_502_CONTAINER* Level502;
238     } SESSION_ENUM_UNION;
239
240     typedef struct _SESSION_ENUM_STRUCT {
241         DWORD Level;
242         [switch_is(Level)] SESSION_ENUM_UNION SessionInfo;
243     } SESSION_ENUM_STRUCT,
244      *PSESSION_ENUM_STRUCT,
245      *LPSESSION_ENUM_STRUCT;
246
247     typedef struct _SHARE_INFO_502_I
248     {
249         [string] WCHAR * shi502_netname;
250         DWORD shi502_type;
251         [string] WCHAR * shi502_remark;
252         DWORD shi502_permissions;
253         DWORD shi502_max_uses;
254         DWORD shi502_current_uses;
255         [string] WCHAR * shi502_path;
256         [string] WCHAR * shi502_passwd;
257         DWORD shi502_reserved;
258         [size_is(shi502_reserved)] unsigned char
259                 * shi502_security_descriptor;
260     } SHARE_INFO_502_I,
261      *PSHARE_INFO_502_I,
262      *LPSHARE_INFO_502_I;
263
264     typedef struct _SHARE_INFO_503_I
265     {
266         [string] WCHAR * shi503_netname;
267         DWORD            shi503_type;
268         [string] WCHAR * shi503_remark;
269         DWORD            shi503_permissions;
270         DWORD            shi503_max_uses;
271         DWORD            shi503_current_uses;
272         [string] WCHAR * shi503_path;
273         [string] WCHAR * shi503_passwd;
274         [string] WCHAR * shi503_servername;
275         DWORD            shi503_reserved;
276         [size_is(shi503_reserved)] PUCHAR shi503_security_descriptor;
277     } SHARE_INFO_503_I,
278      *PSHARE_INFO_503_I,
279      *LPSHARE_INFO_503_I;
280
281     typedef struct _SHARE_INFO_503_CONTAINER
282     {   DWORD EntriesRead;
283         [size_is(EntriesRead)] LPSHARE_INFO_503_I Buffer;
284     }   SHARE_INFO_503_CONTAINER,
285       *PSHARE_INFO_503_CONTAINER,
286      *LPSHARE_INFO_503_CONTAINER;
287
288     typedef struct _SHARE_INFO_1501_I
289     {
290         DWORD shi1501_reserved;
291         [size_is(shi1501_reserved)] unsigned char
292                 * shi1501_security_descriptor;
293     } SHARE_INFO_1501_I,
294      *PSHARE_INFO_1501_I,
295      *LPSHARE_INFO_1501_I;
296
297     typedef struct _SHARE_INFO_0
298     {
299         [string] wchar_t * shi0_netname;
300     } SHARE_INFO_0,
301      *PSHARE_INFO_0,
302      *LPSHARE_INFO_0;
303
304     typedef struct _SHARE_INFO_0_CONTAINER
305     {
306         DWORD EntriesRead;
307         [size_is(EntriesRead)] LPSHARE_INFO_0 Buffer;
308     } SHARE_INFO_0_CONTAINER;
309
310     typedef struct _SHARE_INFO_1
311     {
312         [string] wchar_t * shi1_netname;
313         DWORD shi1_type;
314         [string] wchar_t * shi1_remark;
315     } SHARE_INFO_1,
316      *PSHARE_INFO_1,
317      *LPSHARE_INFO_1;
318
319     typedef struct _SHARE_INFO_1_CONTAINER
320     {
321         DWORD EntriesRead;
322         [size_is(EntriesRead)] LPSHARE_INFO_1 Buffer;
323     } SHARE_INFO_1_CONTAINER;
324
325     typedef struct _SHARE_INFO_2
326     {
327         [string] wchar_t * shi2_netname;
328         DWORD shi2_type;
329         [string] wchar_t * shi2_remark;
330         DWORD shi2_permissions;
331         DWORD shi2_max_uses;
332         DWORD shi2_current_uses;
333         [string] wchar_t * shi2_path;
334         [string] wchar_t * shi2_passwd;
335     } SHARE_INFO_2,
336      *PSHARE_INFO_2,
337      *LPSHARE_INFO_2;
338
339     typedef struct _SHARE_INFO_2_CONTAINER
340     {
341         DWORD EntriesRead;
342         [size_is(EntriesRead)] LPSHARE_INFO_2 Buffer;
343     } SHARE_INFO_2_CONTAINER,
344      *PSHARE_INFO_2_CONTAINER,
345      *LPSHARE_INFO_2_CONTAINER;
346
347     typedef struct _SHARE_INFO_501
348     {
349         [string] wchar_t * shi501_netname;
350         DWORD shi501_type;
351         [string] wchar_t * shi501_remark;
352         DWORD shi501_flags;
353     } SHARE_INFO_501,
354      *PSHARE_INFO_501,
355      *LPSHARE_INFO_501;
356
357     typedef struct _SHARE_INFO_501_CONTAINER
358     {
359         DWORD EntriesRead;
360         [size_is(EntriesRead)] LPSHARE_INFO_501 Buffer;
361     } SHARE_INFO_501_CONTAINER, *PSHARE_INFO_501_CONTAINER,
362       *LPSHARE_INFO_501_CONTAINER;
363
364     typedef struct _SHARE_INFO_502_CONTAINER
365     {
366         DWORD EntriesRead;
367         [size_is(EntriesRead)] LPSHARE_INFO_502_I Buffer;
368     } SHARE_INFO_502_CONTAINER,
369      *PSHARE_INFO_502_CONTAINER,
370      *LPSHARE_INFO_502_CONTAINER;
371
372     typedef [switch_type(DWORD)] union _SHARE_ENUM_UNION {
373       [case(0)]
374          SHARE_INFO_0_CONTAINER* Level0;
375       [case(1)]
376          SHARE_INFO_1_CONTAINER* Level1;
377       [case(2)]
378          SHARE_INFO_2_CONTAINER* Level2;
379       [case(501)]
380          SHARE_INFO_501_CONTAINER* Level501;
381       [case(502)]
382          SHARE_INFO_502_CONTAINER* Level502;
383       [case(503)]
384          SHARE_INFO_503_CONTAINER* Level503;
385     } SHARE_ENUM_UNION;
386
387     typedef struct _SHARE_ENUM_STRUCT
388     {
389         DWORD Level;
390         [switch_is(Level)] SHARE_ENUM_UNION ShareInfo;
391     }   SHARE_ENUM_STRUCT,
392       *PSHARE_ENUM_STRUCT,
393      *LPSHARE_ENUM_STRUCT;
394
395     typedef struct _SHARE_INFO_1004
396     {
397         [string] wchar_t * shi1004_remark;
398     } SHARE_INFO_1004,
399      *PSHARE_INFO_1004,
400      *LPSHARE_INFO_1004;
401
402     typedef struct _SHARE_INFO_1006
403     {
404         DWORD shi1006_max_uses;
405     } SHARE_INFO_1006,
406      *PSHARE_INFO_1006,
407      *LPSHARE_INFO_1006;
408
409     typedef struct _SHARE_INFO_1005
410     {
411         DWORD shi1005_flags;
412     } SHARE_INFO_1005,
413      *PSHARE_INFO_1005,
414      *LPSHARE_INFO_1005;
415
416 //JMP: order differs in documentation
417     typedef [switch_type(unsigned long)] union _SHARE_INFO
418 // for Get & Set info
419     {
420         [case(0)]
421             LPSHARE_INFO_0 ShareInfo0;
422         [case(1)]
423             LPSHARE_INFO_1 ShareInfo1;
424         [case(2)]
425             LPSHARE_INFO_2 ShareInfo2;
426         [case(502)]
427             LPSHARE_INFO_502_I ShareInfo502;
428         [case(1004)]
429             LPSHARE_INFO_1004 ShareInfo1004;
430         [case(1006)]
431             LPSHARE_INFO_1006 ShareInfo1006;
432         [case(1501)]
433             LPSHARE_INFO_1501_I ShareInfo1501;
434         [default]
435            ;
436         [case(1005)]
437             LPSHARE_INFO_1005 ShareInfo1005;
438         [case(501)]
439             LPSHARE_INFO_501 ShareInfo501;
440         [case(503)]
441             LPSHARE_INFO_503_I ShareInfo503;
442     } SHARE_INFO,
443      *PSHARE_INFO,
444      *LPSHARE_INFO;
445
446     typedef struct _SERVER_INFO_100
447     {
448         DWORD sv100_platform_id;
449         [string] wchar_t * sv100_name;
450     } SERVER_INFO_100,
451      *PSERVER_INFO_100,
452      *LPSERVER_INFO_100;
453
454     typedef struct _SERVER_INFO_101
455     {
456         DWORD sv101_platform_id;
457         [string] wchar_t * sv101_name;
458         DWORD sv101_version_major;
459         DWORD sv101_version_minor;
460         DWORD sv101_type;
461         [string] wchar_t * sv101_comment;
462     } SERVER_INFO_101,
463      *PSERVER_INFO_101,
464      *LPSERVER_INFO_101;
465
466     typedef struct _SERVER_INFO_102
467     {
468          DWORD sv102_platform_id;
469          [string] wchar_t * sv102_name;
470          DWORD sv102_version_major;
471          DWORD sv102_version_minor;
472          DWORD sv102_type;
473          [string] wchar_t * sv102_comment;
474          DWORD sv102_users;
475          long sv102_disc;
476          int sv102_hidden;
477          DWORD sv102_announce;
478          DWORD sv102_anndelta;
479          DWORD sv102_licenses;
480          [string] wchar_t * sv102_userpath;
481     } SERVER_INFO_102,
482      *PSERVER_INFO_102,
483      *LPSERVER_INFO_102;
484
485     typedef struct _SERVER_INFO_103
486     {
487        DWORD sv103_platform_id;
488          [string] wchar_t* sv103_name;
489          DWORD sv103_version_major;
490          DWORD sv103_version_minor;
491          DWORD sv103_type;
492          [string] wchar_t* sv103_comment;
493          DWORD sv103_users;
494          LONG  sv103_disc;
495          BOOL  sv103_hidden;
496          DWORD sv103_announce;
497          DWORD sv103_anndelta;
498          DWORD sv103_licenses;
499          [string] wchar_t* sv103_userpath;
500          DWORD sv103_capabilities;
501     } SERVER_INFO_103,
502     *PSERVER_INFO_103,
503     *LPSERVER_INFO_103;
504
505     typedef struct _SERVER_INFO_502
506     {
507         DWORD sv502_sessopens;
508         DWORD sv502_sessvcs;
509         DWORD sv502_opensearch;
510         DWORD sv502_sizreqbuf;
511         DWORD sv502_initworkitems;
512         DWORD sv502_maxworkitems;
513         DWORD sv502_rawworkitems;
514         DWORD sv502_irpstacksize;
515         DWORD sv502_maxrawbuflen;
516         DWORD sv502_sessusers;
517         DWORD sv502_sessconns;
518         DWORD sv502_maxpagedmemoryusage;
519         DWORD sv502_maxnonpagedmemoryusage;
520         int sv502_enablesoftcompat;
521         int sv502_enableforcedlogoff;
522         int sv502_timesource;
523         int sv502_acceptdownlevelapis;
524         int sv502_lmannounce;
525     } SERVER_INFO_502,
526      *PSERVER_INFO_502,
527      *LPSERVER_INFO_502;
528
529     typedef struct _SERVER_INFO_503
530     {
531         DWORD sv503_sessopens;
532         DWORD sv503_sessvcs;
533         DWORD sv503_opensearch;
534         DWORD sv503_sizreqbuf;
535         DWORD sv503_initworkitems;
536         DWORD sv503_maxworkitems;
537         DWORD sv503_rawworkitems;
538         DWORD sv503_irpstacksize;
539         DWORD sv503_maxrawbuflen;
540         DWORD sv503_sessusers;
541         DWORD sv503_sessconns;
542         DWORD sv503_maxpagedmemoryusage;
543         DWORD sv503_maxnonpagedmemoryusage;
544         int sv503_enablesoftcompat;
545         int sv503_enableforcedlogoff;
546         int sv503_timesource;
547         int sv503_acceptdownlevelapis;
548         int sv503_lmannounce;
549         [string] wchar_t * sv503_domain;
550         DWORD sv503_maxcopyreadlen;
551         DWORD sv503_maxcopywritelen;
552         DWORD sv503_minkeepsearch;
553         DWORD sv503_maxkeepsearch;
554         DWORD sv503_minkeepcomplsearch;
555         DWORD sv503_maxkeepcomplsearch;
556         DWORD sv503_threadcountadd;
557         DWORD sv503_numblockthreads;
558         DWORD sv503_scavtimeout;
559         DWORD sv503_minrcvqueue;
560         DWORD sv503_minfreeworkitems;
561         DWORD sv503_xactmemsize;
562         DWORD sv503_threadpriority;
563         DWORD sv503_maxmpxct;
564         DWORD sv503_oplockbreakwait;
565         DWORD sv503_oplockbreakresponsewait;
566         int sv503_enableoplocks;
567         int sv503_enableoplockforceclose;
568         int sv503_enablefcbopens;
569         int sv503_enableraw;
570         int sv503_enablesharednetdrives;
571         DWORD sv503_minfreeconnections;
572         DWORD sv503_maxfreeconnections;
573     } SERVER_INFO_503,
574      *PSERVER_INFO_503,
575      *LPSERVER_INFO_503;
576
577     typedef struct _SERVER_INFO_599
578     {
579         DWORD sv599_sessopens;
580         DWORD sv599_sessvcs;
581         DWORD sv599_opensearch;
582         DWORD sv599_sizreqbuf;
583         DWORD sv599_initworkitems;
584         DWORD sv599_maxworkitems;
585         DWORD sv599_rawworkitems;
586         DWORD sv599_irpstacksize;
587         DWORD sv599_maxrawbuflen;
588         DWORD sv599_sessusers;
589         DWORD sv599_sessconns;
590         DWORD sv599_maxpagedmemoryusage;
591         DWORD sv599_maxnonpagedmemoryusage;
592         int sv599_enablesoftcompat;
593         int sv599_enableforcedlogoff;
594         int sv599_timesource;
595         int sv599_acceptdownlevelapis;
596         int sv599_lmannounce;
597         [string] wchar_t * sv599_domain;
598         DWORD sv599_maxcopyreadlen;
599         DWORD sv599_maxcopywritelen;
600         DWORD sv599_minkeepsearch;
601         DWORD sv599_maxkeepsearch;
602         DWORD sv599_minkeepcomplsearch;
603         DWORD sv599_maxkeepcomplsearch;
604         DWORD sv599_threadcountadd;
605         DWORD sv599_numblockthreads;
606         DWORD sv599_scavtimeout;
607         DWORD sv599_minrcvqueue;
608         DWORD sv599_minfreeworkitems;
609         DWORD sv599_xactmemsize;
610         DWORD sv599_threadpriority;
611         DWORD sv599_maxmpxct;
612         DWORD sv599_oplockbreakwait;
613         DWORD sv599_oplockbreakresponsewait;
614         int sv599_enableoplocks;
615         int sv599_enableoplockforceclose;
616         int sv599_enablefcbopens;
617         int sv599_enableraw;
618         int sv599_enablesharednetdrives;
619         DWORD sv599_minfreeconnections;
620         DWORD sv599_maxfreeconnections;
621         DWORD sv599_initsesstable;
622         DWORD sv599_initconntable;
623         DWORD sv599_initfiletable;
624         DWORD sv599_initsearchtable;
625         DWORD sv599_alertschedule;
626         DWORD sv599_errorthreshold;
627         DWORD sv599_networkerrorthreshold;
628         DWORD sv599_diskspacethreshold;
629         DWORD sv599_reserved;
630         DWORD sv599_maxlinkdelay;
631         DWORD sv599_minlinkthroughput;
632         DWORD sv599_linkinfovalidtime;
633         DWORD sv599_scavqosinfoupdatetime;
634         DWORD sv599_maxworkitemidletime;
635     } SERVER_INFO_599,
636      *PSERVER_INFO_599,
637      *LPSERVER_INFO_599;
638
639     typedef struct _SERVER_INFO_1005
640     {
641         [string] wchar_t * sv1005_comment;
642     } SERVER_INFO_1005,
643      *PSERVER_INFO_1005,
644      *LPSERVER_INFO_1005;
645
646     typedef struct _SERVER_INFO_1107
647     {
648         DWORD sv1107_users;
649     } SERVER_INFO_1107,
650      *PSERVER_INFO_1107,
651      *LPSERVER_INFO_1107;
652
653     typedef struct _SERVER_INFO_1010
654     {
655         long sv1010_disc;
656     } SERVER_INFO_1010,
657      *PSERVER_INFO_1010,
658      *LPSERVER_INFO_1010;
659
660     typedef struct _SERVER_INFO_1016
661     {
662         int sv1016_hidden;
663     } SERVER_INFO_1016,
664      *PSERVER_INFO_1016,
665      *LPSERVER_INFO_1016;
666
667     typedef struct _SERVER_INFO_1017
668     {
669         DWORD sv1017_announce;
670     } SERVER_INFO_1017,
671      *PSERVER_INFO_1017,
672      *LPSERVER_INFO_1017;
673
674     typedef struct _SERVER_INFO_1018
675     {
676         DWORD sv1018_anndelta;
677     } SERVER_INFO_1018,
678      *PSERVER_INFO_1018,
679      *LPSERVER_INFO_1018;
680
681     typedef struct _SERVER_INFO_1501
682     {
683         DWORD sv1501_sessopens;
684     } SERVER_INFO_1501,
685      *PSERVER_INFO_1501,
686      *LPSERVER_INFO_1501;
687
688     typedef struct _SERVER_INFO_1502
689     {
690         DWORD sv1502_sessvcs;
691     } SERVER_INFO_1502,
692      *PSERVER_INFO_1502,
693      *LPSERVER_INFO_1502;
694
695     typedef struct _SERVER_INFO_1503
696     {
697         DWORD sv1503_opensearch;
698     } SERVER_INFO_1503, *PSERVER_INFO_1503, *LPSERVER_INFO_1503;
699
700     typedef struct _SERVER_INFO_1506
701     {
702         DWORD sv1506_maxworkitems;
703     } SERVER_INFO_1506, *PSERVER_INFO_1506, *LPSERVER_INFO_1506;
704
705     typedef struct _SERVER_INFO_1510
706     {
707         DWORD sv1510_sessusers;
708     } SERVER_INFO_1510, *PSERVER_INFO_1510, *LPSERVER_INFO_1510;
709
710     typedef struct _SERVER_INFO_1511
711     {
712         DWORD sv1511_sessconns;
713     } SERVER_INFO_1511, *PSERVER_INFO_1511, *LPSERVER_INFO_1511;
714
715     typedef struct _SERVER_INFO_1512
716     {
717         DWORD sv1512_maxnonpagedmemoryusage;
718     } SERVER_INFO_1512, *PSERVER_INFO_1512, *LPSERVER_INFO_1512;
719
720     typedef struct _SERVER_INFO_1513
721     {
722         DWORD sv1513_maxpagedmemoryusage;
723     } SERVER_INFO_1513, *PSERVER_INFO_1513, *LPSERVER_INFO_1513;
724
725     typedef struct _SERVER_INFO_1514
726     {
727         int sv1514_enablesoftcompat;
728     } SERVER_INFO_1514, *PSERVER_INFO_1514, *LPSERVER_INFO_1514;
729
730     typedef struct _SERVER_INFO_1515
731     {
732         int sv1515_enableforcedlogoff;
733     } SERVER_INFO_1515, *PSERVER_INFO_1515, *LPSERVER_INFO_1515;
734
735     typedef struct _SERVER_INFO_1516
736     {
737         int sv1516_timesource;
738     } SERVER_INFO_1516, *PSERVER_INFO_1516, *LPSERVER_INFO_1516;
739
740     typedef struct _SERVER_INFO_1518
741     {
742         int sv1518_lmannounce;
743     } SERVER_INFO_1518, *PSERVER_INFO_1518, *LPSERVER_INFO_1518;
744
745     typedef struct _SERVER_INFO_1523
746     {
747         DWORD sv1523_maxkeepsearch;
748     } SERVER_INFO_1523, *PSERVER_INFO_1523, *LPSERVER_INFO_1523;
749
750     typedef struct _SERVER_INFO_1528
751     {
752         DWORD sv1528_scavtimeout;
753     } SERVER_INFO_1528, *PSERVER_INFO_1528, *LPSERVER_INFO_1528;
754
755     typedef struct _SERVER_INFO_1529
756     {
757         DWORD sv1529_minrcvqueue;
758     } SERVER_INFO_1529, *PSERVER_INFO_1529, *LPSERVER_INFO_1529;
759
760     typedef struct _SERVER_INFO_1530
761     {
762         DWORD sv1530_minfreeworkitems;
763     } SERVER_INFO_1530, *PSERVER_INFO_1530, *LPSERVER_INFO_1530;
764
765     typedef struct _SERVER_INFO_1533
766     {
767         DWORD sv1533_maxmpxct;
768     } SERVER_INFO_1533, *PSERVER_INFO_1533, *LPSERVER_INFO_1533;
769
770     typedef struct _SERVER_INFO_1534
771     {
772         DWORD sv1534_oplockbreakwait;
773     } SERVER_INFO_1534, *PSERVER_INFO_1534, *LPSERVER_INFO_1534;
774
775     typedef struct _SERVER_INFO_1535
776     {
777         DWORD sv1535_oplockbreakresponsewait;
778     } SERVER_INFO_1535, *PSERVER_INFO_1535, *LPSERVER_INFO_1535;
779
780     typedef struct _SERVER_INFO_1536
781     {
782         int sv1536_enableoplocks;
783     } SERVER_INFO_1536, *PSERVER_INFO_1536, *LPSERVER_INFO_1536;
784
785     typedef struct _SERVER_INFO_1538
786     {
787         int sv1538_enablefcbopens;
788     } SERVER_INFO_1538, *PSERVER_INFO_1538, *LPSERVER_INFO_1538;
789
790     typedef struct _SERVER_INFO_1539
791     {
792         int sv1539_enableraw;
793     } SERVER_INFO_1539, *PSERVER_INFO_1539, *LPSERVER_INFO_1539;
794
795     typedef struct _SERVER_INFO_1540
796     {
797         int sv1540_enablesharednetdrives;
798     } SERVER_INFO_1540, *PSERVER_INFO_1540, *LPSERVER_INFO_1540;
799
800     typedef struct _SERVER_INFO_1541
801     {
802         int sv1541_minfreeconnections;
803     } SERVER_INFO_1541, *PSERVER_INFO_1541, *LPSERVER_INFO_1541;
804
805     typedef struct _SERVER_INFO_1542
806     {
807         int sv1542_maxfreeconnections;
808     } SERVER_INFO_1542, *PSERVER_INFO_1542, *LPSERVER_INFO_1542;
809
810     typedef struct _SERVER_INFO_1543
811     {
812         DWORD sv1543_initsesstable;
813     } SERVER_INFO_1543, *PSERVER_INFO_1543, *LPSERVER_INFO_1543;
814
815     typedef struct _SERVER_INFO_1544
816     {
817         DWORD sv1544_initconntable;
818     } SERVER_INFO_1544, *PSERVER_INFO_1544, *LPSERVER_INFO_1544;
819
820     typedef struct _SERVER_INFO_1545
821     {
822         DWORD sv1545_initfiletable;
823     } SERVER_INFO_1545, *PSERVER_INFO_1545, *LPSERVER_INFO_1545;
824
825     typedef struct _SERVER_INFO_1546
826     {
827         DWORD sv1546_initsearchtable;
828     } SERVER_INFO_1546, *PSERVER_INFO_1546, *LPSERVER_INFO_1546;
829
830     typedef struct _SERVER_INFO_1547
831     {
832         DWORD sv1547_alertschedule;
833     } SERVER_INFO_1547, *PSERVER_INFO_1547, *LPSERVER_INFO_1547;
834
835     typedef struct _SERVER_INFO_1548
836     {
837         DWORD sv1548_errorthreshold;
838     } SERVER_INFO_1548, *PSERVER_INFO_1548, *LPSERVER_INFO_1548;
839
840     typedef struct _SERVER_INFO_1549
841     {
842         DWORD sv1549_networkerrorthreshold;
843     } SERVER_INFO_1549, *PSERVER_INFO_1549, *LPSERVER_INFO_1549;
844
845     typedef struct _SERVER_INFO_1550
846     {
847         DWORD sv1550_diskspacethreshold;
848     } SERVER_INFO_1550, *PSERVER_INFO_1550, *LPSERVER_INFO_1550;
849
850     typedef struct _SERVER_INFO_1552
851     {
852         DWORD sv1552_maxlinkdelay;
853     } SERVER_INFO_1552, *PSERVER_INFO_1552, *LPSERVER_INFO_1552;
854
855     typedef struct _SERVER_INFO_1553
856     {
857         DWORD sv1553_minlinkthroughput;
858     } SERVER_INFO_1553, *PSERVER_INFO_1553, *LPSERVER_INFO_1553;
859
860     typedef struct _SERVER_INFO_1554
861     {
862         DWORD sv1554_linkinfovalidtime;
863     } SERVER_INFO_1554, *PSERVER_INFO_1554, *LPSERVER_INFO_1554;
864
865     typedef struct _SERVER_INFO_1555
866     {
867         DWORD sv1555_scavqosinfoupdatetime;
868     } SERVER_INFO_1555, *PSERVER_INFO_1555, *LPSERVER_INFO_1555;
869
870     typedef struct _SERVER_INFO_1556
871     {
872         DWORD sv1556_maxworkitemidletime;
873     } SERVER_INFO_1556, *PSERVER_INFO_1556, *LPSERVER_INFO_1556;
874
875     typedef [switch_type(unsigned long)] union _SERVER_INFO
876     {
877         [case(100)]
878             LPSERVER_INFO_100 ServerInfo100;
879         [case(101)]
880             LPSERVER_INFO_101 ServerInfo101;
881         [case(102)]
882             LPSERVER_INFO_102 ServerInfo102;
883        [case(103)]
884            LPSERVER_INFO_103 ServerInfo103;
885         [case(502)]
886             LPSERVER_INFO_502 ServerInfo502;
887         [case(503)]
888             LPSERVER_INFO_503 ServerInfo503;
889         [case(599)]
890             LPSERVER_INFO_599 ServerInfo599;
891         [case(1005)]
892             LPSERVER_INFO_1005 ServerInfo1005;
893         [case(1107)]
894             LPSERVER_INFO_1107 ServerInfo1107;
895         [case(1010)]
896             LPSERVER_INFO_1010 ServerInfo1010;
897         [case(1016)]
898             LPSERVER_INFO_1016 ServerInfo1016;
899         [case(1017)]
900             LPSERVER_INFO_1017 ServerInfo1017;
901         [case(1018)]
902             LPSERVER_INFO_1018 ServerInfo1018;
903         [case(1501)]
904             LPSERVER_INFO_1501 ServerInfo1501;
905         [case(1502)]
906             LPSERVER_INFO_1502 ServerInfo1502;
907         [case(1503)]
908             LPSERVER_INFO_1503 ServerInfo1503;
909         [case(1506)]
910             LPSERVER_INFO_1506 ServerInfo1506;
911         [case(1510)]
912             LPSERVER_INFO_1510 ServerInfo1510;
913         [case(1511)]
914             LPSERVER_INFO_1511 ServerInfo1511;
915         [case(1512)]
916             LPSERVER_INFO_1512 ServerInfo1512;
917         [case(1513)]
918             LPSERVER_INFO_1513 ServerInfo1513;
919         [case(1514)]
920             LPSERVER_INFO_1514 ServerInfo1514;
921         [case(1515)]
922             LPSERVER_INFO_1515 ServerInfo1515;
923         [case(1516)]
924             LPSERVER_INFO_1516 ServerInfo1516;
925         [case(1518)]
926             LPSERVER_INFO_1518 ServerInfo1518;
927         [case(1523)]
928             LPSERVER_INFO_1523 ServerInfo1523;
929         [case(1528)]
930             LPSERVER_INFO_1528 ServerInfo1528;
931         [case(1529)]
932             LPSERVER_INFO_1529 ServerInfo1529;
933         [case(1530)]
934             LPSERVER_INFO_1530 ServerInfo1530;
935         [case(1533)]
936             LPSERVER_INFO_1533 ServerInfo1533;
937         [case(1534)]
938             LPSERVER_INFO_1534 ServerInfo1534;
939         [case(1535)]
940             LPSERVER_INFO_1535 ServerInfo1535;
941         [case(1536)]
942             LPSERVER_INFO_1536 ServerInfo1536;
943         [case(1538)]
944             LPSERVER_INFO_1538 ServerInfo1538;
945         [case(1539)]
946             LPSERVER_INFO_1539 ServerInfo1539;
947         [case(1540)]
948             LPSERVER_INFO_1540 ServerInfo1540;
949         [case(1541)]
950             LPSERVER_INFO_1541 ServerInfo1541;
951         [case(1542)]
952             LPSERVER_INFO_1542 ServerInfo1542;
953         [case(1543)]
954             LPSERVER_INFO_1543 ServerInfo1543;
955         [case(1544)]
956             LPSERVER_INFO_1544 ServerInfo1544;
957         [case(1545)]
958             LPSERVER_INFO_1545 ServerInfo1545;
959         [case(1546)]
960             LPSERVER_INFO_1546 ServerInfo1546;
961         [case(1547)]
962             LPSERVER_INFO_1547 ServerInfo1547;
963         [case(1548)]
964             LPSERVER_INFO_1548 ServerInfo1548;
965         [case(1549)]
966             LPSERVER_INFO_1549 ServerInfo1549;
967         [case(1550)]
968             LPSERVER_INFO_1550 ServerInfo1550;
969         [case(1552)]
970             LPSERVER_INFO_1552 ServerInfo1552;
971         [case(1553)]
972             LPSERVER_INFO_1553 ServerInfo1553;
973         [case(1554)]
974             LPSERVER_INFO_1554 ServerInfo1554;
975         [case(1555)]
976             LPSERVER_INFO_1555 ServerInfo1555;
977         [case(1556)]
978             LPSERVER_INFO_1556 ServerInfo1556;
979     } SERVER_INFO, *PSERVER_INFO, *LPSERVER_INFO;
980
981     typedef struct _DISK_INFO
982     {
983         [string] WCHAR Disk[3];
984     } DISK_INFO, *PDISK_INFO, *LPDISK_INFO;
985
986     typedef struct _DISK_ENUM_CONTAINER
987     {
988         DWORD EntriesRead;
989         [size_is(EntriesRead), length_is(EntriesRead)] LPDISK_INFO
990              Buffer;
991     } DISK_ENUM_CONTAINER;
992
993     typedef struct _SERVER_TRANSPORT_INFO_0
994     {
995         DWORD svti0_numberofvcs;
996         [string] wchar_t * svti0_transportname;
997         [size_is(svti0_transportaddresslength)] unsigned char
998              * svti0_transportaddress;
999         DWORD svti0_transportaddresslength;
1000         [string] wchar_t * svti0_networkaddress;
1001     } SERVER_TRANSPORT_INFO_0, *PSERVER_TRANSPORT_INFO_0,
1002       *LPSERVER_TRANSPORT_INFO_0;
1003
1004     typedef struct _SERVER_XPORT_INFO_0_CONTAINER
1005     {
1006         DWORD EntriesRead;
1007         [size_is(EntriesRead)] LPSERVER_TRANSPORT_INFO_0 Buffer;
1008     } SERVER_XPORT_INFO_0_CONTAINER, *PSERVER_XPORT_INFO_0_CONTAINER;
1009
1010     typedef struct _SERVER_TRANSPORT_INFO_1
1011     {
1012         DWORD svti1_numberofvcs;
1013         [string] wchar_t * svti1_transportname;
1014         [size_is(svti1_transportaddresslength)] unsigned char
1015              * svti1_transportaddress;
1016         DWORD svti1_transportaddresslength;
1017         [string] wchar_t * svti1_networkaddress;
1018         [string] wchar_t * svti1_domain;
1019     } SERVER_TRANSPORT_INFO_1, *PSERVER_TRANSPORT_INFO_1,
1020       *LPSERVER_TRANSPORT_INFO_1;
1021
1022     typedef struct _SERVER_XPORT_INFO_1_CONTAINER
1023     {
1024         DWORD EntriesRead;
1025         [size_is(EntriesRead)] LPSERVER_TRANSPORT_INFO_1 Buffer;
1026     } SERVER_XPORT_INFO_1_CONTAINER, *PSERVER_XPORT_INFO_1_CONTAINER;
1027
1028     typedef struct _SERVER_TRANSPORT_INFO_2
1029     {
1030         DWORD svti2_numberofvcs;
1031         [string] wchar_t * svti2_transportname;
1032         [size_is(svti2_transportaddresslength)] unsigned char
1033              * svti2_transportaddress;
1034         DWORD svti2_transportaddresslength;
1035         [string] wchar_t * svti2_networkaddress;
1036         [string] wchar_t * svti2_domain;
1037         unsigned long svti2_flags;
1038     } SERVER_TRANSPORT_INFO_2, *PSERVER_TRANSPORT_INFO_2,
1039       *LPSERVER_TRANSPORT_INFO_2;
1040
1041     typedef struct _SERVER_XPORT_INFO_2_CONTAINER
1042     {
1043         DWORD EntriesRead;
1044         [size_is(EntriesRead)] LPSERVER_TRANSPORT_INFO_2 Buffer;
1045     } SERVER_XPORT_INFO_2_CONTAINER, *PSERVER_XPORT_INFO_2_CONTAINER;
1046
1047     typedef struct _SERVER_TRANSPORT_INFO_3
1048     {
1049         DWORD svti3_numberofvcs;
1050         [string] wchar_t * svti3_transportname;
1051         [size_is(svti3_transportaddresslength)] unsigned char
1052              * svti3_transportaddress;
1053         DWORD svti3_transportaddresslength;
1054         [string] wchar_t * svti3_networkaddress;
1055         [string] wchar_t * svti3_domain;
1056         unsigned long svti3_flags;
1057         DWORD svti3_passwordlength;
1058         unsigned char svti3_password[ 256 ];
1059     } SERVER_TRANSPORT_INFO_3, *PSERVER_TRANSPORT_INFO_3,
1060       *LPSERVER_TRANSPORT_INFO_3;
1061
1062     typedef struct _SERVER_XPORT_INFO_3_CONTAINER
1063     {
1064         DWORD EntriesRead;
1065         [size_is(EntriesRead)] LPSERVER_TRANSPORT_INFO_3 Buffer;
1066     } SERVER_XPORT_INFO_3_CONTAINER, *PSERVER_XPORT_INFO_3_CONTAINER;
1067
1068     typedef [switch_type(unsigned long)] union _TRANSPORT_INFO
1069     {
1070         [case(0)]
1071             SERVER_TRANSPORT_INFO_0 Transport0;
1072         [case(1)]
1073             SERVER_TRANSPORT_INFO_1 Transport1;
1074         [case(2)]
1075             SERVER_TRANSPORT_INFO_2 Transport2;
1076         [case(3)]
1077             SERVER_TRANSPORT_INFO_3 Transport3;
1078     } TRANSPORT_INFO, *PTRANSPORT_INFO, *LPTRANSPORT_INFO;
1079
1080     typedef [switch_type(DWORD)] union _SERVER_XPORT_ENUM_UNION {
1081        [case(0)]
1082            PSERVER_XPORT_INFO_0_CONTAINER Level0;
1083        [case(1)]
1084            PSERVER_XPORT_INFO_1_CONTAINER Level1;
1085        [case(2)]
1086            PSERVER_XPORT_INFO_2_CONTAINER Level2;
1087        [case(3)]
1088            PSERVER_XPORT_INFO_3_CONTAINER Level3;
1089     } SERVER_XPORT_ENUM_UNION;
1090
1091     typedef struct _SERVER_XPORT_ENUM_STRUCT
1092     {
1093         DWORD Level;
1094         [switch_is(Level)] SERVER_XPORT_ENUM_UNION XportInfo;
1095
1096     } SERVER_XPORT_ENUM_STRUCT, *PSERVER_XPORT_ENUM_STRUCT,
1097       *LPSERVER_XPORT_ENUM_STRUCT;
1098
1099     typedef [context_handle] void *SHARE_DEL_HANDLE;
1100     typedef SHARE_DEL_HANDLE *PSHARE_DEL_HANDLE;
1101
1102     typedef struct _ADT_SECURITY_DESCRIPTOR
1103     {
1104         DWORD Length;
1105         [size_is(Length)] unsigned char * Buffer;
1106     } ADT_SECURITY_DESCRIPTOR, *PADT_SECURITY_DESCRIPTOR;
1107
1108     typedef struct _STAT_SERVER_0
1109     {
1110          DWORD sts0_start;
1111          DWORD sts0_fopens;
1112          DWORD sts0_devopens;
1113          DWORD sts0_jobsqueued;
1114          DWORD sts0_sopens;
1115          DWORD sts0_stimedout;
1116          DWORD sts0_serrorout;
1117          DWORD sts0_pwerrors;
1118          DWORD sts0_permerrors;
1119          DWORD sts0_syserrors;
1120          DWORD sts0_bytessent_low;
1121          DWORD sts0_bytessent_high;
1122          DWORD sts0_bytesrcvd_low;
1123          DWORD sts0_bytesrcvd_high;
1124          DWORD sts0_avresponse;
1125          DWORD sts0_reqbufneed;
1126          DWORD sts0_bigbufneed;
1127     } STAT_SERVER_0, *PSTAT_SERVER_0, *LPSTAT_SERVER_0;
1128
1129     typedef struct _TIME_OF_DAY_INFO
1130     {
1131         DWORD tod_elapsedt;
1132         DWORD tod_msecs;
1133         DWORD tod_hours;
1134         DWORD tod_mins;
1135         DWORD tod_secs;
1136         DWORD tod_hunds;
1137         long tod_timezone;
1138         DWORD tod_tinterval;
1139         DWORD tod_day;
1140         DWORD tod_month;
1141         DWORD tod_year;
1142         DWORD tod_weekday;
1143     } TIME_OF_DAY_INFO, *PTIME_OF_DAY_INFO, *LPTIME_OF_DAY_INFO;
1144
1145     typedef struct _NET_DFS_ENTRY_ID
1146     {
1147         GUID Uid;
1148         [string] WCHAR * Prefix;
1149     } NET_DFS_ENTRY_ID, *LPNET_DFS_ENTRY_ID;
1150
1151     typedef struct _NET_DFS_ENTRY_ID_CONTAINER
1152     {
1153         unsigned long Count;
1154         [size_is(Count)] LPNET_DFS_ENTRY_ID Buffer;
1155     } NET_DFS_ENTRY_ID_CONTAINER, *LPNET_DFS_ENTRY_ID_CONTAINER;
1156
1157     typedef struct _DFS_SITENAME_INFO
1158     {
1159         unsigned long SiteFlags;
1160         [string,unique] WCHAR * SiteName;
1161     } DFS_SITENAME_INFO, *PDFS_SITENAME_INFO, *LPDFS_SITENAME_INFO;
1162
1163     typedef struct _DFS_SITELIST_INFO
1164     {
1165         unsigned long cSites;
1166         [size_is(cSites)] DFS_SITENAME_INFO Site[];
1167     } DFS_SITELIST_INFO, *PDFS_SITELIST_INFO, *LPDFS_SITELIST_INFO;
1168
1169 typedef struct _SERVER_ALIAS_INFO_0 {
1170 LMSTR    srvai0_alias;
1171 LMSTR    srvai0_target;
1172 BOOLEAN  srvai0_default;
1173 ULONG    srvai0_reserved;
1174 }SERVER_ALIAS_INFO_0, *PSERVER_ALIAS_INFO_0, *LPSERVER_ALIAS_INFO_0;
1175
1176 typedef struct _SERVER_ALIAS_INFO_0_CONTAINER {
1177 DWORD  EntriesRead;
1178 [size_is(EntriesRead)] LPSERVER_ALIAS_INFO_0 Buffer;
1179 } SERVER_ALIAS_INFO_0_CONTAINER;
1180
1181 typedef struct _SERVER_ALIAS_ENUM_STRUCT {
1182 DWORD  Level;
1183 [switch_is(Level)] union SERVER_ALIAS_ENUM_UNION {
1184 [case(0)]
1185 SERVER_ALIAS_INFO_0_CONTAINER *Level0;
1186 } ServerAliasInfo;
1187 }SERVER_ALIAS_ENUM_STRUCT, *PSERVER_ALIAS_ENUM_STRUCT,
1188        *LPSERVER_ALIAS_ENUM_STRUCT;
1189
1190 typedef [switch_type(unsigned long)] union _SERVER_ALIAS_INFO
1191       { // for Get & Set Info
1192 [case(0)]
1193 LPSERVER_ALIAS_INFO_0 ServerAliasInfo0;
1194 } SERVER_ALIAS_INFO, *PSERVER_ALIAS_INFO, *LPSERVER_ALIAS_INFO;
1195
1196 // This method not used on the wire
1197     void Opnum0NotUsedOnWire(void);
1198
1199 // This method not used on the wire
1200     void Opnum1NotUsedOnWire(void);
1201
1202 // This method not used on the wire
1203     void Opnum2NotUsedOnWire(void);
1204
1205 // This method not used on the wire
1206     void Opnum3NotUsedOnWire(void);
1207
1208 // This method not used on the wire
1209     void Opnum4NotUsedOnWire(void);
1210
1211 // This method not used on the wire
1212     void Opnum5NotUsedOnWire(void);
1213
1214 // This method not used on the wire
1215     void Opnum6NotUsedOnWire(void);
1216
1217 // This method not used on the wire
1218     void Opnum7NotUsedOnWire(void);
1219
1220     NET_API_STATUS
1221     NetrConnectionEnum (
1222         [in,string,unique] SRVSVC_HANDLE ServerName,
1223         [in,string,unique] WCHAR * Qualifier,
1224         [in,out] LPCONNECT_ENUM_STRUCT InfoStruct,
1225         [in] DWORD PreferedMaximumLength,
1226         [out] DWORD * TotalEntries,
1227         [in,out,unique] DWORD * ResumeHandle
1228     );
1229
1230     NET_API_STATUS
1231     NetrFileEnum (
1232         [in,string,unique] SRVSVC_HANDLE ServerName,
1233         [in,string,unique] WCHAR * BasePath,
1234         [in,string,unique] WCHAR * UserName,
1235         [in,out] PFILE_ENUM_STRUCT InfoStruct,
1236         [in] DWORD PreferedMaximumLength,
1237         [out] DWORD * TotalEntries,
1238         [in,out,unique] DWORD * ResumeHandle
1239     );
1240
1241     NET_API_STATUS
1242     NetrFileGetInfo (
1243         [in,string,unique] SRVSVC_HANDLE ServerName,
1244         [in] DWORD FileId,
1245         [in] DWORD Level,
1246         [out, switch_is(Level)] LPFILE_INFO InfoStruct
1247     );
1248
1249     NET_API_STATUS
1250     NetrFileClose (
1251         [in,string,unique] SRVSVC_HANDLE ServerName,
1252         [in] DWORD FileId
1253     );
1254
1255     NET_API_STATUS
1256     NetrSessionEnum (
1257         [in,string,unique] SRVSVC_HANDLE ServerName,
1258         [in,string,unique] WCHAR * ClientName,
1259         [in,string,unique] WCHAR * UserName,
1260         [in,out] PSESSION_ENUM_STRUCT InfoStruct,
1261         [in] DWORD PreferedMaximumLength,
1262         [out] DWORD * TotalEntries,
1263         [in,out,unique] DWORD * ResumeHandle
1264     );
1265
1266     NET_API_STATUS
1267     NetrSessionDel (
1268         [in,string,unique] SRVSVC_HANDLE ServerName,
1269         [in,string,unique] WCHAR * ClientName,
1270         [in,string,unique] WCHAR * UserName
1271     );
1272
1273     NET_API_STATUS
1274     NetrShareAdd (
1275         [in,string,unique] SRVSVC_HANDLE ServerName,
1276         [in] DWORD Level,
1277         [in, switch_is(Level)] LPSHARE_INFO InfoStruct,
1278         [in,out,unique] DWORD * ParmErr
1279     );
1280
1281     NET_API_STATUS
1282     NetrShareEnum (
1283         [in,string,unique] SRVSVC_HANDLE ServerName,
1284         [in,out] LPSHARE_ENUM_STRUCT InfoStruct,
1285         [in] DWORD PreferedMaximumLength,
1286         [out] DWORD * TotalEntries,
1287         [in,out,unique] DWORD * ResumeHandle
1288     );
1289
1290     NET_API_STATUS
1291     NetrShareGetInfo (
1292         [in,string,unique] SRVSVC_HANDLE ServerName,
1293         [in,string] WCHAR * NetName,
1294         [in] DWORD Level,
1295         [out, switch_is(Level)] LPSHARE_INFO InfoStruct
1296     );
1297
1298     NET_API_STATUS
1299     NetrShareSetInfo (
1300         [in,string,unique] SRVSVC_HANDLE ServerName,
1301         [in,string] WCHAR * NetName,
1302         [in] DWORD Level,
1303         [in, switch_is(Level)] LPSHARE_INFO ShareInfo,
1304         [in,out,unique] DWORD * ParmErr
1305     );
1306
1307     NET_API_STATUS
1308     NetrShareDel (
1309         [in,string,unique] SRVSVC_HANDLE ServerName,
1310         [in,string] WCHAR * NetName,
1311         [in] DWORD Reserved
1312     );
1313
1314     NET_API_STATUS
1315     NetrShareDelSticky (
1316         [in,string,unique] SRVSVC_HANDLE ServerName,
1317         [in,string] WCHAR * NetName,
1318         [in] DWORD Reserved
1319     );
1320
1321     NET_API_STATUS
1322     NetrShareCheck (
1323         [in,string,unique] SRVSVC_HANDLE ServerName,
1324         [in,string] WCHAR * Device,
1325         [out] DWORD * Type
1326     );
1327
1328     NET_API_STATUS
1329     NetrServerGetInfo (
1330         [in,string,unique] SRVSVC_HANDLE ServerName,
1331         [in] DWORD Level,
1332         [out, switch_is(Level)] LPSERVER_INFO InfoStruct
1333     );
1334
1335     NET_API_STATUS
1336     NetrServerSetInfo (
1337         [in,string,unique] SRVSVC_HANDLE ServerName,
1338         [in] DWORD Level,
1339         [in, switch_is(Level)] LPSERVER_INFO ServerInfo,
1340         [in,out,unique] DWORD * ParmErr
1341     );
1342
1343     NET_API_STATUS
1344     NetrServerDiskEnum (
1345         [in,string,unique] SRVSVC_HANDLE ServerName,
1346         [in] DWORD Level,
1347         [in,out] DISK_ENUM_CONTAINER *DiskInfoStruct,
1348         [in] DWORD PreferedMaximumLength,
1349         [out] DWORD * TotalEntries,
1350         [in,out,unique] DWORD * ResumeHandle
1351     );
1352
1353     NET_API_STATUS
1354     NetrServerStatisticsGet (
1355         [in,string,unique] SRVSVC_HANDLE ServerName,
1356         [in,string,unique] WCHAR * Service,
1357         [in] DWORD Level,
1358         [in] DWORD Options,
1359         [out] LPSTAT_SERVER_0 *InfoStruct
1360     );
1361
1362     NET_API_STATUS
1363     NetrServerTransportAdd (
1364         [in,string,unique] SRVSVC_HANDLE ServerName,
1365         [in] DWORD Level,
1366         [in] LPSERVER_TRANSPORT_INFO_0 Buffer
1367     );
1368
1369     NET_API_STATUS
1370     NetrServerTransportEnum (
1371         [in,string,unique] SRVSVC_HANDLE ServerName,
1372         [in,out] LPSERVER_XPORT_ENUM_STRUCT InfoStruct,
1373         [in] DWORD PreferedMaximumLength,
1374         [out] DWORD * TotalEntries,
1375         [in,out,unique] DWORD * ResumeHandle
1376     );
1377
1378     NET_API_STATUS
1379     NetrServerTransportDel (
1380         [in,string,unique] SRVSVC_HANDLE ServerName,
1381         [in] DWORD Level,
1382         [in] LPSERVER_TRANSPORT_INFO_0 Buffer
1383     );
1384
1385     NET_API_STATUS
1386     NetrRemoteTOD (
1387         [in,string,unique] SRVSVC_HANDLE ServerName,
1388         [out] LPTIME_OF_DAY_INFO *BufferPtr
1389     );
1390
1391 // This method not used on the wire
1392     void Opnum29NotUsedOnWire(void);
1393
1394     NET_API_STATUS
1395     NetprPathType(
1396         [in,string,unique] SRVSVC_HANDLE ServerName,
1397         [in,string] WCHAR * PathName,
1398         [out] DWORD * PathType,
1399         [in] DWORD Flags
1400     );
1401
1402     NET_API_STATUS
1403     NetprPathCanonicalize(
1404         [in,string,unique] SRVSVC_HANDLE ServerName,
1405         [in,string] WCHAR * PathName,
1406         [out,size_is(OutbufLen)] unsigned char * Outbuf,
1407         [in,range(0, 64000)] DWORD OutbufLen,
1408         [in,string] WCHAR * Prefix,
1409         [in,out] DWORD * PathType,
1410         [in] DWORD Flags
1411     );
1412
1413     long
1414     NetprPathCompare(
1415         [in,string,unique] SRVSVC_HANDLE ServerName,
1416         [in,string] WCHAR * PathName1,
1417         [in,string] WCHAR * PathName2,
1418         [in] DWORD PathType,
1419         [in] DWORD Flags
1420     );
1421
1422     NET_API_STATUS
1423     NetprNameValidate(
1424         [in,string,unique] SRVSVC_HANDLE ServerName,
1425         [in,string] WCHAR * Name,
1426         [in] DWORD NameType,
1427         [in] DWORD Flags
1428     );
1429
1430     NET_API_STATUS
1431     NetprNameCanonicalize(
1432         [in,string,unique] SRVSVC_HANDLE ServerName,
1433         [in,string] WCHAR * Name,
1434         [out, size_is(OutbufLen)] WCHAR * Outbuf,
1435         [in,range(0, 64000)] DWORD OutbufLen,
1436         [in] DWORD NameType,
1437         [in] DWORD Flags
1438     );
1439
1440     long
1441     NetprNameCompare(
1442         [in,string,unique] SRVSVC_HANDLE ServerName,
1443         [in,string] WCHAR * Name1,
1444         [in,string] WCHAR * Name2,
1445         [in] DWORD NameType,
1446         [in] DWORD Flags
1447     );
1448
1449     NET_API_STATUS
1450     NetrShareEnumSticky (
1451         [in,string,unique] SRVSVC_HANDLE ServerName,
1452         [in,out] LPSHARE_ENUM_STRUCT InfoStruct,
1453         [in] DWORD PreferedMaximumLength,
1454         [out] DWORD * TotalEntries,
1455         [in,out,unique] DWORD * ResumeHandle
1456     );
1457
1458     NET_API_STATUS
1459     NetrShareDelStart (
1460         [in,string,unique] SRVSVC_HANDLE ServerName,
1461         [in,string] WCHAR * NetName,
1462         [in] DWORD Reserved,
1463         [out] PSHARE_DEL_HANDLE ContextHandle
1464     );
1465
1466     NET_API_STATUS
1467     NetrShareDelCommit (
1468         [in, out] PSHARE_DEL_HANDLE ContextHandle
1469     );
1470
1471     DWORD
1472     NetrpGetFileSecurity (
1473         [in,string,unique] SRVSVC_HANDLE ServerName,
1474         [in,string,unique] WCHAR * ShareName,
1475         [in,string] WCHAR * lpFileName,
1476         [in] SECURITY_INFORMATION RequestedInformation,
1477         [out] PADT_SECURITY_DESCRIPTOR *SecurityDescriptor
1478     );
1479
1480     DWORD
1481     NetrpSetFileSecurity (
1482         [in,string,unique] SRVSVC_HANDLE ServerName,
1483         [in,string,unique] WCHAR * ShareName,
1484         [in,string] WCHAR * lpFileName,
1485         [in] SECURITY_INFORMATION SecurityInformation,
1486         [in] PADT_SECURITY_DESCRIPTOR SecurityDescriptor
1487     );
1488
1489     NET_API_STATUS
1490     NetrServerTransportAddEx (
1491         [in,string,unique] SRVSVC_HANDLE ServerName,
1492         [in] DWORD Level,
1493         [in, switch_is(Level)] LPTRANSPORT_INFO Buffer
1494     );
1495
1496 // This method not used on the wire
1497     void Opnum42NotUsedOnWire(void);
1498
1499     NET_API_STATUS
1500     NetrDfsGetVersion(
1501         [in,string,unique] SRVSVC_HANDLE ServerName,
1502         [out] DWORD * Version
1503     );
1504
1505     NET_API_STATUS
1506     NetrDfsCreateLocalPartition (
1507         [in,string,unique] SRVSVC_HANDLE ServerName,
1508         [in,string] WCHAR * ShareName,
1509         [in] GUID * EntryUid,
1510         [in,string] WCHAR * EntryPrefix,
1511         [in,string] WCHAR * ShortName,
1512         [in] LPNET_DFS_ENTRY_ID_CONTAINER RelationInfo,
1513         [in] int Force
1514     );
1515
1516     NET_API_STATUS
1517     NetrDfsDeleteLocalPartition (
1518         [in,string,unique] SRVSVC_HANDLE ServerName,
1519         [in] GUID * Uid,
1520         [in,string] WCHAR * Prefix
1521     );
1522
1523     NET_API_STATUS
1524     NetrDfsSetLocalVolumeState (
1525         [in,string,unique] SRVSVC_HANDLE ServerName,
1526         [in] GUID * Uid,
1527         [in,string] WCHAR * Prefix,
1528         [in] unsigned long State
1529     );
1530
1531 // This method not used on the wire
1532     void Opnum47NotUsedOnWire(void);
1533
1534     NET_API_STATUS
1535     NetrDfsCreateExitPoint (
1536         [in,string,unique] SRVSVC_HANDLE ServerName,
1537         [in] GUID * Uid,
1538         [in,string] WCHAR * Prefix,
1539         [in] unsigned long Type,
1540         [in, range(0,32) ] DWORD ShortPrefixLen,
1541         [out,string,size_is(ShortPrefixLen)] WCHAR * ShortPrefix
1542     );
1543
1544     NET_API_STATUS
1545     NetrDfsDeleteExitPoint (
1546         [in,string,unique] SRVSVC_HANDLE ServerName,
1547         [in] GUID * Uid,
1548         [in,string] WCHAR * Prefix,
1549         [in] unsigned long Type
1550     );
1551
1552     NET_API_STATUS
1553     NetrDfsModifyPrefix (
1554         [in,string,unique] SRVSVC_HANDLE ServerName,
1555         [in] GUID * Uid,
1556         [in,string] WCHAR * Prefix
1557     );
1558
1559     NET_API_STATUS
1560     NetrDfsFixLocalVolume (
1561         [in,string,unique] SRVSVC_HANDLE ServerName,
1562         [in,string] WCHAR * VolumeName,
1563         [in] unsigned long EntryType,
1564         [in] unsigned long ServiceType,
1565         [in,string] WCHAR * StgId,
1566         [in] GUID * EntryUid,
1567         [in,string] WCHAR * EntryPrefix,
1568         [in] LPNET_DFS_ENTRY_ID_CONTAINER RelationInfo,
1569         [in] unsigned long CreateDisposition
1570     );
1571
1572     NET_API_STATUS
1573     NetrDfsManagerReportSiteInfo (
1574         [in,string,unique] SRVSVC_HANDLE ServerName,
1575         [in,out,unique] LPDFS_SITELIST_INFO *ppSiteInfo
1576     );
1577
1578     NET_API_STATUS
1579     NetrServerTransportDelEx (
1580         [in,string,unique] SRVSVC_HANDLE ServerName,
1581         [in] DWORD Level,
1582         [in, switch_is(Level)] LPTRANSPORT_INFO Buffer
1583     );
1584
1585 NET_API_STATUS
1586 NetrServerAliasAdd (
1587     [in,string,unique] SRVSVC_HANDLE        ServerName,
1588     [in]               DWORD                Level,
1589     [in, switch_is(Level)] LPSERVER_ALIAS_INFO     InfoStruct
1590     );
1591
1592 NET_API_STATUS
1593 NetrServerAliasEnum (
1594     [in,string,unique] SRVSVC_HANDLE        ServerName,
1595     [in,out]           LPSERVER_ALIAS_ENUM_STRUCT  InfoStruct,
1596     [in]               DWORD                PreferedMaximumLength,
1597     [out]              LPDWORD              TotalEntries,
1598     [in,out,unique]    LPDWORD              ResumeHandle
1599     );
1600
1601 NET_API_STATUS
1602 NetrServerAliasDel (
1603     [in,string,unique] SRVSVC_HANDLE        ServerName,
1604     [in]               DWORD                Level,
1605     [in, switch_is(Level)] LPSERVER_ALIAS_INFO     InfoStruct
1606     );
1607
1608     NET_API_STATUS
1609     NetrShareDelEx (
1610         [in,string,unique] SRVSVC_HANDLE ServerName,
1611         [in] DWORD Level,
1612         [in,switch_is(Level)] LPSHARE_INFO ShareInfo
1613     );
1614 }