Merge branch 'master' of ssh://git.samba.org/data/git/samba
[amitay/samba.git] / source3 / librpc / idl / libnetapi.idl
1 /*
2   libnetapi interface definition
3 */
4
5 cpp_quote("#define LIBNETAPI_LOCAL_SERVER(x) (!x || is_myname_or_ipaddr(x))")
6 cpp_quote("#ifndef MAXSUBAUTHS")
7 cpp_quote("#define MAXSUBAUTHS 15 /* max sub authorities in a SID */")
8 cpp_quote("#endif")
9
10 [
11         pointer_default(unique)
12 ]
13 interface libnetapi
14 {
15         const int ERROR_MORE_DATA = 234L;
16
17         [public] typedef [v1_enum] enum {
18                 NERR_Success=0
19         } NET_API_STATUS;
20
21         [public] typedef struct {
22                 uint8 sid_rev_num;
23                 uint8 num_auths;
24                 uint8 id_auth[6];
25                 uint32 sub_auths[MAXSUBAUTHS];
26         } domsid;
27
28         /*******************************************/
29         /* NetJoinDomain                           */
30         /*******************************************/
31
32         typedef [public,bitmap32bit] bitmap {
33                 NETSETUP_JOIN_DOMAIN                    = 0x00000001,
34                 NETSETUP_ACCT_CREATE                    = 0x00000002,
35                 NETSETUP_ACCT_DELETE                    = 0x00000004,
36                 NETSETUP_WIN9X_UPGRADE                  = 0x00000010,
37                 NETSETUP_DOMAIN_JOIN_IF_JOINED          = 0x00000020,
38                 NETSETUP_JOIN_UNSECURE                  = 0x00000040,
39                 NETSETUP_MACHINE_PWD_PASSED             = 0x00000080,
40                 NETSETUP_DEFER_SPN_SET                  = 0x00000100,
41                 NETSETUP_JOIN_DC_ACCOUNT                = 0x00000200,
42                 NETSETUP_JOIN_WITH_NEW_NAME             = 0x00000400,
43                 NETSETUP_INSTALL_INVOCATION             = 0x00040000,
44                 NETSETUP_IGNORE_UNSUPPORTED_FLAGS       = 0x10000000
45         } NetJoinFlags;
46
47         [nopush,nopull] NET_API_STATUS NetJoinDomain(
48                 [in,unique] string *server,
49                 [in,ref] string *domain,
50                 [in,unique] string *account_ou,
51                 [in,unique] string *account,
52                 [in,unique] string *password,
53                 [in] NetJoinFlags join_flags
54                 );
55
56         /*******************************************/
57         /* NetUnjoinDomain                         */
58         /*******************************************/
59
60         [nopush,nopull] NET_API_STATUS NetUnjoinDomain(
61                 [in,unique] string *server_name,
62                 [in,unique] string *account,
63                 [in,unique] string *password,
64                 [in] NetJoinFlags unjoin_flags
65                 );
66
67         /*******************************************/
68         /* NetGetJoinInformation                   */
69         /*******************************************/
70
71         typedef enum {
72                 NetSetupUnknownStatus = 0,
73                 NetSetupUnjoined = 1,
74                 NetSetupWorkgroupName = 2,
75                 NetSetupDomainName = 3
76         } NETSETUP_JOIN_STATUS;
77
78         [nopush,nopull] NET_API_STATUS NetGetJoinInformation(
79                 [in,unique] string *server_name,
80                 [out] string **name_buffer,
81                 [out] uint16 *name_type
82                 );
83
84         /*******************************************/
85         /* NetGetJoinableOUs                       */
86         /*******************************************/
87
88         [nopush,nopull] NET_API_STATUS NetGetJoinableOUs(
89                 [in,unique] string *server_name,
90                 [in,ref] string *domain,
91                 [in,unique] string *account,
92                 [in,unique] string *password,
93                 [out] uint32 *ou_count,
94                 [out] string ***ous
95                 );
96
97         /*******************************************/
98         /* NetRenameMachineInDomain                */
99         /*******************************************/
100
101         [nopush,nopull] NET_API_STATUS NetRenameMachineInDomain(
102                 [in] string server_name,
103                 [in] string new_machine_name,
104                 [in] string account,
105                 [in] string password,
106                 [in] uint32 rename_options
107                 );
108
109         /*******************************************/
110         /* NetServerGetInfo                        */
111         /*******************************************/
112
113         [public] typedef struct {
114                 uint32 sv100_platform_id;
115                 string sv100_name;
116         } SERVER_INFO_100;
117
118         [public] typedef struct {
119                 uint32 sv101_platform_id;
120                 string sv101_name;
121                 uint32 sv101_version_major;
122                 uint32 sv101_version_minor;
123                 uint32 sv101_type;
124                 string sv101_comment;
125         } SERVER_INFO_101;
126
127         [public] typedef struct {
128                 uint32 sv102_platform_id;
129                 string sv102_name;
130                 uint32 sv102_version_major;
131                 uint32 sv102_version_minor;
132                 uint32 sv102_type;
133                 string sv102_comment;
134                 uint32 sv102_users;
135                 uint32 sv102_disc;
136                 boolean8 sv102_hidden;
137                 uint32 sv102_announce;
138                 uint32 sv102_anndelta;
139                 uint32 sv102_licenses;
140                 string sv102_userpath;
141         } SERVER_INFO_102;
142
143         [public] typedef struct {
144                 uint32 sv402_ulist_mtime;
145                 uint32 sv402_glist_mtime;
146                 uint32 sv402_alist_mtime;
147                 string sv402_alerts;
148                 uint32 sv402_security;
149                 uint32 sv402_numadmin;
150                 uint32 sv402_lanmask;
151                 string sv402_guestacct;
152                 uint32 sv402_chdevs;
153                 uint32 sv402_chdevq;
154                 uint32 sv402_chdevjobs;
155                 uint32 sv402_connections;
156                 uint32 sv402_shares;
157                 uint32 sv402_openfiles;
158                 uint32 sv402_sessopens;
159                 uint32 sv402_sessvcs;
160                 uint32 sv402_sessreqs;
161                 uint32 sv402_opensearch;
162                 uint32 sv402_activelocks;
163                 uint32 sv402_numreqbuf;
164                 uint32 sv402_sizreqbuf;
165                 uint32 sv402_numbigbuf;
166                 uint32 sv402_numfiletasks;
167                 uint32 sv402_alertsched;
168                 uint32 sv402_erroralert;
169                 uint32 sv402_logonalert;
170                 uint32 sv402_accessalert;
171                 uint32 sv402_diskalert;
172                 uint32 sv402_netioalert;
173                 uint32 sv402_maxauditsz;
174                 string sv402_srvheuristics;
175         } SERVER_INFO_402;
176
177         [public] typedef struct {
178                 uint32 sv403_ulist_mtime;
179                 uint32 sv403_glist_mtime;
180                 uint32 sv403_alist_mtime;
181                 string sv403_alerts;
182                 uint32 sv403_security;
183                 uint32 sv403_numadmin;
184                 uint32 sv403_lanmask;
185                 string sv403_guestacct;
186                 uint32 sv403_chdevs;
187                 uint32 sv403_chdevq;
188                 uint32 sv403_chdevjobs;
189                 uint32 sv403_connections;
190                 uint32 sv403_shares;
191                 uint32 sv403_openfiles;
192                 uint32 sv403_sessopens;
193                 uint32 sv403_sessvcs;
194                 uint32 sv403_sessreqs;
195                 uint32 sv403_opensearch;
196                 uint32 sv403_activelocks;
197                 uint32 sv403_numreqbuf;
198                 uint32 sv403_sizreqbuf;
199                 uint32 sv403_numbigbuf;
200                 uint32 sv403_numfiletasks;
201                 uint32 sv403_alertsched;
202                 uint32 sv403_erroralert;
203                 uint32 sv403_logonalert;
204                 uint32 sv403_accessalert;
205                 uint32 sv403_diskalert;
206                 uint32 sv403_netioalert;
207                 uint32 sv403_maxauditsz;
208                 string sv403_srvheuristics;
209                 uint32 sv403_auditedevents;
210                 uint32 sv403_autoprofile;
211                 string sv403_autopath;
212         } SERVER_INFO_403;
213
214         [public] typedef struct {
215                 uint32 sv502_sessopens;
216                 uint32 sv502_sessvcs;
217                 uint32 sv502_opensearch;
218                 uint32 sv502_sizreqbuf;
219                 uint32 sv502_initworkitems;
220                 uint32 sv502_maxworkitems;
221                 uint32 sv502_rawworkitems;
222                 uint32 sv502_irpstacksize;
223                 uint32 sv502_maxrawbuflen;
224                 uint32 sv502_sessusers;
225                 uint32 sv502_sessconns;
226                 uint32 sv502_maxpagedmemoryusage;
227                 uint32 sv502_maxnonpagedmemoryusage;
228                 boolean8 sv502_enablesoftcompat;
229                 boolean8 sv502_enableforcedlogoff;
230                 boolean8 sv502_timesource;
231                 boolean8 sv502_acceptdownlevelapis;
232                 boolean8 sv502_lmannounce;
233         } SERVER_INFO_502;
234
235         [public] typedef struct {
236                 uint32 sv503_sessopens;
237                 uint32 sv503_sessvcs;
238                 uint32 sv503_opensearch;
239                 uint32 sv503_sizreqbuf;
240                 uint32 sv503_initworkitems;
241                 uint32 sv503_maxworkitems;
242                 uint32 sv503_rawworkitems;
243                 uint32 sv503_irpstacksize;
244                 uint32 sv503_maxrawbuflen;
245                 uint32 sv503_sessusers;
246                 uint32 sv503_sessconns;
247                 uint32 sv503_maxpagedmemoryusage;
248                 uint32 sv503_maxnonpagedmemoryusage;
249                 boolean8 sv503_enablesoftcompat;
250                 boolean8 sv503_enableforcedlogoff;
251                 boolean8 sv503_timesource;
252                 boolean8 sv503_acceptdownlevelapis;
253                 boolean8 sv503_lmannounce;
254                 string sv503_domain;
255                 uint32 sv503_maxcopyreadlen;
256                 uint32 sv503_maxcopywritelen;
257                 uint32 sv503_minkeepsearch;
258                 uint32 sv503_maxkeepsearch;
259                 uint32 sv503_minkeepcomplsearch;
260                 uint32 sv503_maxkeepcomplsearch;
261                 uint32 sv503_threadcountadd;
262                 uint32 sv503_numblockthreads;
263                 uint32 sv503_scavtimeout;
264                 uint32 sv503_minrcvqueue;
265                 uint32 sv503_minfreeworkitems;
266                 uint32 sv503_xactmemsize;
267                 uint32 sv503_threadpriority;
268                 uint32 sv503_maxmpxct;
269                 uint32 sv503_oplockbreakwait;
270                 uint32 sv503_oplockbreakresponsewait;
271                 boolean8 sv503_enableoplocks;
272                 boolean8 sv503_enableoplockforceclose;
273                 boolean8 sv503_enablefcbopens;
274                 boolean8 sv503_enableraw;
275                 boolean8 sv503_enablesharednetdrives;
276                 uint32 sv503_minfreeconnections;
277                 uint32 sv503_maxfreeconnections;
278         } SERVER_INFO_503;
279
280         [public] typedef struct {
281                 uint32 sv599_sessopens;
282                 uint32 sv599_sessvcs;
283                 uint32 sv599_opensearch;
284                 uint32 sv599_sizreqbuf;
285                 uint32 sv599_initworkitems;
286                 uint32 sv599_maxworkitems;
287                 uint32 sv599_rawworkitems;
288                 uint32 sv599_irpstacksize;
289                 uint32 sv599_maxrawbuflen;
290                 uint32 sv599_sessusers;
291                 uint32 sv599_sessconns;
292                 uint32 sv599_maxpagedmemoryusage;
293                 uint32 sv599_maxnonpagedmemoryusage;
294                 boolean8 sv599_enablesoftcompat;
295                 boolean8 sv599_enableforcedlogoff;
296                 boolean8 sv599_timesource;
297                 boolean8 sv599_acceptdownlevelapis;
298                 boolean8 sv599_lmannounce;
299                 string sv599_domain;
300                 uint32 sv599_maxcopyreadlen;
301                 uint32 sv599_maxcopywritelen;
302                 uint32 sv599_minkeepsearch;
303                 uint32 sv599_maxkeepsearch;
304                 uint32 sv599_minkeepcomplsearch;
305                 uint32 sv599_maxkeepcomplsearch;
306                 uint32 sv599_threadcountadd;
307                 uint32 sv599_numblockthreads;
308                 uint32 sv599_scavtimeout;
309                 uint32 sv599_minrcvqueue;
310                 uint32 sv599_minfreeworkitems;
311                 uint32 sv599_xactmemsize;
312                 uint32 sv599_threadpriority;
313                 uint32 sv599_maxmpxct;
314                 uint32 sv599_oplockbreakwait;
315                 uint32 sv599_oplockbreakresponsewait;
316                 boolean8 sv599_enableoplocks;
317                 boolean8 sv599_enableoplockforceclose;
318                 boolean8 sv599_enablefcbopens;
319                 boolean8 sv599_enableraw;
320                 boolean8 sv599_enablesharednetdrives;
321                 uint32 sv599_minfreeconnections;
322                 uint32 sv599_maxfreeconnections;
323                 uint32 sv599_initsesstable;
324                 uint32 sv599_initconntable;
325                 uint32 sv599_initfiletable;
326                 uint32 sv599_initsearchtable;
327                 uint32 sv599_alertschedule;
328                 uint32 sv599_errorthreshold;
329                 uint32 sv599_networkerrorthreshold;
330                 uint32 sv599_diskspacethreshold;
331                 uint32 sv599_reserved;
332                 uint32 sv599_maxlinkdelay;
333                 uint32 sv599_minlinkthroughput;
334                 uint32 sv599_linkinfovalidtime;
335                 uint32 sv599_scavqosinfoupdatetime;
336                 uint32 sv599_maxworkitemidletime;
337         } SERVER_INFO_599;
338
339         [public] typedef struct {
340                 uint32 sv598_maxrawworkitems;
341                 uint32 sv598_maxthreadsperqueue;
342                 uint32 sv598_producttype;
343                 uint32 sv598_serversize;
344                 uint32 sv598_connectionlessautodisc;
345                 uint32 sv598_sharingviolationretries;
346                 uint32 sv598_sharingviolationdelay;
347                 uint32 sv598_maxglobalopensearch;
348                 uint32 sv598_removeduplicatesearches;
349                 uint32 sv598_lockviolationoffset;
350                 uint32 sv598_lockviolationdelay;
351                 uint32 sv598_mdlreadswitchover;
352                 uint32 sv598_cachedopenlimit;
353                 uint32 sv598_otherqueueaffinity;
354                 boolean8  sv598_restrictnullsessaccess;
355                 boolean8  sv598_enablewfw311directipx;
356                 uint32 sv598_queuesamplesecs;
357                 uint32 sv598_balancecount;
358                 uint32 sv598_preferredaffinity;
359                 uint32 sv598_maxfreerfcbs;
360                 uint32 sv598_maxfreemfcbs;
361                 uint32 sv598_maxfreelfcbs;
362                 uint32 sv598_maxfreepagedpoolchunks;
363                 uint32 sv598_minpagedpoolchunksize;
364                 uint32 sv598_maxpagedpoolchunksize;
365                 boolean8 sv598_sendsfrompreferredprocessor;
366                 uint32 sv598_cacheddirectorylimit;
367                 uint32 sv598_maxcopylength;
368                 boolean8 sv598_enablecompression;
369                 boolean8 sv598_autosharewks;
370                 boolean8 sv598_autoshareserver;
371                 boolean8 sv598_enablesecuritysignature;
372                 boolean8 sv598_requiresecuritysignature;
373                 uint32 sv598_minclientbuffersize;
374                 GUID sv598_serverguid;
375                 uint32 sv598_ConnectionNoSessionsTimeout;
376                 uint32 sv598_IdleThreadTimeOut;
377                 boolean8 sv598_enableW9xsecuritysignature;
378                 boolean8 sv598_enforcekerberosreauthentication;
379                 boolean8 sv598_disabledos;
380                 uint32 sv598_lowdiskspaceminimum;
381                 boolean8 sv598_disablestrictnamechecking;
382         } SERVER_INFO_598;
383
384         [public] typedef struct {
385                 string sv1005_comment;
386         } SERVER_INFO_1005;
387
388         [public] typedef struct {
389                 uint32 sv1107_users;
390         } SERVER_INFO_1107;
391
392         [public] typedef struct {
393                 int32 sv1010_disc;
394         } SERVER_INFO_1010;
395
396         [public] typedef struct {
397                 boolean8  sv1016_hidden;
398         } SERVER_INFO_1016;
399
400         [public] typedef struct {
401                 uint32 sv1017_announce;
402         } SERVER_INFO_1017;
403
404         [public] typedef struct {
405                 uint32 sv1018_anndelta;
406         } SERVER_INFO_1018;
407
408         [public] typedef struct {
409                 uint32 sv1501_sessopens;
410         } SERVER_INFO_1501;
411
412         [public] typedef struct {
413                 uint32 sv1502_sessvcs;
414         } SERVER_INFO_1502;
415
416         [public] typedef struct {
417                 uint32 sv1503_opensearch;
418         } SERVER_INFO_1503;
419
420         [public] typedef struct {
421                 uint32 sv1506_maxworkitems;
422         } SERVER_INFO_1506;
423
424         [public] typedef struct {
425                 uint32 sv1509_maxrawbuflen;
426         } SERVER_INFO_1509;
427
428         [public] typedef struct {
429                 uint32 sv1510_sessusers;
430         } SERVER_INFO_1510;
431
432         [public] typedef struct {
433                 uint32 sv1511_sessconns;
434         } SERVER_INFO_1511;
435
436         [public] typedef struct {
437                 uint32 sv1512_maxnonpagedmemoryusage;
438         } SERVER_INFO_1512;
439
440         [public] typedef struct {
441                 uint32 sv1513_maxpagedmemoryusage;
442         } SERVER_INFO_1513;
443
444         [public] typedef struct {
445                 boolean8 sv1514_enablesoftcompat;
446         } SERVER_INFO_1514;
447
448         [public] typedef struct {
449                 boolean8  sv1515_enableforcedlogoff;
450         } SERVER_INFO_1515;
451
452         [public] typedef struct {
453                 boolean8  sv1516_timesource;
454         } SERVER_INFO_1516;
455
456         [public] typedef struct {
457                 boolean8  sv1518_lmannounce;
458         } SERVER_INFO_1518;
459
460         [public] typedef struct {
461                 uint32 sv1520_maxcopyreadlen;
462         } SERVER_INFO_1520;
463
464         [public] typedef struct {
465                 uint32 sv1521_maxcopywritelen;
466         } SERVER_INFO_1521;
467
468         [public] typedef struct {
469                 uint32 sv1522_minkeepsearch;
470         } SERVER_INFO_1522;
471
472         [public] typedef struct {
473                 uint32 sv1523_maxkeepsearch;
474         } SERVER_INFO_1523;
475
476         [public] typedef struct {
477                 uint32 sv1524_minkeepcomplsearch;
478         } SERVER_INFO_1524;
479
480         [public] typedef struct {
481                 uint32 sv1525_maxkeepcomplsearch;
482         } SERVER_INFO_1525;
483
484         [public] typedef struct {
485                 uint32 sv1528_scavtimeout;
486         } SERVER_INFO_1528;
487
488         [public] typedef struct {
489                 uint32 sv1529_minrcvqueue;
490         } SERVER_INFO_1529;
491
492         [public] typedef struct {
493                 uint32 sv1530_minfreeworkitems;
494         } SERVER_INFO_1530;
495
496         [public] typedef struct {
497                 uint32 sv1533_maxmpxct;
498         } SERVER_INFO_1533;
499
500         [public] typedef struct {
501                 uint32 sv1534_oplockbreakwait;
502         } SERVER_INFO_1534;
503
504         [public] typedef struct {
505                 uint32 sv1535_oplockbreakresponsewait;
506         } SERVER_INFO_1535;
507
508         [public] typedef struct {
509                 boolean8 sv1536_enableoplocks;
510         } SERVER_INFO_1536;
511
512         [public] typedef struct {
513                 boolean8 sv1537_enableoplockforceclose;
514         } SERVER_INFO_1537;
515
516         [public] typedef struct {
517                 boolean8 sv1538_enablefcbopens;
518         } SERVER_INFO_1538;
519
520         [public] typedef struct {
521                 boolean8 sv1539_enableraw;
522         } SERVER_INFO_1539;
523
524         [public] typedef struct {
525                 boolean8 sv1540_enablesharednetdrives;
526         } SERVER_INFO_1540;
527
528         [public] typedef struct {
529                 boolean8 sv1541_minfreeconnections;
530         } SERVER_INFO_1541;
531
532         [public] typedef struct {
533                 boolean8 sv1542_maxfreeconnections;
534         } SERVER_INFO_1542;
535
536         [public] typedef struct {
537                 uint32 sv1543_initsesstable;
538         } SERVER_INFO_1543;
539
540         [public] typedef struct {
541                 uint32 sv1544_initconntable;
542         } SERVER_INFO_1544;
543
544         [public] typedef struct {
545                 uint32 sv1545_initfiletable;
546         } SERVER_INFO_1545;
547
548         [public] typedef struct {
549                 uint32 sv1546_initsearchtable;
550         } SERVER_INFO_1546;
551
552         [public] typedef struct {
553                 uint32 sv1547_alertschedule;
554         } SERVER_INFO_1547;
555
556         [public] typedef struct {
557                 uint32 sv1548_errorthreshold;
558         } SERVER_INFO_1548;
559
560         [public] typedef struct {
561                 uint32 sv1549_networkerrorthreshold;
562         } SERVER_INFO_1549;
563
564         [public] typedef struct {
565                 uint32 sv1550_diskspacethreshold;
566         } SERVER_INFO_1550;
567
568         [public] typedef struct {
569                 uint32 sv1552_maxlinkdelay;
570         } SERVER_INFO_1552;
571
572         [public] typedef struct {
573                 uint32 sv1553_minlinkthroughput;
574         } SERVER_INFO_1553;
575
576         [public] typedef struct {
577                 uint32 sv1554_linkinfovalidtime;
578         } SERVER_INFO_1554;
579
580         [public] typedef struct {
581                 uint32 sv1555_scavqosinfoupdatetime;
582         } SERVER_INFO_1555;
583
584         [public] typedef struct {
585                 uint32 sv1556_maxworkitemidletime;
586         } SERVER_INFO_1556;
587
588         [public] typedef struct {
589                 uint32 sv1557_maxrawworkitems;
590         } SERVER_INFO_1557;
591
592         [public] typedef struct {
593                 uint32 sv1560_producttype;
594         } SERVER_INFO_1560;
595
596         [public] typedef struct {
597                 uint32 sv1561_serversize;
598         } SERVER_INFO_1561;
599
600         [public] typedef struct {
601                 uint32 sv1562_connectionlessautodisc;
602         } SERVER_INFO_1562;
603
604         [public] typedef struct {
605                 uint32 sv1563_sharingviolationretries;
606         } SERVER_INFO_1563;
607
608         [public] typedef struct {
609                 uint32 sv1564_sharingviolationdelay;
610         } SERVER_INFO_1564;
611
612         [public] typedef struct {
613                 uint32 sv1565_maxglobalopensearch;
614         } SERVER_INFO_1565;
615
616         [public] typedef struct {
617                 boolean8 sv1566_removeduplicatesearches;
618         } SERVER_INFO_1566;
619
620         [public] typedef struct {
621                 uint32 sv1567_lockviolationretries;
622         } SERVER_INFO_1567;
623
624         [public] typedef struct {
625                 uint32 sv1568_lockviolationoffset;
626         } SERVER_INFO_1568;
627
628         [public] typedef struct {
629                 uint32 sv1569_lockviolationdelay;
630         } SERVER_INFO_1569;
631
632         [public] typedef struct {
633                 uint32 sv1570_mdlreadswitchover;
634         } SERVER_INFO_1570;
635
636         [public] typedef struct {
637                 uint32 sv1571_cachedopenlimit;
638         } SERVER_INFO_1571;
639
640         [public] typedef struct {
641                 uint32 sv1572_criticalthreads;
642         } SERVER_INFO_1572;
643
644         [public] typedef struct {
645                 uint32 sv1573_restrictnullsessaccess;
646         } SERVER_INFO_1573;
647
648         [public] typedef struct {
649                 uint32 sv1574_enablewfw311directipx;
650         } SERVER_INFO_1574;
651
652         [public] typedef struct {
653                 uint32 sv1575_otherqueueaffinity;
654         } SERVER_INFO_1575;
655
656         [public] typedef struct {
657                 uint32 sv1576_queuesamplesecs;
658         } SERVER_INFO_1576;
659
660         [public] typedef struct {
661                 uint32 sv1577_balancecount;
662         } SERVER_INFO_1577;
663
664         [public] typedef struct {
665                 uint32 sv1578_preferredaffinity;
666         } SERVER_INFO_1578;
667
668         [public] typedef struct {
669                 uint32 sv1579_maxfreerfcbs;
670         } SERVER_INFO_1579;
671
672         [public] typedef struct {
673                 uint32 sv1580_maxfreemfcbs;
674         } SERVER_INFO_1580;
675
676         [public] typedef struct {
677                 uint32 sv1581_maxfreemlcbs;
678         } SERVER_INFO_1581;
679
680         [public] typedef struct {
681                 uint32 sv1582_maxfreepagedpoolchunks;
682         } SERVER_INFO_1582;
683
684         [public] typedef struct {
685                 uint32 sv1583_minpagedpoolchunksize;
686         } SERVER_INFO_1583;
687
688         [public] typedef struct {
689                 uint32 sv1584_maxpagedpoolchunksize;
690         } SERVER_INFO_1584;
691
692         [public] typedef struct {
693                 boolean8 sv1585_sendsfrompreferredprocessor;
694         } SERVER_INFO_1585;
695
696         [public] typedef struct {
697                 uint32 sv1586_maxthreadsperqueue;
698         } SERVER_INFO_1586;
699
700         [public] typedef struct {
701                 uint32 sv1587_cacheddirectorylimit;
702         } SERVER_INFO_1587;
703
704         [public] typedef struct {
705                 uint32 sv1588_maxcopylength;
706         } SERVER_INFO_1588;
707
708         [public] typedef struct {
709                 uint32 sv1590_enablecompression;
710         } SERVER_INFO_1590;
711
712         [public] typedef struct {
713                 uint32 sv1591_autosharewks;
714         } SERVER_INFO_1591;
715
716         [public] typedef struct {
717                 uint32 sv1592_autosharewks;
718         } SERVER_INFO_1592;
719
720         [public] typedef struct {
721                 uint32 sv1593_enablesecuritysignature;
722         } SERVER_INFO_1593;
723
724         [public] typedef struct {
725                 uint32 sv1594_requiresecuritysignature;
726         } SERVER_INFO_1594;
727
728         [public] typedef struct {
729                 uint32 sv1595_minclientbuffersize;
730         } SERVER_INFO_1595;
731
732         [public] typedef struct {
733                 uint32 sv1596_ConnectionNoSessionsTimeout;
734         } SERVER_INFO_1596;
735
736         [public] typedef struct {
737                 uint32 sv1597_IdleThreadTimeOut;
738         } SERVER_INFO_1597;
739
740         [public] typedef struct {
741                 uint32 sv1598_enableW9xsecuritysignature;
742         } SERVER_INFO_1598;
743
744         [public] typedef struct {
745                 boolean8 sv1598_enforcekerberosreauthentication;
746         } SERVER_INFO_1599;
747
748         [public] typedef struct {
749                 boolean8 sv1598_disabledos;
750         } SERVER_INFO_1600;
751
752         [public] typedef struct {
753                 uint32 sv1598_lowdiskspaceminimum;
754         } SERVER_INFO_1601;
755
756         [public] typedef struct {
757                 boolean8 sv_1598_disablestrictnamechecking;
758         } SERVER_INFO_1602;
759
760         [nopush,nopull] NET_API_STATUS NetServerGetInfo(
761                 [in,unique] string *server_name,
762                 [in] uint32 level,
763                 [out] uint8 **buffer
764                 );
765
766         /*******************************************/
767         /* NetServerSetInfo                        */
768         /*******************************************/
769
770         [nopush,nopull] NET_API_STATUS NetServerSetInfo(
771                 [in,unique] string *server_name,
772                 [in] uint32 level,
773                 [in] uint8 *buffer,
774                 [out] uint32 *parm_error
775                 );
776
777         /*******************************************/
778         /* NetGetDCName                            */
779         /*******************************************/
780
781         [nopush,nopull] NET_API_STATUS NetGetDCName(
782                 [in,unique] string *server_name,
783                 [in,unique] string *domain_name,
784                 [out] uint8 **buffer
785                 );
786
787         /*******************************************/
788         /* NetGetAnyDCName                         */
789         /*******************************************/
790
791         [nopush,nopull] NET_API_STATUS NetGetAnyDCName(
792                 [in,unique] string *server_name,
793                 [in,unique] string *domain_name,
794                 [out] uint8 **buffer
795                 );
796
797         /*******************************************/
798         /* DsGetDcName                             */
799         /*******************************************/
800
801         [public] typedef struct {
802                 string domain_controller_name;
803                 string domain_controller_address;
804                 uint32 domain_controller_address_type;
805                 GUID domain_guid;
806                 string domain_name;
807                 string dns_forest_name;
808                 uint32 flags;
809                 string dc_site_name;
810                 string client_site_name;
811         } DOMAIN_CONTROLLER_INFO;
812
813         [nopush,nopull] NET_API_STATUS DsGetDcName(
814                 [in,unique] string *server_name,
815                 [in,ref] string *domain_name,
816                 [in,unique] GUID *domain_guid,
817                 [in,unique] string *site_name,
818                 [in] uint32 flags,
819                 [out,ref] DOMAIN_CONTROLLER_INFO **dc_info
820                 );
821
822         /*******************************************/
823         /* NetUserAdd                              */
824         /*******************************************/
825
826         [public] typedef struct {
827                 string usri0_name;
828         } USER_INFO_0;
829
830         /* priv */
831         const int USER_PRIV_GUEST       = 0;
832         const int USER_PRIV_USER        = 1;
833         const int USER_PRIV_ADMIN       = 2;
834
835         [public] typedef struct {
836                 string usri1_name;
837                 string usri1_password;
838                 uint32 usri1_password_age;
839                 uint32 usri1_priv;
840                 string usri1_home_dir;
841                 string usri1_comment;
842                 uint32 usri1_flags;
843                 string usri1_script_path;
844         } USER_INFO_1;
845
846         /* auth_flags in USER_INFO_2 */
847
848         const int AF_OP_PRINT           = 0x1;
849         const int AF_OP_COMM            = 0x2;
850         const int AF_OP_SERVER          = 0x4;
851         const int AF_OP_ACCOUNTS        = 0x8;
852         const int AF_SETTABLE_BITS      = (AF_OP_PRINT | AF_OP_COMM | AF_OP_SERVER | AF_OP_ACCOUNTS);
853
854         const int USER_MAXSTORAGE_UNLIMITED = (uint32_t)-1L;
855
856         [public] typedef struct {
857                 string usri2_name;
858                 string usri2_password;
859                 uint32 usri2_password_age;
860                 uint32 usri2_priv;
861                 string usri2_home_dir;
862                 string usri2_comment;
863                 uint32 usri2_flags;
864                 string usri2_script_path;
865                 uint32 usri2_auth_flags;
866                 string usri2_full_name;
867                 string usri2_usr_comment;
868                 string usri2_parms;
869                 string usri2_workstations;
870                 uint32 usri2_last_logon;
871                 uint32 usri2_last_logoff;
872                 uint32 usri2_acct_expires;
873                 uint32 usri2_max_storage;
874                 uint32 usri2_units_per_week;
875                 uint8 *usri2_logon_hours;
876                 uint32 usri2_bad_pw_count;
877                 uint32 usri2_num_logons;
878                 string usri2_logon_server;
879                 uint32 usri2_country_code;
880                 uint32 usri2_code_page;
881         } USER_INFO_2;
882
883         [public] typedef struct {
884                 string usri3_name;
885                 uint32 usri3_password_age;
886                 uint32 usri3_priv;
887                 string usri3_home_dir;
888                 string usri3_comment;
889                 uint32 usri3_flags;
890                 string usri3_script_path;
891                 uint32 usri3_auth_flags;
892                 string usri3_full_name;
893                 string usri3_usr_comment;
894                 string usri3_parms;
895                 string usri3_workstations;
896                 uint32 usri3_last_logon;
897                 uint32 usri3_last_logoff;
898                 uint32 usri3_acct_expires;
899                 uint32 usri3_max_storage;
900                 uint32 usri3_units_per_week;
901                 uint8 *usri3_logon_hours;
902                 uint32 usri3_bad_pw_count;
903                 uint32 usri3_num_logons;
904                 string usri3_logon_server;
905                 uint32 usri3_country_code;
906                 uint32 usri3_code_page;
907                 uint32 usri3_user_id;
908                 uint32 usri3_primary_group_id;
909                 string usri3_profile;
910                 string usri3_home_dir_drive;
911                 uint32 usri3_password_expired;
912         } USER_INFO_3;
913
914         [public] typedef struct {
915                 string usri4_name;
916                 string usri4_password;
917                 uint32 usri4_password_age;
918                 uint32 usri4_priv;
919                 string usri4_home_dir;
920                 string usri4_comment;
921                 uint32 usri4_flags;
922                 string usri4_script_path;
923                 uint32 usri4_auth_flags;
924                 string usri4_full_name;
925                 string usri4_usr_comment;
926                 string usri4_parms;
927                 string usri4_workstations;
928                 uint32 usri4_last_logon;
929                 uint32 usri4_last_logoff;
930                 uint32 usri4_acct_expires;
931                 uint32 usri4_max_storage;
932                 uint32 usri4_units_per_week;
933                 uint8 *usri4_logon_hours;
934                 uint32 usri4_bad_pw_count;
935                 uint32 usri4_num_logons;
936                 string usri4_logon_server;
937                 uint32 usri4_country_code;
938                 uint32 usri4_code_page;
939                 domsid *usri4_user_sid;
940                 uint32 usri4_primary_group_id;
941                 string usri4_profile;
942                 string usri4_home_dir_drive;
943                 uint32 usri4_password_expired;
944         } USER_INFO_4;
945
946         [public] typedef struct {
947                 string usri10_name;
948                 string usri10_comment;
949                 string usri10_usr_comment;
950                 string usri10_full_name;
951         } USER_INFO_10;
952
953         [public] typedef struct {
954                 string usri11_name;
955                 string usri11_comment;
956                 string usri11_usr_comment;
957                 string usri11_full_name;
958                 uint32 usri11_priv;
959                 uint32 usri11_auth_flags;
960                 uint32 usri11_password_age;
961                 string usri11_home_dir;
962                 string usri11_parms;
963                 uint32 usri11_last_logon;
964                 uint32 usri11_last_logoff;
965                 uint32 usri11_bad_pw_count;
966                 uint32 usri11_num_logons;
967                 string usri11_logon_server;
968                 uint32 usri11_country_code;
969                 string usri11_workstations;
970                 uint32 usri11_max_storage;
971                 uint32 usri11_units_per_week;
972                 uint8 *usri11_logon_hours;
973                 uint32 usri11_code_page;
974         } USER_INFO_11;
975
976         [public] typedef struct {
977                 string usri20_name;
978                 string usri20_full_name;
979                 string usri20_comment;
980                 uint32 usri20_flags;
981                 uint32 usri20_user_id;
982         } USER_INFO_20;
983
984         const int ENCRYPTED_PWLEN = 16;
985
986         [public] typedef struct {
987                 uint8 usri21_password[ENCRYPTED_PWLEN];
988         } USER_INFO_21;
989
990         [public] typedef struct {
991                 string usri22_name;
992                 uint8 usri22_password[ENCRYPTED_PWLEN];
993                 uint32 usri22_password_age;
994                 uint32 usri22_priv;
995                 string usri22_home_dir;
996                 string usri22_comment;
997                 uint32 usri22_flags;
998                 uint32 usri22_script_path;
999                 uint32 usri22_auth_flags;
1000                 string usri22_full_name;
1001                 string usri22_usr_comment;
1002                 string usri22_parms;
1003                 string usri22_workstations;
1004                 uint32 usri22_last_logon;
1005                 uint32 usri22_last_logoff;
1006                 uint32 usri22_acct_expires;
1007                 uint32 usri22_max_storage;
1008                 uint32 usri22_units_per_week;
1009                 uint8 *usri22_logon_hours;
1010                 uint32 usri22_bad_pw_count;
1011                 uint32 usri22_num_logons;
1012                 string usri22_logon_server;
1013                 uint32 usri22_country_code;
1014                 uint32 usri22_code_page;
1015         } USER_INFO_22;
1016
1017         [public] typedef struct {
1018                 string usri23_name;
1019                 string usri23_full_name;
1020                 string usri23_comment;
1021                 uint32 usri23_flags;
1022                 domsid *usri23_user_sid;
1023         } USER_INFO_23;
1024
1025         [public] typedef struct {
1026                 string usri1003_password;
1027         } USER_INFO_1003;
1028
1029         [public] typedef struct {
1030                 uint32 usri1005_priv;
1031         } USER_INFO_1005;
1032
1033         [public] typedef struct {
1034                 string usri1006_home_dir;
1035         } USER_INFO_1006;
1036
1037         [public] typedef struct {
1038                 string usri1007_comment;
1039         } USER_INFO_1007;
1040
1041         [public] typedef struct {
1042                 uint32 usri1008_flags;
1043         } USER_INFO_1008;
1044
1045         [public] typedef struct {
1046                 string usri1009_script_path;
1047         } USER_INFO_1009;
1048
1049         [public] typedef struct {
1050                 uint32 usri1010_auth_flags;
1051         } USER_INFO_1010;
1052
1053         [public] typedef struct {
1054                 string usri1011_full_name;
1055         } USER_INFO_1011;
1056
1057         [public] typedef struct {
1058                 string usri1012_usr_comment;
1059         } USER_INFO_1012;
1060
1061         [public] typedef struct {
1062                 string usri1013_parms;
1063         } USER_INFO_1013;
1064
1065         [public] typedef struct {
1066                 string usri1014_workstations;
1067         } USER_INFO_1014;
1068
1069         [public] typedef struct {
1070                 uint32 usri1017_acct_expires;
1071         } USER_INFO_1017;
1072
1073         [public] typedef struct {
1074                 uint32 usri1018_max_storage;
1075         } USER_INFO_1018;
1076
1077         [public] typedef struct {
1078                 uint32 usri1020_units_per_week;
1079                 uint8 *usri1020_logon_hours;
1080         } USER_INFO_1020;
1081
1082         [public] typedef struct {
1083                 string usri1023_logon_server;
1084         } USER_INFO_1023;
1085
1086         [public] typedef struct {
1087                 uint32 usri1024_country_code;
1088         } USER_INFO_1024;
1089
1090         [public] typedef struct {
1091                 uint32 usri1025_code_page;
1092         } USER_INFO_1025;
1093
1094         [public] typedef struct {
1095                 uint32 usri1051_primary_group_id;
1096         } USER_INFO_1051;
1097
1098         [public] typedef struct {
1099                 string usri1052_profile;
1100         } USER_INFO_1052;
1101
1102         [public] typedef struct {
1103                 string usri1053_home_dir_drive;
1104         } USER_INFO_1053;
1105
1106         [public] typedef struct {
1107                 string usriX_name;
1108                 string usriX_password;
1109                 uint32 usriX_password_age;
1110                 uint32 usriX_priv;
1111                 string usriX_home_dir;
1112                 string usriX_comment;
1113                 uint32 usriX_flags;
1114                 string usriX_script_path;
1115                 uint32 usriX_auth_flags;
1116                 string usriX_full_name;
1117                 string usriX_usr_comment;
1118                 string usriX_parms;
1119                 string usriX_workstations;
1120                 uint32 usriX_last_logon;
1121                 uint32 usriX_last_logoff;
1122                 uint32 usriX_acct_expires;
1123                 uint32 usriX_max_storage;
1124                 uint32 usriX_units_per_week;
1125                 uint8 *usriX_logon_hours;
1126                 uint32 usriX_bad_pw_count;
1127                 uint32 usriX_num_logons;
1128                 string usriX_logon_server;
1129                 uint32 usriX_country_code;
1130                 uint32 usriX_code_page;
1131                 string usriX_profile;
1132                 string usriX_home_dir_drive;
1133                 uint32 usriX_user_id;
1134                 uint32 usriX_primary_group_id;
1135                 uint32 usriX_password_expired;
1136         } USER_INFO_X;
1137
1138         [nopush,nopull] NET_API_STATUS NetUserAdd(
1139                 [in,unique] string *server_name,
1140                 [in] uint32 level,
1141                 [in,ref] uint8 *buffer,
1142                 [out,ref] uint32 *parm_error
1143                 );
1144
1145         /*******************************************/
1146         /* NetUserDel                              */
1147         /*******************************************/
1148
1149         [nopush,nopull] NET_API_STATUS NetUserDel(
1150                 [in,unique] string *server_name,
1151                 [in,ref] string *user_name
1152                 );
1153
1154         /*******************************************/
1155         /* NetUserEnum                             */
1156         /*******************************************/
1157
1158         const int FILTER_TEMP_DUPLICATE_ACCOUNT = 0x0001;
1159         const int FILTER_NORMAL_ACCOUNT = 0x0002;
1160         const int FILTER_INTERDOMAIN_TRUST_ACCOUNT = 0x0008;
1161         const int FILTER_WORKSTATION_TRUST_ACCOUNT = 0x0010;
1162         const int FILTER_SERVER_TRUST_ACCOUNT = 0x0020;
1163
1164         [nopush,nopull] NET_API_STATUS NetUserEnum(
1165                 [in,unique] string *server_name,
1166                 [in] uint32 level,
1167                 [in] uint32 filter,
1168                 [out,ref] uint8 **buffer,
1169                 [in] uint32 prefmaxlen,
1170                 [out,ref] uint32 *entries_read,
1171                 [out,ref] uint32 *total_entries,
1172                 [in,out,ref] uint32 *resume_handle
1173                 );
1174
1175         /*******************************************/
1176         /* NetUserChangePassword                   */
1177         /*******************************************/
1178
1179         [nopush,nopull] NET_API_STATUS NetUserChangePassword(
1180                 [in] string domain_name,
1181                 [in] string user_name,
1182                 [in] string old_password,
1183                 [in] string new_password
1184                 );
1185
1186         /*******************************************/
1187         /* NetUserGetInfo                          */
1188         /*******************************************/
1189
1190         [nopush,nopull] NET_API_STATUS NetUserGetInfo(
1191                 [in] string server_name,
1192                 [in] string user_name,
1193                 [in] uint32 level,
1194                 [out] uint8 **buffer
1195                 );
1196
1197         /*******************************************/
1198         /* NetUserSetInfo                          */
1199         /*******************************************/
1200
1201         [nopush,nopull] NET_API_STATUS NetUserSetInfo(
1202                 [in] string server_name,
1203                 [in] string user_name,
1204                 [in] uint32 level,
1205                 [in] uint8 *buffer,
1206                 [out] uint32 *parm_err
1207                 );
1208
1209         /*******************************************/
1210         /* NetUserGetGroups                        */
1211         /*******************************************/
1212
1213         [public] typedef struct {
1214                 string grui0_name;
1215         } GROUP_USERS_INFO_0;
1216
1217         [public] typedef struct {
1218                 string grui1_name;
1219                 uint32 grui1_attributes;
1220         } GROUP_USERS_INFO_1;
1221
1222         [nopush,nopull] NET_API_STATUS NetUserGetGroups(
1223                 [in] string server_name,
1224                 [in] string user_name,
1225                 [in] uint32 level,
1226                 [out] uint8 **buffer,
1227                 [in] uint32 prefmaxlen,
1228                 [out,ref] uint32 *entries_read,
1229                 [out,ref] uint32 *total_entries
1230                 );
1231
1232         /*******************************************/
1233         /* NetUserSetGroups                        */
1234         /*******************************************/
1235
1236         [nopush,nopull] NET_API_STATUS NetUserSetGroups(
1237                 [in] string server_name,
1238                 [in] string user_name,
1239                 [in] uint32 level,
1240                 [in] uint8 *buffer,
1241                 [in] uint32 num_entries
1242                 );
1243
1244         /*******************************************/
1245         /* NetUserGetLocalGroups                   */
1246         /*******************************************/
1247
1248         const int LG_INCLUDE_INDIRECT = 0x0001;
1249
1250         typedef struct {
1251                 string lgrui0_name;
1252         } LOCALGROUP_USERS_INFO_0;
1253
1254         [nopush,nopull] NET_API_STATUS NetUserGetLocalGroups(
1255                 [in] string server_name,
1256                 [in] string user_name,
1257                 [in] uint32 level,
1258                 [in] uint32 flags,
1259                 [out] uint8 **buffer,
1260                 [in] uint32 prefmaxlen,
1261                 [out,ref] uint32 *entries_read,
1262                 [out,ref] uint32 *total_entries
1263                 );
1264
1265         /*******************************************/
1266         /* NetUserModalsGet                        */
1267         /*******************************************/
1268
1269         const int TIMEQ_FOREVER = (uint32_t)-1L;
1270
1271         typedef struct {
1272                 uint32 usrmod0_min_passwd_len;
1273                 uint32 usrmod0_max_passwd_age;
1274                 uint32 usrmod0_min_passwd_age;
1275                 uint32 usrmod0_force_logoff;
1276                 uint32 usrmod0_password_hist_len;
1277         } USER_MODALS_INFO_0;
1278
1279         typedef struct {
1280                 uint32 usrmod1_role;
1281                 string usrmod1_primary;
1282         } USER_MODALS_INFO_1;
1283
1284         typedef struct {
1285                 string usrmod2_domain_name;
1286                 domsid *usrmod2_domain_id;
1287         } USER_MODALS_INFO_2;
1288
1289         typedef struct {
1290                 uint32 usrmod3_lockout_duration;
1291                 uint32 usrmod3_lockout_observation_window;
1292                 uint32 usrmod3_lockout_threshold;
1293         } USER_MODALS_INFO_3;
1294
1295         typedef struct {
1296                 uint32 usrmod1001_min_passwd_len;
1297         } USER_MODALS_INFO_1001;
1298
1299         typedef struct {
1300                 uint32 usrmod1002_max_passwd_age;
1301         } USER_MODALS_INFO_1002;
1302
1303         typedef struct {
1304                 uint32 usrmod1003_min_passwd_age;
1305         } USER_MODALS_INFO_1003;
1306
1307         typedef struct {
1308                 uint32 usrmod1004_force_logoff;
1309         } USER_MODALS_INFO_1004;
1310
1311         typedef struct {
1312                 uint32 usrmod1005_password_hist_len;
1313         } USER_MODALS_INFO_1005;
1314
1315         typedef struct {
1316                 uint32 usrmod1006_role;
1317         } USER_MODALS_INFO_1006;
1318
1319         typedef struct {
1320                 string usrmod1007_primary;
1321         } USER_MODALS_INFO_1007;
1322
1323         [nopush,nopull] NET_API_STATUS NetUserModalsGet(
1324                 [in] string server_name,
1325                 [in] uint32 level,
1326                 [out,ref] uint8 **buffer
1327                 );
1328
1329         /*******************************************/
1330         /* NetUserModalsSet                        */
1331         /*******************************************/
1332
1333         [nopush,nopull] NET_API_STATUS NetUserModalsSet(
1334                 [in] string server_name,
1335                 [in] uint32 level,
1336                 [in] uint8 *buffer,
1337                 [out,ref] uint32 *parm_err
1338                 );
1339
1340         /*******************************************/
1341         /* NetQueryDisplayInformation              */
1342         /*******************************************/
1343
1344         [public] typedef struct {
1345                 string usri1_name;
1346                 string usri1_comment;
1347                 uint32 usri1_flags;
1348                 string usri1_full_name;
1349                 uint32 usri1_user_id;
1350                 uint32 usri1_next_index;
1351         } NET_DISPLAY_USER;
1352
1353         [public] typedef struct {
1354                 string usri2_name;
1355                 string usri2_comment;
1356                 uint32 usri2_flags;
1357                 uint32 usri2_user_id;
1358                 uint32 usri2_next_index;
1359         } NET_DISPLAY_MACHINE;
1360
1361         [public] typedef struct {
1362                 string grpi3_name;
1363                 string grpi3_comment;
1364                 uint32 grpi3_group_id;
1365                 uint32 grpi3_attributes;
1366                 uint32 grpi3_next_index;
1367         } NET_DISPLAY_GROUP;
1368
1369         [nopush,nopull] NET_API_STATUS NetQueryDisplayInformation(
1370                 [in,unique] string *server_name,
1371                 [in] uint32 level,
1372                 [in] uint32 idx,
1373                 [in] uint32 entries_requested,
1374                 [in] uint32 prefmaxlen,
1375                 [out,ref] uint32 *entries_read,
1376                 [out,ref,noprint] void **buffer
1377                 );
1378
1379         /*******************************************/
1380         /* NetGroupAdd                             */
1381         /*******************************************/
1382
1383         typedef struct {
1384                 string grpi0_name;
1385         } GROUP_INFO_0;
1386
1387         typedef struct {
1388                 string grpi1_name;
1389                 string grpi1_comment;
1390         } GROUP_INFO_1;
1391
1392         typedef struct {
1393                 string grpi2_name;
1394                 string grpi2_comment;
1395                 uint32 grpi2_group_id;
1396                 uint32 grpi2_attributes;
1397         } GROUP_INFO_2;
1398
1399         typedef struct {
1400                 string grpi3_name;
1401                 string grpi3_comment;
1402                 domsid *grpi3_group_sid;
1403                 uint32 grpi3_attributes;
1404         } GROUP_INFO_3;
1405
1406         typedef struct {
1407                 string grpi1002_comment;
1408         } GROUP_INFO_1002;
1409
1410         typedef struct {
1411                 uint32 grpi1005_attributes;
1412         } GROUP_INFO_1005;
1413
1414         [nopush,nopull] NET_API_STATUS NetGroupAdd(
1415                 [in] string server_name,
1416                 [in] uint32 level,
1417                 [in] uint8 *buffer,
1418                 [out] uint32 *parm_err
1419                 );
1420
1421         /*******************************************/
1422         /* NetGroupDel                             */
1423         /*******************************************/
1424
1425         [nopush,nopull] NET_API_STATUS NetGroupDel(
1426                 [in] string server_name,
1427                 [in] string group_name
1428                 );
1429
1430         /*******************************************/
1431         /* NetGroupEnum                            */
1432         /*******************************************/
1433
1434         [nopush,nopull] NET_API_STATUS NetGroupEnum(
1435                 [in] string server_name,
1436                 [in] uint32 level,
1437                 [out,ref] uint8 **buffer,
1438                 [in] uint32 prefmaxlen,
1439                 [out,ref] uint32 *entries_read,
1440                 [out,ref] uint32 *total_entries,
1441                 [in,out,ref] uint32 *resume_handle
1442                 );
1443
1444         /*******************************************/
1445         /* NetGroupSetInfo                         */
1446         /*******************************************/
1447
1448         [nopush,nopull] NET_API_STATUS NetGroupSetInfo(
1449                 [in] string server_name,
1450                 [in] string group_name,
1451                 [in] uint32 level,
1452                 [in] uint8 *buffer,
1453                 [out] uint32 *parm_err
1454                 );
1455
1456         /*******************************************/
1457         /* NetGroupGetInfo                         */
1458         /*******************************************/
1459
1460         [nopush,nopull] NET_API_STATUS NetGroupGetInfo(
1461                 [in] string server_name,
1462                 [in] string group_name,
1463                 [in] uint32 level,
1464                 [out] uint8 **buffer
1465                 );
1466
1467         /*******************************************/
1468         /* NetGroupAddUser                         */
1469         /*******************************************/
1470
1471         [nopush,nopull] NET_API_STATUS NetGroupAddUser(
1472                 [in] string server_name,
1473                 [in] string group_name,
1474                 [in] string user_name
1475                 );
1476
1477         /*******************************************/
1478         /* NetGroupDelUser                         */
1479         /*******************************************/
1480
1481         [nopush,nopull] NET_API_STATUS NetGroupDelUser(
1482                 [in] string server_name,
1483                 [in] string group_name,
1484                 [in] string user_name
1485                 );
1486
1487         /*******************************************/
1488         /* NetGroupGetUsers                        */
1489         /*******************************************/
1490
1491         [nopush,nopull] NET_API_STATUS NetGroupGetUsers(
1492                 [in] string server_name,
1493                 [in] string group_name,
1494                 [in] uint32 level,
1495                 [out] uint8 **buffer,
1496                 [in] uint32 prefmaxlen,
1497                 [out,ref] uint32 *entries_read,
1498                 [out,ref] uint32 *total_entries,
1499                 [in,out,ref] uint32 *resume_handle
1500                 );
1501
1502         /*******************************************/
1503         /* NetGroupSetUsers                        */
1504         /*******************************************/
1505
1506         [nopush,nopull] NET_API_STATUS NetGroupSetUsers(
1507                 [in] string server_name,
1508                 [in] string group_name,
1509                 [in] uint32 level,
1510                 [in] uint8 *buffer,
1511                 [in] uint32 num_entries
1512                 );
1513
1514         /*******************************************/
1515         /* NetLocalGroupAdd                        */
1516         /*******************************************/
1517
1518         typedef struct {
1519                 string lgrpi0_name;
1520         } LOCALGROUP_INFO_0;
1521
1522         typedef struct {
1523                 string lgrpi1_name;
1524                 string lgrpi1_comment;
1525         } LOCALGROUP_INFO_1;
1526
1527         typedef struct {
1528                 string lgrpi1002_comment;
1529         } LOCALGROUP_INFO_1002;
1530
1531         [nopush,nopull] NET_API_STATUS NetLocalGroupAdd(
1532                 [in] string server_name,
1533                 [in] uint32 level,
1534                 [in] uint8 *buffer,
1535                 [out,ref] uint32 *parm_err
1536                 );
1537
1538         /*******************************************/
1539         /* NetLocalGroupDel                        */
1540         /*******************************************/
1541
1542         [nopush,nopull] NET_API_STATUS NetLocalGroupDel(
1543                 [in] string server_name,
1544                 [in] string group_name
1545                 );
1546
1547         /*******************************************/
1548         /* NetLocalGroupGetInfo                    */
1549         /*******************************************/
1550
1551         [nopush,nopull] NET_API_STATUS NetLocalGroupGetInfo(
1552                 [in] string server_name,
1553                 [in] string group_name,
1554                 [in] uint32 level,
1555                 [out,ref] uint8 **buffer
1556                 );
1557
1558         /*******************************************/
1559         /* NetLocalGroupSetInfo                    */
1560         /*******************************************/
1561
1562         [nopush,nopull] NET_API_STATUS NetLocalGroupSetInfo(
1563                 [in] string server_name,
1564                 [in] string group_name,
1565                 [in] uint32 level,
1566                 [in,ref] uint8 *buffer,
1567                 [out,ref] uint32 *parm_err
1568                 );
1569
1570         /*******************************************/
1571         /* NetLocalGroupEnum                       */
1572         /*******************************************/
1573
1574         [nopush,nopull] NET_API_STATUS NetLocalGroupEnum(
1575                 [in] string server_name,
1576                 [in] uint32 level,
1577                 [out,ref] uint8 **buffer,
1578                 [in] uint32 prefmaxlen,
1579                 [out,ref] uint32 *entries_read,
1580                 [out,ref] uint32 *total_entries,
1581                 [in,out,ref] uint32 *resume_handle
1582                 );
1583
1584         /*******************************************/
1585         /* NetLocalGroupAddMembers                 */
1586         /*******************************************/
1587
1588         typedef enum {
1589                 SidTypeUser             = 1,
1590                 SidTypeGroup            = 2,
1591                 SidTypeDomain           = 3,
1592                 SidTypeAlias            = 4,
1593                 SidTypeWellKnownGroup   = 5,
1594                 SidTypeDeletedAccount   = 6,
1595                 SidTypeInvalid          = 7,
1596                 SidTypeUnknown          = 8,
1597                 SidTypeComputer         = 9,
1598                 SidTypeLabel            = 10
1599         } SID_NAME_USE;
1600
1601         typedef struct {
1602                 domsid *lgrmi0_sid;
1603         } LOCALGROUP_MEMBERS_INFO_0;
1604
1605         typedef struct {
1606                 domsid *lgrmi1_sid;
1607                 SID_NAME_USE lgrmi1_sidusage;
1608                 string lgrmi1_name;
1609         } LOCALGROUP_MEMBERS_INFO_1;
1610
1611         typedef struct {
1612                 domsid *lgrmi2_sid;
1613                 SID_NAME_USE lgrmi2_sidusage;
1614                 string lgrmi2_domainandname;
1615         } LOCALGROUP_MEMBERS_INFO_2;
1616
1617         typedef struct {
1618                 string lgrmi3_domainandname;
1619         } LOCALGROUP_MEMBERS_INFO_3;
1620
1621         [nopush,nopull] NET_API_STATUS NetLocalGroupAddMembers(
1622                 [in] string server_name,
1623                 [in] string group_name,
1624                 [in] uint32 level,
1625                 [in] uint8 *buffer,
1626                 [in] uint32 total_entries
1627                 );
1628
1629         /*******************************************/
1630         /* NetLocalGroupDelMembers                 */
1631         /*******************************************/
1632
1633         [nopush,nopull] NET_API_STATUS NetLocalGroupDelMembers(
1634                 [in] string server_name,
1635                 [in] string group_name,
1636                 [in] uint32 level,
1637                 [in] uint8 *buffer,
1638                 [in] uint32 total_entries
1639                 );
1640
1641         /*******************************************/
1642         /* NetLocalGroupGetMembers                 */
1643         /*******************************************/
1644
1645         [nopush,nopull] NET_API_STATUS NetLocalGroupGetMembers(
1646                 [in] string server_name,
1647                 [in] string local_group_name,
1648                 [in] uint32 level,
1649                 [out] uint8 **buffer,
1650                 [in] uint32 prefmaxlen,
1651                 [out] uint32 *entries_read,
1652                 [out] uint32 *total_entries,
1653                 [in,out] uint32 *resume_handle
1654                 );
1655
1656         /*******************************************/
1657         /* NetLocalGroupSetMembers                 */
1658         /*******************************************/
1659
1660         [nopush,nopull] NET_API_STATUS NetLocalGroupSetMembers(
1661                 [in] string server_name,
1662                 [in] string group_name,
1663                 [in] uint32 level,
1664                 [in] uint8 *buffer,
1665                 [in] uint32 total_entries
1666                 );
1667
1668         /*******************************************/
1669         /* NetRemoteTOD                            */
1670         /*******************************************/
1671
1672         typedef struct {
1673                 uint32 tod_elapsedt;
1674                 uint32 tod_msecs;
1675                 uint32 tod_hours;
1676                 uint32 tod_mins;
1677                 uint32 tod_secs;
1678                 uint32 tod_hunds;
1679                 int32 tod_timezone;
1680                 uint32 tod_tinterval;
1681                 uint32 tod_day;
1682                 uint32 tod_month;
1683                 uint32 tod_year;
1684                 uint32 tod_weekday;
1685         } TIME_OF_DAY_INFO;
1686
1687         [nopush,nopull] NET_API_STATUS NetRemoteTOD(
1688                 [in] string server_name,
1689                 [out,ref] uint8 **buffer
1690                 );
1691
1692         /*******************************************/
1693         /* NetShareAdd                             */
1694         /*******************************************/
1695
1696         typedef struct {
1697                 string shi0_netname;
1698         } SHARE_INFO_0;
1699
1700         typedef struct {
1701                 string shi1_netname;
1702                 uint32 shi1_type;
1703                 string shi1_remark;
1704         } SHARE_INFO_1;
1705
1706         typedef struct {
1707                 string shi2_netname;
1708                 uint32 shi2_type;
1709                 string shi2_remark;
1710                 uint32 shi2_permissions;
1711                 uint32 shi2_max_uses;
1712                 uint32 shi2_current_uses;
1713                 string shi2_path;
1714                 string shi2_passwd;
1715         } SHARE_INFO_2;
1716
1717         typedef struct {
1718                 string shi501_netname;
1719                 uint32 shi501_type;
1720                 string shi501_remark;
1721                 uint32 shi501_flags;
1722         } SHARE_INFO_501;
1723
1724         typedef struct {
1725                 string shi1004_remark;
1726         } SHARE_INFO_1004;
1727
1728         const int CSC_MASK = 0x30;
1729
1730         typedef [public,bitmap32bit] bitmap {
1731                 SHI1005_FLAGS_DFS                               = 0x01,
1732                 SHI1005_FLAGS_DFS_ROOT                          = 0x02,
1733                 CSC_CACHE_MANUAL_REINT                          = 0x00,
1734                 CSC_CACHE_AUTO_REINT                            = 0x10,
1735                 CSC_CACHE_VDO                                   = 0x20,
1736                 CSC_CACHE_NONE                                  = 0x30,
1737                 SHI1005_FLAGS_RESTRICT_EXCLUSIVE_OPENS          = 0x0100,
1738                 SHI1005_FLAGS_FORCE_SHARED_DELETE               = 0x0200,
1739                 SHI1005_FLAGS_ALLOW_NAMESPACE_CACHING           = 0x0400,
1740                 SHI1005_FLAGS_ACCESS_BASED_DIRECTORY_ENUM       = 0x0800
1741         } SHARE_INFO_1005_FLAGS;
1742
1743         typedef struct {
1744                 SHARE_INFO_1005_FLAGS shi1005_flags;
1745         } SHARE_INFO_1005;
1746
1747         typedef struct {
1748                 uint32 shi1006_max_uses;
1749         } SHARE_INFO_1006;
1750
1751         [nopush,nopull] NET_API_STATUS NetShareAdd(
1752                 [in] string server_name,
1753                 [in] uint32 level,
1754                 [in] uint8 *buffer,
1755                 [out] uint32 *parm_err
1756                 );
1757
1758         /*******************************************/
1759         /* NetShareDel                             */
1760         /*******************************************/
1761
1762         [nopush,nopull] NET_API_STATUS NetShareDel(
1763                 [in] string server_name,
1764                 [in] string net_name,
1765                 [in] uint32 reserved
1766                 );
1767
1768         /*******************************************/
1769         /* NetShareEnum                            */
1770         /*******************************************/
1771
1772         [nopush,nopull] NET_API_STATUS NetShareEnum(
1773                 [in] string server_name,
1774                 [in] uint32 level,
1775                 [out] uint8 **buffer,
1776                 [in] uint32 prefmaxlen,
1777                 [out] uint32 *entries_read,
1778                 [out] uint32 *total_entries,
1779                 [in,out] uint32 *resume_handle
1780                 );
1781
1782         /*******************************************/
1783         /* NetShareGetInfo                         */
1784         /*******************************************/
1785
1786         [nopush,nopull] NET_API_STATUS NetShareGetInfo(
1787                 [in] string server_name,
1788                 [in] string net_name,
1789                 [in] uint32 level,
1790                 [out] uint8 **buffer
1791                 );
1792
1793         /*******************************************/
1794         /* NetShareSetInfo                         */
1795         /*******************************************/
1796
1797         [nopush,nopull] NET_API_STATUS NetShareSetInfo(
1798                 [in] string server_name,
1799                 [in] string net_name,
1800                 [in] uint32 level,
1801                 [in] uint8 *buffer,
1802                 [out] uint32 *parm_err
1803                 );
1804
1805         /*******************************************/
1806         /* NetFileClose                            */
1807         /*******************************************/
1808
1809         [nopush,nopull] NET_API_STATUS NetFileClose(
1810                 [in] string server_name,
1811                 [in] uint32 fileid
1812                 );
1813
1814         /*******************************************/
1815         /* NetFileGetInfo                          */
1816         /*******************************************/
1817
1818         typedef struct {
1819                 uint32 fi2_id;
1820         } FILE_INFO_2;
1821
1822         typedef struct {
1823                 uint32 fi3_id;
1824                 uint32 fi3_permissions;
1825                 uint32 fi3_num_locks;
1826                 string fi3_pathname;
1827                 string fi3_username;
1828         } FILE_INFO_3;
1829
1830         [nopush,nopull] NET_API_STATUS NetFileGetInfo(
1831                 [in] string server_name,
1832                 [in] uint32 fileid,
1833                 [in] uint32 level,
1834                 [out] uint8 **buffer
1835                 );
1836
1837         /*******************************************/
1838         /* NetFileEnum                             */
1839         /*******************************************/
1840
1841         [nopush,nopull] NET_API_STATUS NetFileEnum(
1842                 [in] string server_name,
1843                 [in] string base_path,
1844                 [in] string user_name,
1845                 [in] uint32 level,
1846                 [out] uint8 **buffer,
1847                 [in] uint32 prefmaxlen,
1848                 [out] uint32 *entries_read,
1849                 [out] uint32 *total_entries,
1850                 [in,out] uint32 *resume_handle
1851                 );
1852 }