4 samr interface definition
8 Thanks to Todd Sabin for some information from his samr.idl in acltools
11 [ uuid(12345778-1234-abcd-ef00-0123456789ac),
13 pointer_default(unique)
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
29 [in,out,ref] policy_handle *handle
34 NTSTATUS samr_SetSecurity ();
40 [value(ndr_size_security_descriptor(r->sd))] uint32 sd_size;
41 [subcontext(4)] security_descriptor *sd;
44 NTSTATUS samr_QuerySecurity (
45 [in,ref] policy_handle *handle,
47 [out] samr_SdBuf *sdbuf
52 NTSTATUS samr_Shutdown ();
57 [value(2*strlen_m(r->name))] uint16 name_len;
58 [value(r->name_len)] uint16 name_size;
62 NTSTATUS samr_LookupDomain (
63 [in,ref] policy_handle *handle,
64 [in,ref] samr_Name *domain,
79 [size_is(count)] samr_SamEntry *entries;
82 NTSTATUS samr_EnumDomains (
83 [in,ref] policy_handle *handle,
84 [in,out,ref] uint32 *resume_handle,
86 [out] samr_SamArray *sam,
87 [out] uint32 num_entries
91 /************************/
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
100 /************************/
104 uint16 min_length_password;
105 uint16 password_history;
108 NTTIME min_passwordage;
112 ULONG8 force_logoff_time;
114 samr_Name domain; /* domain name */
115 samr_Name primary; /* PDC name if this is a BDC */
116 HYPER_T sequence_num;
126 ULONG8 force_logoff_time;
146 HYPER_T sequence_num;
147 NTTIME last_xxx_time;
155 ULONG8 force_logoff_time;
159 HYPER_T sequence_num;
166 HYPER_T lockout_duration;
167 HYPER_T lockout_window;
168 uint16 lockout_threshold;
172 HYPER_T lockout_duration;
173 HYPER_T lockout_window;
174 uint16 lockout_threshold;
178 HYPER_T sequence_num;
179 NTTIME last_xxx_time;
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;
199 NTSTATUS samr_QueryDomainInfo(
200 [in,ref] policy_handle *handle,
202 [out,switch_is(level)] samr_DomainInfo *info
205 /************************/
207 NTSTATUS samr_SET_DOMAIN_INFO();
209 /************************/
211 NTSTATUS samr_CREATE_DOM_GROUP();
213 /************************/
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
223 /************************/
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
233 /************************/
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
244 /************************/
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
254 /************************/
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
264 /************************/
269 [size_is(count)] uint32 *ids;
272 NTSTATUS samr_GetAliasMembership(
273 [in,ref] policy_handle *handle,
274 [in,ref] lsa_SidArray *sids,
278 /************************/
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,
290 /************************/
295 [size_is(count)] samr_Name *names;
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,
306 /************************/
308 NTSTATUS samr_OpenGroup(
309 [in,ref] policy_handle *handle,
310 [in] uint32 access_mask,
312 [out,ref] policy_handle *acct_handle
316 /************************/
323 samr_Name description;
331 samr_Name description;
332 } samr_GroupInfoDesciption;
342 [case(GroupInfoAll)] samr_GroupInfoAll all;
343 [case(GroupInfoName)] samr_Name name;
344 [case(GroupInfoX)] samr_GroupInfoX unknown;
345 [case(GroupInfoDescription)] samr_Name description;
348 NTSTATUS samr_QueryGroupInfo(
349 [in,ref] policy_handle *handle,
351 [out,switch_is(level)] samr_GroupInfo *info
354 /************************/
356 NTSTATUS samr_SET_GROUPINFO();
358 /************************/
360 NTSTATUS samr_ADD_GROUPMEM();
362 /************************/
364 NTSTATUS samr_DELETE_DOM_GROUP();
366 /************************/
368 NTSTATUS samr_DEL_GROUPMEM();
370 /************************/
372 NTSTATUS samr_QUERY_GROUPMEM();
374 /************************/
376 NTSTATUS samr_SET_MEMBER_ATTRIBUTES_OF_GROUP();
379 /************************/
381 NTSTATUS samr_OpenAlias (
382 [in,ref] policy_handle *handle,
383 [in] uint32 access_mask,
385 [out,ref] policy_handle *acct_handle
389 /************************/
395 samr_Name description;
399 [case(1)] samr_AliasInfoAll all;
400 [case(2)] samr_Name name;
401 [case(3)] samr_Name description;
404 NTSTATUS samr_QueryAliasInfo(
405 [in,ref] policy_handle *handle,
407 [out,switch_is(level)] samr_AliasInfo *info
410 /************************/
412 NTSTATUS samr_SetAliasInfo(
413 [in,ref] policy_handle *handle,
415 [in,switch_is(level)] samr_AliasInfo info
418 /************************/
420 NTSTATUS samr_DeleteDomAlias(
421 [in,out,ref] policy_handle *handle
424 /************************/
426 NTSTATUS samr_AddAliasMem(
427 [in,ref] policy_handle *handle,
428 [in,ref] dom_sid2 *sid
431 /************************/
433 NTSTATUS samr_DelAliasMem(
434 [in,ref] policy_handle *handle,
435 [in,ref] dom_sid2 *sid
438 /************************/
440 NTSTATUS samr_GetMembersInAlias(
441 [in,ref] policy_handle *handle,
442 [out,ref] lsa_SidArray *sids
445 /************************/
447 NTSTATUS samr_OpenUser(
448 [in,ref] policy_handle *handle,
449 [in] uint32 access_mask,
451 [out,ref] policy_handle *acct_handle
454 /************************/
456 NTSTATUS samr_DeleteUser(
457 [in,out,ref] policy_handle *handle
460 /************************/
466 samr_Name description;
472 samr_Name unknown; /* settable, but doesn't stick. probably obsolete */
482 samr_Name home_directory;
483 samr_Name home_drive;
484 samr_Name logon_script;
486 samr_Name workstations;
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;
499 samr_LogonHours logon_hours;
507 samr_Name home_directory;
508 samr_Name home_drive;
509 samr_Name logon_script;
511 samr_Name description;
512 samr_Name workstations;
515 samr_LogonHours logon_hours;
516 uint16 bad_pwd_count;
518 NTTIME last_pwd_change;
542 samr_Name home_drive;
546 samr_Name logon_script;
554 samr_Name description;
558 samr_Name workstations;
576 NTTIME last_pwd_change;
578 NTTIME allow_pwd_change;
579 NTTIME force_pwd_change;
583 samr_Name home_drive;
584 samr_Name logon_script;
586 samr_Name description;
587 samr_Name workstations;
594 [size_is(buf_count)] uint8 *buffer;
598 uint32 fields_present;
599 samr_LogonHours logon_hours;
600 uint16 bad_pwd_count;
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;
631 NTSTATUS samr_QueryUserInfo(
632 [in,ref] policy_handle *handle,
634 [out,switch_is(level)] samr_UserInfo *info
638 /************************/
640 NTSTATUS samr_SetUserInfo(
641 [in,ref] policy_handle *handle,
643 [in,ref,switch_is(level)] samr_UserInfo *info
646 /************************/
648 NTSTATUS samr_CHANGE_PASSWORD_USER();
650 /************************/
660 [size_is(count)] samr_RidType *rid;
663 NTSTATUS samr_GetGroupsForUser(
664 [in,ref] policy_handle *handle,
665 [out] samr_RidArray *rids
668 /************************/
675 samr_Name account_name;
677 samr_Name description;
678 } samr_DispEntryGeneral;
682 [size_is(count)] samr_DispEntryGeneral *entries;
683 } samr_DispInfoGeneral;
689 samr_Name account_name;
690 samr_Name description;
691 } samr_DispEntryFull;
695 [size_is(count)] samr_DispEntryFull *entries;
699 [value(strlen_m(r->name))] uint16 name_len;
700 [value(strlen_m(r->name))] uint16 name_size;
706 samr_AsciiName account_name;
707 } samr_DispEntryAscii;
711 [size_is(count)] samr_DispEntryAscii *entries;
712 } samr_DispInfoAscii;
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 */
722 NTSTATUS samr_QueryDisplayInfo(
723 [in,ref] policy_handle *handle,
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
733 /************************/
735 NTSTATUS samr_GET_DISPLAY_ENUMERATION_INDEX();
737 /************************/
739 NTSTATUS samr_TEST_PRIVATE_FUNCTIONS_DOMAIN();
741 /************************/
743 NTSTATUS samr_TEST_PRIVATE_FUNCTIONS_USER();
746 /************************/
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;
758 uint32 password_properties;
761 NTSTATUS samr_GetUserPwInfo(
762 [in,ref] policy_handle *handle,
763 [out] samr_PwInfo info
766 /************************/
768 NTSTATUS samr_REMOVE_MEMBER_FROM_FOREIGN_DOMAIN();
770 /************************/
772 NTSTATUS samr_QUERY_INFORMATION_DOMAIN2();
774 /************************/
776 NTSTATUS samr_QUERY_INFORMATION_USER2();
778 /************************/
780 NTSTATUS samr_QUERY_DISPINFO2();
782 /************************/
784 NTSTATUS samr_GET_DISPLAY_ENUMERATION_INDEX2();
786 /************************/
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
800 /************************/
802 NTSTATUS samr_QUERY_DISPINFO3();
804 /************************/
806 NTSTATUS samr_ADD_MULTIPLE_MEMBERS_TO_ALIAS();
808 /************************/
810 NTSTATUS samr_REMOVE_MULTIPLE_MEMBERS_FROM_ALIAS();
812 /************************/
814 NTSTATUS samr_OEM_CHANGE_PASSWORD_USER2();
816 /************************/
818 NTSTATUS samr_UNICODE_CHANGE_PASSWORD_USER2();
820 /************************/
822 NTSTATUS samr_GET_DOM_PWINFO();
824 /************************/
826 NTSTATUS samr_Connect2(
827 [in] unistr *system_name,
828 [in] uint32 access_mask,
829 [out,ref] policy_handle *handle
832 /************************/
834 NTSTATUS samr_SET_USERINFO2();
836 /************************/
838 NTSTATUS samr_SET_BOOT_KEY_INFORMATION();
840 /************************/
842 NTSTATUS samr_GET_BOOT_KEY_INFORMATION();
844 /************************/
846 NTSTATUS samr_CONNECT3();
848 /************************/
850 NTSTATUS samr_Connect4(
851 [in] unistr *system_name,
853 [in] uint32 access_mask,
854 [out,ref] policy_handle *handle
857 /************************/
859 NTSTATUS samr_UNICODE_CHANGE_PASSWORD_USER3();
861 /************************/
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
877 /************************/
879 NTSTATUS samr_RID_TO_SID();
881 /************************/
883 NTSTATUS samr_SET_DSRM_PASSWORD();
885 /************************/
887 NTSTATUS samr_VALIDATE_PASSWORD();