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