fixed country code field in samr_UserInfo5
[samba.git] / source / librpc / idl / samr.idl
1 /*
2   samr interface definition
3
4 */
5
6 /*
7   Thanks to Todd Sabin for some information from his samr.idl in acltools
8 */
9
10 [ uuid(12345778-1234-abcd-ef00-0123456789ac),
11   version(1.0),
12   pointer_default(unique)
13 ] interface samr
14 {
15         /******************/
16         /* Function: 0x00 */
17         NTSTATUS samr_Connect (
18                 /* notice the lack of [string] */
19                 [in]       uint16 *system_name,
20                 [in]       uint32 access_mask,
21                 [out,ref]  policy_handle *handle
22                 );
23
24
25         /******************/
26         /* Function: 0x01 */
27         NTSTATUS samr_Close (
28                 [in,out,ref]  policy_handle *handle
29                 );
30
31         /******************/
32         /* Function: 0x02 */
33         NTSTATUS samr_SetSecurity ();
34
35         /******************/
36         /* Function: 0x03 */
37
38         typedef struct {
39                 uint32 sd_size;
40                 [subcontext] security_descriptor *sd;
41         } samr_SdBuf;
42
43         NTSTATUS samr_QuerySecurity (
44                 [in,ref]          policy_handle *handle,
45                 [in]              uint32 sec_info,
46                 [out]             samr_SdBuf *sdbuf
47                 );
48
49         /******************/
50         /* Function: 0x04 */
51         NTSTATUS samr_Shutdown ();
52
53         /******************/
54         /* Function: 0x05 */
55         typedef struct {
56                 [value(2*strlen_m(r->name))] uint16 name_len;
57                 [value(2*strlen_m(r->name))] uint16 name_size;
58                 unistr_noterm *name;
59         } samr_Name;    
60
61         NTSTATUS samr_LookupDomain (
62                 [in,ref]  policy_handle *handle,                
63                 [in,ref]  samr_Name *domain,
64                 [out]     dom_sid2 *sid
65                 );
66
67
68         /******************/
69         /* Function: 0x06 */
70
71         typedef struct {
72                 uint32 idx;
73                 samr_Name name;
74         } samr_SamEntry;
75
76         typedef struct {
77                 uint32 count;
78                 [size_is(count)] samr_SamEntry *entries;
79         } samr_SamArray;
80
81         NTSTATUS samr_EnumDomains (
82                 [in,ref]      policy_handle *handle,
83                 [in,out,ref]  uint32 *resume_handle,
84                 [in]          uint32 buf_size,
85                 [out]         samr_SamArray *sam,
86                 [out,ref]     uint32 *num_entries
87                 );
88
89
90         /************************/
91         /* Function    0x07     */
92         NTSTATUS samr_OpenDomain(
93                 [in,ref]      policy_handle *handle,
94                 [in]          uint32 access_mask,
95                 [in,ref]      dom_sid2 *sid,
96                 [out,ref]     policy_handle *domain_handle
97                 );
98
99         /************************/
100         /* Function    0x08     */
101
102         typedef struct {
103                 uint16 min_length_password;
104                 uint16 password_history;
105                 uint32 flag;
106                 NTTIME expire;
107                 NTTIME min_passwordage;
108         } samr_DomInfo1;
109
110         typedef struct {
111                 HYPER_T force_logoff_time;
112                 samr_Name unknown1;
113                 samr_Name domain;  /* domain name */
114                 samr_Name primary; /* PDC name if this is a BDC */
115                 HYPER_T sequence_num;
116                 uint32 unknown2;
117                 uint32 role;
118                 uint32 unknown3;
119                 uint32 num_users;
120                 uint32 num_groups;
121                 uint32 num_aliases;
122         } samr_DomInfo2;
123
124         typedef struct {
125                 HYPER_T force_logoff_time;
126         } samr_DomInfo3;
127
128         typedef struct {
129                 samr_Name unknown;
130         } samr_DomInfo4;
131
132         typedef struct {
133                 samr_Name domain;
134         } samr_DomInfo5;
135
136         typedef struct {
137                 samr_Name primary;
138         } samr_DomInfo6;
139
140         typedef struct {
141                 uint32 role;
142         } samr_DomInfo7;
143
144         typedef struct {
145                 HYPER_T sequence_num;
146                 NTTIME last_xxx_time;
147         } samr_DomInfo8;
148
149         typedef struct {
150                 uint32 unknown;
151         } samr_DomInfo9;
152
153         typedef struct {
154                 HYPER_T force_logoff_time;
155                 samr_Name unknown1;
156                 samr_Name domain;
157                 samr_Name primary;
158                 HYPER_T sequence_num;
159                 uint32 unknown2;
160                 uint32 role;
161                 uint32 unknown3;
162                 uint32 num_users;
163                 uint32 num_groups;
164                 uint32 num_aliases;
165                 HYPER_T lockout_duration;
166                 HYPER_T lockout_window;
167                 uint16 lockout_threshold;
168         } samr_DomInfo11;
169
170         typedef struct {
171                 HYPER_T lockout_duration;
172                 HYPER_T lockout_window;
173                 uint16 lockout_threshold;
174         } samr_DomInfo12;
175
176         typedef struct {
177                 HYPER_T sequence_num;
178                 NTTIME last_xxx_time;
179                 uint32 unknown1;
180                 uint32 unknown2;
181         } samr_DomInfo13;
182
183         typedef union {
184                 case(1) samr_DomInfo1 info1;
185                 case(2) samr_DomInfo2 info2;
186                 case(3) samr_DomInfo3 info3;
187                 case(4) samr_DomInfo4 info4;
188                 case(5) samr_DomInfo5 info5;
189                 case(6) samr_DomInfo6 info6;
190                 case(7) samr_DomInfo7 info7;
191                 case(8) samr_DomInfo8 info8;
192                 case(9) samr_DomInfo9 info9;
193                 case(11) samr_DomInfo11 info11;
194                 case(12) samr_DomInfo12 info12;
195                 case(13) samr_DomInfo13 info13;
196         } samr_DomainInfo;
197
198         NTSTATUS samr_QueryDomainInfo(
199                 [in,ref]      policy_handle *handle,
200                 [in]          uint16 level,
201                 [out,switch_is(level)] samr_DomainInfo *info
202                 );
203
204         /************************/
205         /* Function    0x09     */
206         NTSTATUS samr_SET_DOMAIN_INFO();
207
208         /************************/
209         /* Function    0x0a     */
210         NTSTATUS samr_CREATE_DOM_GROUP();
211
212         /************************/
213         /* Function    0x0b     */
214         NTSTATUS samr_EnumDomainGroups(
215                 [in,ref]      policy_handle *handle,
216                 [in,out,ref]  uint32 *resume_handle,
217                 [in]          uint32 max_size,
218                 [out]         samr_SamArray *sam,
219                 [out,ref]     uint32 num_entries
220                 );
221
222         /************************/
223         /* Function    0x0c     */
224         NTSTATUS samr_CreateUser(
225                 [in,ref]      policy_handle *handle,
226                 [in,ref]      samr_Name *username,
227                 [in]          uint32 access_mask,
228                 [out,ref]     policy_handle *acct_handle,
229                 [out,ref]     uint32 *rid
230                 );
231
232         /************************/
233         /* Function    0x0d     */
234         NTSTATUS samr_EnumDomainUsers(
235                 [in,ref]      policy_handle *handle,
236                 [in,out,ref]  uint32 *resume_handle,
237                 [in]          uint32 acct_flags,
238                 [in]          uint32 max_size,
239                 [out]         samr_SamArray *sam,
240                 [out,ref]     uint32 num_entries
241                 );
242
243         /************************/
244         /* Function    0x0e     */
245         NTSTATUS samr_CREATE_DOM_ALIAS();
246
247         /************************/
248         /* Function    0x0f     */
249         NTSTATUS samr_EnumDomainAliases(
250                 [in,ref]      policy_handle *handle,
251                 [in,out,ref]  uint32 *resume_handle,
252                 [in]          uint32 max_size,
253                 [out]         samr_SamArray *sam,
254                 [out,ref]     uint32 num_entries
255                 );
256
257         /************************/
258         /* Function    0x10     */
259
260         typedef struct {
261                 uint32 count;
262                 [size_is(count)] dom_sid2 *sids;
263         } samr_Sids;
264
265         typedef struct {
266                 uint32 count;
267                 [size_is(count)] uint32 *rids;
268         } samr_Rids;
269
270         NTSTATUS samr_GetAliasMembership(
271                 [in,ref]      policy_handle *handle,
272                 [in]          samr_Sids *sids,
273                 [out]         samr_Rids *rids
274                 );
275
276         /************************/
277         /* Function    0x11     */
278         NTSTATUS samr_LOOKUP_NAMES();
279
280         /************************/
281         /* Function    0x12     */
282         NTSTATUS samr_LOOKUP_RIDS();
283
284         /************************/
285         /* Function    0x13     */
286         NTSTATUS samr_OpenGroup(
287                 [in,ref]      policy_handle *handle,
288                 [in]          uint32 access_mask,
289                 [in]          uint32 rid,
290                 [out,ref]     policy_handle *acct_handle
291                 );
292
293
294         /************************/
295         /* Function    0x14     */
296
297         typedef struct {
298                 samr_Name name;
299                 uint32 unknown;
300                 uint32 num_members;
301                 samr_Name description;
302         } samr_GroupInfoAll;
303
304         typedef struct {
305                 samr_Name Name;
306         } samr_GroupInfoName;
307
308         typedef struct {
309                 uint32 unknown;
310         } samr_GroupInfoX;
311
312         typedef struct {
313                 samr_Name description;
314         } samr_GroupInfoDesciption;
315
316         typedef union {
317                 case(1) samr_GroupInfoAll all;
318                 case(2) samr_GroupInfoName name;
319                 case(3) samr_GroupInfoX unknown;
320                 case(4) samr_GroupInfoDesciption description;
321         } samr_GroupInfo;
322
323         NTSTATUS samr_QueryGroupInfo(
324                 [in,ref]                  policy_handle *handle,
325                 [in]                      uint16 level,
326                 [out,switch_is(level)]    samr_GroupInfo *info
327                 );
328
329         /************************/
330         /* Function    0x15     */
331         NTSTATUS samr_SET_GROUPINFO();
332
333         /************************/
334         /* Function    0x16     */
335         NTSTATUS samr_ADD_GROUPMEM();
336
337         /************************/
338         /* Function    0x17     */
339         NTSTATUS samr_DELETE_DOM_GROUP();
340
341         /************************/
342         /* Function    0x18     */
343         NTSTATUS samr_DEL_GROUPMEM();
344
345         /************************/
346         /* Function    0x19     */
347         NTSTATUS samr_QUERY_GROUPMEM();
348
349         /************************/
350         /* Function    0x1a     */
351         NTSTATUS samr_SET_MEMBER_ATTRIBUTES_OF_GROUP();
352
353
354         /************************/
355         /* Function    0x1b     */
356         NTSTATUS samr_OpenAlias (
357                 [in,ref]      policy_handle *handle,
358                 [in]          uint32 access_mask,
359                 [in]          uint32 rid,
360                 [out,ref]     policy_handle *acct_handle
361                 );
362
363
364         /************************/
365         /* Function    0x1c     */
366
367         typedef struct {
368                 samr_Name name;
369                 uint32 num_members;
370                 samr_Name description;
371         } samr_AliasInfoAll;
372
373         typedef struct {
374                 samr_Name name;
375         } samr_AliasInfoName;
376
377         typedef struct {
378                 samr_Name description;
379         } samr_AliasInfoDescription;
380
381         typedef union {
382                 case(1) samr_AliasInfoAll all;
383                 case(2) samr_AliasInfoName name;
384                 case(3) samr_AliasInfoDescription description;
385         } samr_AliasInfo;
386
387         NTSTATUS samr_QueryAliasInfo(
388                 [in,ref]                  policy_handle *handle,
389                 [in]                      uint16 level,
390                 [out,switch_is(level)]    samr_AliasInfo *info
391                 );
392
393         /************************/
394         /* Function    0x1d     */
395         NTSTATUS samr_SET_ALIASINFO();
396
397         /************************/
398         /* Function    0x1e     */
399         NTSTATUS samr_DELETE_DOM_ALIAS();
400
401         /************************/
402         /* Function    0x1f     */
403         NTSTATUS samr_ADD_ALIASMEM();
404
405         /************************/
406         /* Function    0x20     */
407         NTSTATUS samr_DEL_ALIASMEM();
408
409         /************************/
410         /* Function    0x21     */
411         NTSTATUS samr_GET_MEMBERS_IN_ALIAS();
412
413         /************************/
414         /* Function    0x22     */
415         NTSTATUS samr_OpenUser(
416                 [in,ref]      policy_handle *handle,
417                 [in]          uint32 access_mask,
418                 [in]          uint32 rid,
419                 [out,ref]     policy_handle *acct_handle
420                 );
421
422         /************************/
423         /* Function    0x23     */
424         NTSTATUS samr_DeleteUser(
425                 [in,out,ref]   policy_handle *handle
426                 );
427
428         /************************/
429         /* Function    0x24     */
430         typedef struct {
431                 samr_Name username;
432                 samr_Name full_name;
433                 uint32 primary_group_rid;
434                 samr_Name description;
435                 samr_Name comment;
436         } samr_UserInfo1;
437
438         typedef struct {
439                 samr_Name comment;
440                 uint32 unknown1;
441                 uint32 unknown2;
442                 uint16 country_code;
443                 uint16 code_page;
444         } samr_UserInfo2;
445
446         typedef struct {
447                 samr_Name username;
448                 samr_Name full_name;
449                 uint32 Rid;
450                 uint32 primary_group_rid;
451                 samr_Name home_directory;
452                 samr_Name home_drive;
453                 samr_Name logon_script;
454                 samr_Name profile;
455                 samr_Name workstations;
456                 NTTIME last_logon;
457                 NTTIME last_logoff;
458                 NTTIME last_pwd_change;
459                 NTTIME allow_pwd_change;
460                 NTTIME force_pwd_change;
461                 uint32 units_per_week;
462                 [size_is(1260), length_is(units_per_week/8)] uint8 *logon_hours;
463                 uint16 bad_pwd_count;
464                 uint16 num_logons;
465                 uint32 acct_flags;
466         } samr_UserInfo3;
467
468         typedef struct {
469                 uint32 units_per_week;
470                 [size_is(1260), length_is(units_per_week/8)] uint8 *logon_hours;
471         } samr_UserInfo4;
472
473         typedef struct {
474                 samr_Name username;
475                 samr_Name full_name;
476                 uint32 rid;
477                 uint32 primary_group_rid;
478                 samr_Name home_directory;
479                 samr_Name home_drive;
480                 samr_Name logon_script;
481                 samr_Name profile;
482                 samr_Name descriptiom;
483                 samr_Name workstations;
484                 NTTIME last_logon;
485                 NTTIME last_logoff;
486                 uint32 units_per_week;
487                 [size_is(1260), length_is(units_per_week/8)] uint8 *logon_hours;
488                 uint16 bad_pwd_count;
489                 uint16 num_logons;
490                 NTTIME last_pwd_change;
491                 NTTIME acct_expiry;
492                 uint32 acct_flags;
493         } samr_UserInfo5;
494
495         typedef struct {
496                 samr_Name username;
497                 samr_Name full_name;
498         } samr_UserInfo6;
499
500         typedef struct {
501                 samr_Name username;
502         } samr_UserInfo7;
503
504         typedef struct {
505                 samr_Name full_name;
506         } samr_UserInfo8;
507
508         typedef struct {
509                 uint32 PrimaryGroupRid;
510         } samr_UserInfo9;
511
512         typedef struct {
513                 samr_Name home_dir;
514                 samr_Name home_drive;
515         } samr_UserInfo10;
516
517         typedef struct {
518                 samr_Name logon_script;
519         } samr_UserInfo11;
520
521         typedef struct {
522                 samr_Name profile;
523         } samr_UserInfo12;
524
525         typedef struct {
526                 samr_Name descriptiom;
527         } samr_UserInfo13;
528
529         typedef struct {
530                 samr_Name workstations;
531         } samr_UserInfo14;
532
533         typedef struct {
534                 uint32 acct_flags;
535         } samr_UserInfo16;
536         
537         typedef struct {
538                 NTTIME acct_expiry;
539         } samr_UserInfo17;
540
541         typedef struct {
542                 samr_Name callback;
543         } samr_UserInfo20;
544
545         typedef struct {
546                 NTTIME last_logon;
547                 NTTIME last_logoff;
548                 NTTIME last_pwd_change;
549                 NTTIME acct_expiry;
550                 NTTIME allow_pwd_change;
551                 NTTIME force_pwd_change;
552                 samr_Name username;
553                 samr_Name full_name;
554                 samr_Name home_dir;
555                 samr_Name home_drive;
556                 samr_Name logon_script;
557                 samr_Name profile;
558                 samr_Name description;
559                 samr_Name workstations;
560                 samr_Name comment;
561                 samr_Name callback;
562                 samr_Name unknown1;
563                 samr_Name unknown2;
564                 samr_Name unknown3;
565                 uint32 buf_count;
566                 [size_is(buf_count)] uint8 *buffer;
567                 uint32 rid;
568                 uint32 primary_group_rid;
569                 uint32 acct_flags;
570                 uint32 fields_present;
571                 uint32 units_per_week;
572                 [size_is(1260), length_is(units_per_week/8)] uint8 *logon_hours;
573                 uint16 bad_pwd_count;
574                 uint16 num_logons;
575                 uint16 country_code;
576                 uint16 code_page;
577                 uint8  nt_pwd_set;
578                 uint8  lm_pwd_set;
579                 uint8  expired_flag;
580                 uint8  unknown4;
581         } samr_UserInfo21;
582
583         typedef union {
584                 case(1) samr_UserInfo1 info1;
585                 case(2) samr_UserInfo2 info2;
586                 case(3) samr_UserInfo3 info3;
587                 case(4) samr_UserInfo4 info4;
588                 case(5) samr_UserInfo5 info5;
589                 case(6) samr_UserInfo6 info6;
590                 case(7) samr_UserInfo7 info7;
591                 case(8) samr_UserInfo8 info8;
592                 case(9) samr_UserInfo9 info9;
593                 case(10) samr_UserInfo10 info10;
594                 case(11) samr_UserInfo11 info11;
595                 case(12) samr_UserInfo12 info12;
596                 case(13) samr_UserInfo13 info13;
597                 case(14) samr_UserInfo14 info14;
598                 case(16) samr_UserInfo16 info16;
599                 case(17) samr_UserInfo17 info17;
600                 case(20) samr_UserInfo20 info20;
601                 case(21) samr_UserInfo21 info21;
602         } samr_UserInfo;
603
604         NTSTATUS samr_QueryUserInfo(
605                 [in,ref]                  policy_handle *handle,
606                 [in]                      uint16 level,
607                 [out,switch_is(level)]    samr_UserInfo *info
608                 );
609
610         /************************/
611         /* Function    0x25     */
612         NTSTATUS samr_SET_USERINFO();
613
614         /************************/
615         /* Function    0x26     */
616         NTSTATUS samr_CHANGE_PASSWORD_USER();
617
618         /************************/
619         /* Function    0x27     */
620         NTSTATUS samr_GET_GROUPS_FOR_USER();
621
622         /************************/
623         /* Function    0x28     */
624         NTSTATUS samr_QUERY_DISPINFO();
625
626         /************************/
627         /* Function    0x29     */
628         NTSTATUS samr_GET_DISPLAY_ENUMERATION_INDEX();
629
630         /************************/
631         /* Function    0x2a     */
632         NTSTATUS samr_TEST_PRIVATE_FUNCTIONS_DOMAIN();
633
634         /************************/
635         /* Function    0x2b     */
636         NTSTATUS samr_TEST_PRIVATE_FUNCTIONS_USER();
637
638         /************************/
639         /* Function    0x2c     */
640         NTSTATUS samr_GET_USRDOM_PWINFO();
641
642         /************************/
643         /* Function    0x2d     */
644         NTSTATUS samr_REMOVE_MEMBER_FROM_FOREIGN_DOMAIN();
645
646         /************************/
647         /* Function    0x2e     */
648         NTSTATUS samr_QUERY_INFORMATION_DOMAIN2();
649
650         /************************/
651         /* Function    0x2f     */
652         NTSTATUS samr_QUERY_INFORMATION_USER2();
653
654         /************************/
655         /* Function    0x30     */
656         NTSTATUS samr_QUERY_DISPINFO2();
657
658         /************************/
659         /* Function    0x31     */
660         NTSTATUS samr_GET_DISPLAY_ENUMERATION_INDEX2();
661
662         /************************/
663         /* Function    0x32     */
664         NTSTATUS samr_CREATE_USER2_IN_DOMAIN();
665
666         /************************/
667         /* Function    0x33     */
668         NTSTATUS samr_QUERY_DISPINFO3();
669
670         /************************/
671         /* Function    0x34     */
672         NTSTATUS samr_ADD_MULTIPLE_MEMBERS_TO_ALIAS();
673
674         /************************/
675         /* Function    0x35     */
676         NTSTATUS samr_REMOVE_MULTIPLE_MEMBERS_FROM_ALIAS();
677
678         /************************/
679         /* Function    0x36     */
680         NTSTATUS samr_OEM_CHANGE_PASSWORD_USER2();
681
682         /************************/
683         /* Function    0x37     */
684         NTSTATUS samr_UNICODE_CHANGE_PASSWORD_USER2();
685
686         /************************/
687         /* Function    0x38     */
688         NTSTATUS samr_GET_DOM_PWINFO();
689
690         /************************/
691         /* Function    0x39     */
692         NTSTATUS samr_CONNECT2();
693
694         /************************/
695         /* Function    0x3a     */
696         NTSTATUS samr_SET_USERINFO2();
697
698         /************************/
699         /* Function    0x3b     */
700         NTSTATUS samr_SET_BOOT_KEY_INFORMATION();
701
702         /************************/
703         /* Function    0x3c     */
704         NTSTATUS samr_GET_BOOT_KEY_INFORMATION();
705
706         /************************/
707         /* Function    0x3d     */
708         NTSTATUS samr_CONNECT3();
709
710         /************************/
711         /* Function    0x3e     */
712         NTSTATUS samr_Connect4(
713                 [in] unistr *system_name,
714                 [in] uint32 unknown,
715                 [in] uint32 access_mask,
716                 [out,ref]  policy_handle *handle
717                 );
718
719         /************************/
720         /* Function    0x3f     */
721         NTSTATUS samr_UNICODE_CHANGE_PASSWORD_USER3();
722
723         /************************/
724         /* Function    0x40      */
725         NTSTATUS samr_CONNECT5();
726
727         /************************/
728         /* Function    0x41     */
729         NTSTATUS samr_RID_TO_SID();
730
731         /************************/
732         /* Function    0x42     */
733         NTSTATUS samr_SET_DSRM_PASSWORD();
734
735         /************************/
736         /* Function    0x43     */
737         NTSTATUS samr_VALIDATE_PASSWORD();
738
739 }