added a bunch of alias functions in samr.idl based on work by Kai.
[samba.git] / source / librpc / idl / samr.idl
1 #include "idl_types.h"
2
3 /*
4   samr interface definition
5 */
6
7 /*
8   Thanks to Todd Sabin for some information from his samr.idl in acltools
9 */
10
11 [ uuid(12345778-1234-abcd-ef00-0123456789ac),
12   version(1.0),
13   pointer_default(unique)
14 ] interface samr
15 {
16         /******************/
17         /* Function: 0x00 */
18         NTSTATUS samr_Connect (
19                 /* notice the lack of [string] */
20                 [in]       uint16 *system_name,
21                 [in]       uint32 access_mask,
22                 [out,ref]  policy_handle *handle
23                 );
24
25
26         /******************/
27         /* Function: 0x01 */
28         NTSTATUS samr_Close (
29                 [in,out,ref]  policy_handle *handle
30                 );
31
32         /******************/
33         /* Function: 0x02 */
34         NTSTATUS samr_SetSecurity ();
35
36         /******************/
37         /* Function: 0x03 */
38
39         typedef struct {
40                 [value(ndr_size_security_descriptor(r->sd))] uint32 sd_size;
41                 [subcontext(4)] security_descriptor *sd;
42         } samr_SdBuf;
43
44         NTSTATUS samr_QuerySecurity (
45                 [in,ref]          policy_handle *handle,
46                 [in]              uint32 sec_info,
47                 [out]             samr_SdBuf *sdbuf
48                 );
49
50         /******************/
51         /* Function: 0x04 */
52         NTSTATUS samr_Shutdown ();
53
54         /******************/
55         /* Function: 0x05 */
56         typedef struct {
57                 [value(2*strlen_m(r->name))] uint16 name_len;
58                 [value(r->name_len)] uint16 name_size;
59                 unistr_noterm *name;
60         } samr_Name;    
61
62         NTSTATUS samr_LookupDomain (
63                 [in,ref]  policy_handle *handle,                
64                 [in,ref]  samr_Name *domain,
65                 [out]     dom_sid2 *sid
66                 );
67
68
69         /******************/
70         /* Function: 0x06 */
71
72         typedef struct {
73                 uint32 idx;
74                 samr_Name name;
75         } samr_SamEntry;
76
77         typedef struct {
78                 uint32 count;
79                 [size_is(count)] samr_SamEntry *entries;
80         } samr_SamArray;
81
82         NTSTATUS samr_EnumDomains (
83                 [in,ref]      policy_handle *handle,
84                 [in,out,ref]  uint32 *resume_handle,
85                 [in]          uint32 buf_size,
86                 [out]         samr_SamArray *sam,
87                 [out]         uint32 num_entries
88                 );
89
90
91         /************************/
92         /* Function    0x07     */
93         NTSTATUS samr_OpenDomain(
94                 [in,ref]      policy_handle *handle,
95                 [in]          uint32 access_mask,
96                 [in,ref]      dom_sid2 *sid,
97                 [out,ref]     policy_handle *domain_handle
98                 );
99
100         /************************/
101         /* Function    0x08     */
102
103         typedef struct {
104                 uint16 min_length_password;
105                 uint16 password_history;
106                 uint32 flag;
107                 NTTIME expire;
108                 NTTIME min_passwordage;
109         } samr_DomInfo1;
110
111         typedef struct {
112                 ULONG8 force_logoff_time;
113                 samr_Name unknown1;
114                 samr_Name domain;  /* domain name */
115                 samr_Name primary; /* PDC name if this is a BDC */
116                 HYPER_T sequence_num;
117                 uint32 unknown2;
118                 uint32 role;
119                 uint32 unknown3;
120                 uint32 num_users;
121                 uint32 num_groups;
122                 uint32 num_aliases;
123         } samr_DomInfo2;
124
125         typedef struct {
126                 ULONG8 force_logoff_time;
127         } samr_DomInfo3;
128
129         typedef struct {
130                 samr_Name unknown;
131         } samr_DomInfo4;
132
133         typedef struct {
134                 samr_Name domain;
135         } samr_DomInfo5;
136
137         typedef struct {
138                 samr_Name primary;
139         } samr_DomInfo6;
140
141         typedef struct {
142                 uint32 role;
143         } samr_DomInfo7;
144
145         typedef struct {
146                 HYPER_T sequence_num;
147                 NTTIME last_xxx_time;
148         } samr_DomInfo8;
149
150         typedef struct {
151                 uint32 unknown;
152         } samr_DomInfo9;
153
154         typedef struct {
155                 ULONG8 force_logoff_time;
156                 samr_Name unknown1;
157                 samr_Name domain;
158                 samr_Name primary;
159                 HYPER_T sequence_num;
160                 uint32 unknown2;
161                 uint32 role;
162                 uint32 unknown3;
163                 uint32 num_users;
164                 uint32 num_groups;
165                 uint32 num_aliases;
166                 HYPER_T lockout_duration;
167                 HYPER_T lockout_window;
168                 uint16 lockout_threshold;
169         } samr_DomInfo11;
170
171         typedef struct {
172                 HYPER_T lockout_duration;
173                 HYPER_T lockout_window;
174                 uint16 lockout_threshold;
175         } samr_DomInfo12;
176
177         typedef struct {
178                 HYPER_T sequence_num;
179                 NTTIME last_xxx_time;
180                 uint32 unknown1;
181                 uint32 unknown2;
182         } samr_DomInfo13;
183
184         typedef union {
185                 [case(1)] samr_DomInfo1 info1;
186                 [case(2)] samr_DomInfo2 info2;
187                 [case(3)] samr_DomInfo3 info3;
188                 [case(4)] samr_DomInfo4 info4;
189                 [case(5)] samr_DomInfo5 info5;
190                 [case(6)] samr_DomInfo6 info6;
191                 [case(7)] samr_DomInfo7 info7;
192                 [case(8)] samr_DomInfo8 info8;
193                 [case(9)] samr_DomInfo9 info9;
194                 [case(11)] samr_DomInfo11 info11;
195                 [case(12)] samr_DomInfo12 info12;
196                 [case(13)] samr_DomInfo13 info13;
197         } samr_DomainInfo;
198
199         NTSTATUS samr_QueryDomainInfo(
200                 [in,ref]      policy_handle *handle,
201                 [in]          uint16 level,
202                 [out,switch_is(level)] samr_DomainInfo *info
203                 );
204
205         /************************/
206         /* Function    0x09     */
207         NTSTATUS samr_SET_DOMAIN_INFO();
208
209         /************************/
210         /* Function    0x0a     */
211         NTSTATUS samr_CREATE_DOM_GROUP();
212
213         /************************/
214         /* Function    0x0b     */
215         NTSTATUS samr_EnumDomainGroups(
216                 [in,ref]      policy_handle *handle,
217                 [in,out,ref]  uint32 *resume_handle,
218                 [in]          uint32 max_size,
219                 [out]         samr_SamArray *sam,
220                 [out]         uint32 num_entries
221                 );
222
223         /************************/
224         /* Function    0x0c     */
225         NTSTATUS samr_CreateUser(
226                 [in,ref]      policy_handle *handle,
227                 [in,ref]      samr_Name *username,
228                 [in]          uint32 access_mask,
229                 [out,ref]     policy_handle *acct_handle,
230                 [out,ref]     uint32 *rid
231                 );
232
233         /************************/
234         /* Function    0x0d     */
235         NTSTATUS samr_EnumDomainUsers(
236                 [in,ref]      policy_handle *handle,
237                 [in,out,ref]  uint32 *resume_handle,
238                 [in]          uint32 acct_flags,
239                 [in]          uint32 max_size,
240                 [out]         samr_SamArray *sam,
241                 [out]         uint32 num_entries
242                 );
243
244         /************************/
245         /* Function    0x0e     */
246         NTSTATUS samr_CreateDomAlias(
247                 [in,ref]      policy_handle *handle,
248                 [in,ref]      samr_Name     *aliasname,
249                 [in]          uint32         access_mask,
250                 [out,ref]     policy_handle *acct_handle,
251                 [out,ref]     uint32        *rid
252                 );
253
254         /************************/
255         /* Function    0x0f     */
256         NTSTATUS samr_EnumDomainAliases(
257                 [in,ref]      policy_handle *handle,
258                 [in,out,ref]  uint32 *resume_handle,
259                 [in]          uint32 max_size,
260                 [out]         samr_SamArray *sam,
261                 [out]         uint32 num_entries
262                 );
263
264         /************************/
265         /* Function    0x10     */
266
267         typedef struct {
268                 uint32 count;
269                 [size_is(count)] uint32 *ids;
270         } samr_Ids;
271
272         NTSTATUS samr_GetAliasMembership(
273                 [in,ref]      policy_handle *handle,
274                 [in,ref]  lsa_SidArray  *sids,
275                 [out]         samr_Ids *rids
276                 );
277
278         /************************/
279         /* Function    0x11     */
280
281         NTSTATUS samr_LookupNames(
282                 [in,ref]      policy_handle *handle,
283                 [in]          uint32 num_names,
284                 [in,ref,size_is(1000),length_is(num_names)] samr_Name *names,
285                 [out]         samr_Ids rids,
286                 [out]         samr_Ids types
287                 );
288
289
290         /************************/
291         /* Function    0x12     */
292
293         typedef struct {
294                 uint32 count;
295                 [size_is(count)] samr_Name *names;
296         } samr_Names;
297
298         NTSTATUS samr_LookupRids(
299                 [in,ref]      policy_handle *handle,
300                 [in]          uint32 num_rids,
301                 [in,ref,size_is(1000),length_is(num_rids)] uint32 *rids,
302                 [out]         samr_Names names,
303                 [out]         samr_Ids types
304                 );
305
306         /************************/
307         /* Function    0x13     */
308         NTSTATUS samr_OpenGroup(
309                 [in,ref]      policy_handle *handle,
310                 [in]          uint32 access_mask,
311                 [in]          uint32 rid,
312                 [out,ref]     policy_handle *acct_handle
313                 );
314
315
316         /************************/
317         /* Function    0x14     */
318
319         typedef struct {
320                 samr_Name name;
321                 uint32 unknown;
322                 uint32 num_members;
323                 samr_Name description;
324         } samr_GroupInfoAll;
325
326         typedef struct {
327                 uint32 unknown;
328         } samr_GroupInfoX;
329
330         typedef struct {
331                 samr_Name description;
332         } samr_GroupInfoDesciption;
333
334         typedef enum {
335                 GroupInfoAll = 1,
336                 GroupInfoName,
337                 GroupInfoX,
338                 GroupInfoDescription
339         } GroupInfo;
340
341         typedef union {
342                 [case(GroupInfoAll)]         samr_GroupInfoAll    all;
343                 [case(GroupInfoName)]        samr_Name            name;
344                 [case(GroupInfoX)]           samr_GroupInfoX      unknown;
345                 [case(GroupInfoDescription)] samr_Name            description;
346         } samr_GroupInfo;
347
348         NTSTATUS samr_QueryGroupInfo(
349                 [in,ref]                  policy_handle *handle,
350                 [in]                      uint16 level,
351                 [out,switch_is(level)]    samr_GroupInfo *info
352                 );
353
354         /************************/
355         /* Function    0x15     */
356         NTSTATUS samr_SET_GROUPINFO();
357
358         /************************/
359         /* Function    0x16     */
360         NTSTATUS samr_ADD_GROUPMEM();
361
362         /************************/
363         /* Function    0x17     */
364         NTSTATUS samr_DELETE_DOM_GROUP();
365
366         /************************/
367         /* Function    0x18     */
368         NTSTATUS samr_DEL_GROUPMEM();
369
370         /************************/
371         /* Function    0x19     */
372         NTSTATUS samr_QUERY_GROUPMEM();
373
374         /************************/
375         /* Function    0x1a     */
376         NTSTATUS samr_SET_MEMBER_ATTRIBUTES_OF_GROUP();
377
378
379         /************************/
380         /* Function    0x1b     */
381         NTSTATUS samr_OpenAlias (
382                 [in,ref]      policy_handle *handle,
383                 [in]          uint32 access_mask,
384                 [in]          uint32 rid,
385                 [out,ref]     policy_handle *acct_handle
386                 );
387
388
389         /************************/
390         /* Function    0x1c     */
391
392         typedef struct {
393                 samr_Name name;
394                 uint32 num_members;
395                 samr_Name description;
396         } samr_AliasInfoAll;
397
398         typedef union {
399                 [case(1)] samr_AliasInfoAll all;
400                 [case(2)] samr_Name name;
401                 [case(3)] samr_Name description;
402         } samr_AliasInfo;
403
404         NTSTATUS samr_QueryAliasInfo(
405                 [in,ref]                  policy_handle *handle,
406                 [in]                      uint16 level,
407                 [out,switch_is(level)]    samr_AliasInfo *info
408                 );
409
410         /************************/
411         /* Function    0x1d     */
412         NTSTATUS samr_SetAliasInfo(
413                 [in,ref]                  policy_handle  *handle,
414                 [in]                      uint16          level,
415                 [in,switch_is(level)]     samr_AliasInfo  info
416                 );
417
418         /************************/
419         /* Function    0x1e     */
420         NTSTATUS samr_DeleteDomAlias(
421                 [in,out,ref]  policy_handle *handle
422                 );
423
424         /************************/
425         /* Function    0x1f     */
426         NTSTATUS samr_AddAliasMem(
427                 [in,ref]  policy_handle *handle,
428                 [in,ref]  dom_sid2      *sid
429                 );
430
431         /************************/
432         /* Function    0x20     */
433         NTSTATUS samr_DelAliasMem(
434                 [in,ref] policy_handle *handle,
435                 [in,ref] dom_sid2      *sid
436                 );
437
438         /************************/
439         /* Function    0x21     */
440         NTSTATUS samr_GetMembersInAlias(
441                 [in,ref]   policy_handle *handle,
442                 [out,ref]  lsa_SidArray    *sids
443                 );
444
445         /************************/
446         /* Function    0x22     */
447         NTSTATUS samr_OpenUser(
448                 [in,ref]      policy_handle *handle,
449                 [in]          uint32 access_mask,
450                 [in]          uint32 rid,
451                 [out,ref]     policy_handle *acct_handle
452                 );
453
454         /************************/
455         /* Function    0x23     */
456         NTSTATUS samr_DeleteUser(
457                 [in,out,ref]   policy_handle *handle
458                 );
459
460         /************************/
461         /* Function    0x24     */
462         typedef struct {
463                 samr_Name username;
464                 samr_Name full_name;
465                 uint32 primary_gid;
466                 samr_Name description;
467                 samr_Name comment;
468         } samr_UserInfo1;
469
470         typedef struct {
471                 samr_Name comment;
472                 samr_Name unknown; /* settable, but doesn't stick. probably obsolete */
473                 uint16 country_code;
474                 uint16 code_page;
475         } samr_UserInfo2;
476
477         typedef struct {
478                 samr_Name username;
479                 samr_Name full_name;
480                 uint32 Rid;
481                 uint32 primary_gid;
482                 samr_Name home_directory;
483                 samr_Name home_drive;
484                 samr_Name logon_script;
485                 samr_Name profile;
486                 samr_Name workstations;
487                 NTTIME last_logon;
488                 NTTIME last_logoff;
489                 NTTIME last_pwd_change;
490                 NTTIME allow_pwd_change;
491                 NTTIME force_pwd_change;
492                 samr_LogonHours logon_hours;
493                 uint16 bad_pwd_count;
494                 uint16 num_logons;
495                 uint32 acct_flags;
496         } samr_UserInfo3;
497
498         typedef struct {
499                 samr_LogonHours logon_hours;
500         } samr_UserInfo4;
501
502         typedef struct {
503                 samr_Name username;
504                 samr_Name full_name;
505                 uint32 rid;
506                 uint32 primary_gid;
507                 samr_Name home_directory;
508                 samr_Name home_drive;
509                 samr_Name logon_script;
510                 samr_Name profile;
511                 samr_Name description;
512                 samr_Name workstations;
513                 NTTIME last_logon;
514                 NTTIME last_logoff;
515                 samr_LogonHours logon_hours;
516                 uint16 bad_pwd_count;
517                 uint16 num_logons;
518                 NTTIME last_pwd_change;
519                 NTTIME acct_expiry;
520                 uint32 acct_flags;
521         } samr_UserInfo5;
522
523         typedef struct {
524                 samr_Name username;
525                 samr_Name full_name;
526         } samr_UserInfo6;
527
528         typedef struct {
529                 samr_Name username;
530         } samr_UserInfo7;
531
532         typedef struct {
533                 samr_Name full_name;
534         } samr_UserInfo8;
535
536         typedef struct {
537                 uint32 primary_gid;
538         } samr_UserInfo9;
539
540         typedef struct {
541                 samr_Name home_dir;
542                 samr_Name home_drive;
543         } samr_UserInfo10;
544
545         typedef struct {
546                 samr_Name logon_script;
547         } samr_UserInfo11;
548
549         typedef struct {
550                 samr_Name profile;
551         } samr_UserInfo12;
552
553         typedef struct {
554                 samr_Name description;
555         } samr_UserInfo13;
556
557         typedef struct {
558                 samr_Name workstations;
559         } samr_UserInfo14;
560
561         typedef struct {
562                 uint32 acct_flags;
563         } samr_UserInfo16;
564         
565         typedef struct {
566                 NTTIME acct_expiry;
567         } samr_UserInfo17;
568
569         typedef struct {
570                 samr_Name callback;
571         } samr_UserInfo20;
572
573         typedef struct {
574                 NTTIME last_logon;
575                 NTTIME last_logoff;
576                 NTTIME last_pwd_change;
577                 NTTIME acct_expiry;
578                 NTTIME allow_pwd_change;
579                 NTTIME force_pwd_change;
580                 samr_Name username;
581                 samr_Name full_name;
582                 samr_Name home_dir;
583                 samr_Name home_drive;
584                 samr_Name logon_script;
585                 samr_Name profile;
586                 samr_Name description;
587                 samr_Name workstations;
588                 samr_Name comment;
589                 samr_Name callback;
590                 samr_Name unknown1;
591                 samr_Name unknown2;
592                 samr_Name unknown3;
593                 uint32 buf_count;
594                 [size_is(buf_count)] uint8 *buffer;
595                 uint32 rid;
596                 uint32 primary_gid;
597                 uint32 acct_flags;
598                 uint32 fields_present;
599                 samr_LogonHours logon_hours;
600                 uint16 bad_pwd_count;
601                 uint16 num_logons;
602                 uint16 country_code;
603                 uint16 code_page;
604                 uint8  nt_pwd_set;
605                 uint8  lm_pwd_set;
606                 uint8  expired_flag;
607                 uint8  unknown4;
608         } samr_UserInfo21;
609
610         typedef union {
611                 [case(1)] samr_UserInfo1 info1;
612                 [case(2)] samr_UserInfo2 info2;
613                 [case(3)] samr_UserInfo3 info3;
614                 [case(4)] samr_UserInfo4 info4;
615                 [case(5)] samr_UserInfo5 info5;
616                 [case(6)] samr_UserInfo6 info6;
617                 [case(7)] samr_UserInfo7 info7;
618                 [case(8)] samr_UserInfo8 info8;
619                 [case(9)] samr_UserInfo9 info9;
620                 [case(10)] samr_UserInfo10 info10;
621                 [case(11)] samr_UserInfo11 info11;
622                 [case(12)] samr_UserInfo12 info12;
623                 [case(13)] samr_UserInfo13 info13;
624                 [case(14)] samr_UserInfo14 info14;
625                 [case(16)] samr_UserInfo16 info16;
626                 [case(17)] samr_UserInfo17 info17;
627                 [case(20)] samr_UserInfo20 info20;
628                 [case(21)] samr_UserInfo21 info21;
629         } samr_UserInfo;
630
631         NTSTATUS samr_QueryUserInfo(
632                 [in,ref]                  policy_handle *handle,
633                 [in]                      uint16 level,
634                 [out,switch_is(level)]    samr_UserInfo *info
635                 );
636
637
638         /************************/
639         /* Function    0x25     */
640         NTSTATUS samr_SetUserInfo(
641                 [in,ref]                   policy_handle *handle,
642                 [in]                       uint16 level,
643                 [in,ref,switch_is(level)]  samr_UserInfo *info
644                 );
645
646         /************************/
647         /* Function    0x26     */
648         NTSTATUS samr_CHANGE_PASSWORD_USER();
649
650         /************************/
651         /* Function    0x27     */
652
653         typedef struct {
654                 uint32 rid;
655                 uint32 type;
656         } samr_RidType;
657
658         typedef struct {
659                 uint32     count;
660                 [size_is(count)] samr_RidType *rid;
661         } samr_RidArray;
662
663         NTSTATUS samr_GetGroupsForUser(
664                 [in,ref]   policy_handle *handle,
665                 [out]      samr_RidArray  *rids
666                 );
667
668         /************************/
669         /* Function    0x28     */
670
671         typedef struct {
672                 uint32    idx;
673                 uint32    rid;
674                 uint32    acct_flags;
675                 samr_Name account_name;
676                 samr_Name full_name;
677                 samr_Name description;
678         } samr_DispEntryGeneral;
679
680         typedef struct {
681                 uint32 count;
682                 [size_is(count)] samr_DispEntryGeneral *entries;
683         } samr_DispInfoGeneral;
684
685         typedef struct {
686                 uint32    idx;
687                 uint32    rid;
688                 uint32    acct_flags;
689                 samr_Name account_name;
690                 samr_Name description;
691         } samr_DispEntryFull;
692
693         typedef struct {
694                 uint32 count;
695                 [size_is(count)] samr_DispEntryFull *entries;
696         } samr_DispInfoFull;
697
698         typedef struct {
699                 [value(strlen_m(r->name))] uint16 name_len;
700                 [value(strlen_m(r->name))] uint16 name_size;
701                 ascstr *name;
702         } samr_AsciiName;       
703
704         typedef struct {
705                 uint32    idx;
706                 samr_AsciiName account_name;
707         } samr_DispEntryAscii;
708
709         typedef struct {
710                 uint32 count;
711                 [size_is(count)] samr_DispEntryAscii *entries;
712         } samr_DispInfoAscii;
713
714         typedef union {
715                 [case(1)] samr_DispInfoGeneral info1;/* users */
716                 [case(2)] samr_DispInfoFull info2; /* trust accounts? */
717                 [case(3)] samr_DispInfoFull info3; /* groups */
718                 [case(4)] samr_DispInfoAscii info4; /* users */
719                 [case(5)] samr_DispInfoAscii info5; /* groups */
720         } samr_DispInfo;
721
722         NTSTATUS samr_QueryDisplayInfo(
723                 [in,ref]    policy_handle *handle,
724                 [in]        uint16 level,
725                 [in]        uint32 start_idx,
726                 [in]        uint32 max_entries,
727                 [in]        uint32 buf_size,
728                 [out]       uint32 total_size,
729                 [out]       uint32 returned_size,
730                 [out,switch_is(level)] samr_DispInfo info
731                 );
732
733         /************************/
734         /* Function    0x29     */
735         NTSTATUS samr_GET_DISPLAY_ENUMERATION_INDEX();
736
737         /************************/
738         /* Function    0x2a     */
739         NTSTATUS samr_TEST_PRIVATE_FUNCTIONS_DOMAIN();
740
741         /************************/
742         /* Function    0x2b     */
743         NTSTATUS samr_TEST_PRIVATE_FUNCTIONS_USER();
744
745
746         /************************/
747         /* Function    0x2c     */
748
749         /* password properties flags */
750         const uint32 DOMAIN_PASSWORD_COMPLEX         = 0x00000001;
751         const uint32 DOMAIN_PASSWORD_NO_ANON_CHANGE  = 0x00000002;
752         const uint32 DOMAIN_PASSWORD_NO_CLEAR_CHANGE = 0x00000004;
753         const uint32 DOMAIN_PASSWORD_STORE_CLEARTEXT = 0x00000010;
754         const uint32 DOMAIN_REFUSE_PASSWORD_CHANGE   = 0x00000020;
755
756         typedef struct {
757                 uint16 min_pwd_len;
758                 uint32 password_properties;
759         } samr_PwInfo;
760
761         NTSTATUS samr_GetUserPwInfo(
762                 [in,ref]    policy_handle *handle,
763                 [out]       samr_PwInfo info
764                 );
765
766         /************************/
767         /* Function    0x2d     */
768         NTSTATUS samr_REMOVE_MEMBER_FROM_FOREIGN_DOMAIN();
769
770         /************************/
771         /* Function    0x2e     */
772         NTSTATUS samr_QUERY_INFORMATION_DOMAIN2();
773
774         /************************/
775         /* Function    0x2f     */
776         NTSTATUS samr_QUERY_INFORMATION_USER2();
777
778         /************************/
779         /* Function    0x30     */
780         NTSTATUS samr_QUERY_DISPINFO2();
781
782         /************************/
783         /* Function    0x31     */
784         NTSTATUS samr_GET_DISPLAY_ENUMERATION_INDEX2();
785
786         /************************/
787         /* Function    0x32     */
788         NTSTATUS samr_CreateUser2(
789         /************************/
790                 [in,ref]      policy_handle *handle,
791                 [in,ref]      samr_Name *username,
792                 [in]          uint32 acct_flags,
793                 [in]          uint32 access_mask,
794                 [out,ref]     policy_handle *acct_handle,
795                 [out,ref]     uint32 *access_granted,
796                 [out,ref]     uint32 *rid
797                 );
798
799
800         /************************/
801         /* Function    0x33     */
802         NTSTATUS samr_QUERY_DISPINFO3();
803
804         /************************/
805         /* Function    0x34     */
806         NTSTATUS samr_ADD_MULTIPLE_MEMBERS_TO_ALIAS();
807
808         /************************/
809         /* Function    0x35     */
810         NTSTATUS samr_REMOVE_MULTIPLE_MEMBERS_FROM_ALIAS();
811
812         /************************/
813         /* Function    0x36     */
814         NTSTATUS samr_OEM_CHANGE_PASSWORD_USER2();
815
816         /************************/
817         /* Function    0x37     */
818         NTSTATUS samr_UNICODE_CHANGE_PASSWORD_USER2();
819
820         /************************/
821         /* Function    0x38     */
822         NTSTATUS samr_GET_DOM_PWINFO();
823
824         /************************/
825         /* Function    0x39     */
826         NTSTATUS samr_Connect2(
827                 [in] unistr *system_name,
828                 [in] uint32 access_mask,
829                 [out,ref]  policy_handle *handle
830                 );
831
832         /************************/
833         /* Function    0x3a     */
834         NTSTATUS samr_SET_USERINFO2();
835
836         /************************/
837         /* Function    0x3b     */
838         NTSTATUS samr_SET_BOOT_KEY_INFORMATION();
839
840         /************************/
841         /* Function    0x3c     */
842         NTSTATUS samr_GET_BOOT_KEY_INFORMATION();
843
844         /************************/
845         /* Function    0x3d     */
846         NTSTATUS samr_CONNECT3();
847
848         /************************/
849         /* Function    0x3e     */
850         NTSTATUS samr_Connect4(
851                 [in] unistr *system_name,
852                 [in] uint32 unknown,
853                 [in] uint32 access_mask,
854                 [out,ref]  policy_handle *handle
855                 );
856
857         /************************/
858         /* Function    0x3f     */
859         NTSTATUS samr_UNICODE_CHANGE_PASSWORD_USER3();
860
861         /************************/
862         /* Function    0x40      */
863         NTSTATUS samr_Connect5(
864                 [in]       unistr        *system_name,
865                 [in]       uint32         access_mask,
866                 [in]       uint32         unknown0,
867                 [in]       uint32         unknown1,
868                 [in]       uint32         unknown2,
869                 [in]       uint32         unknown3,
870                 [out]      uint32         unknown4,
871                 [out]      uint32         unknown5,
872                 [out]      uint32         unknown6,
873                 [out]      uint32         unknown7,
874                 [out,ref]  policy_handle *handle
875                 );
876
877         /************************/
878         /* Function    0x41     */
879         NTSTATUS samr_RID_TO_SID();
880
881         /************************/
882         /* Function    0x42     */
883         NTSTATUS samr_SET_DSRM_PASSWORD();
884
885         /************************/
886         /* Function    0x43     */
887         NTSTATUS samr_VALIDATE_PASSWORD();
888
889 }