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)
16 /* a 4 byte aligned 64-bit integer */
17 typedef [public] struct {
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
35 [in,out,ref] policy_handle *handle
40 NTSTATUS samr_SetSecurity ();
46 [value(ndr_size_security_descriptor(r->sd))] uint32 sd_size;
47 [subcontext(4)] security_descriptor *sd;
50 NTSTATUS samr_QuerySecurity (
51 [in,ref] policy_handle *handle,
53 [out] samr_SdBuf *sdbuf
58 NTSTATUS samr_Shutdown ();
63 [value(2*strlen_m(r->name))] uint16 name_len;
64 [value(r->name_len)] uint16 name_size;
68 NTSTATUS samr_LookupDomain (
69 [in,ref] policy_handle *handle,
70 [in,ref] samr_Name *domain,
85 [size_is(count)] samr_SamEntry *entries;
88 NTSTATUS samr_EnumDomains (
89 [in,ref] policy_handle *handle,
90 [in,out,ref] uint32 *resume_handle,
92 [out] samr_SamArray *sam,
93 [out] uint32 num_entries
97 /************************/
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
106 /************************/
110 uint16 min_length_password;
111 uint16 password_history;
114 NTTIME min_passwordage;
118 ULONG8 force_logoff_time;
120 samr_Name domain; /* domain name */
121 samr_Name primary; /* PDC name if this is a BDC */
122 HYPER_T sequence_num;
132 ULONG8 force_logoff_time;
152 HYPER_T sequence_num;
153 NTTIME last_xxx_time;
161 ULONG8 force_logoff_time;
165 HYPER_T sequence_num;
172 HYPER_T lockout_duration;
173 HYPER_T lockout_window;
174 uint16 lockout_threshold;
178 HYPER_T lockout_duration;
179 HYPER_T lockout_window;
180 uint16 lockout_threshold;
184 HYPER_T sequence_num;
185 NTTIME last_xxx_time;
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;
205 NTSTATUS samr_QueryDomainInfo(
206 [in,ref] policy_handle *handle,
208 [out,switch_is(level)] samr_DomainInfo *info
211 /************************/
213 NTSTATUS samr_SET_DOMAIN_INFO();
215 /************************/
217 NTSTATUS samr_CREATE_DOM_GROUP();
219 /************************/
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
229 /************************/
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
239 /************************/
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
250 /************************/
252 NTSTATUS samr_CREATE_DOM_ALIAS();
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)] dom_sid2 *sids;
274 [size_is(count)] uint32 *ids;
277 NTSTATUS samr_GetAliasMembership(
278 [in,ref] policy_handle *handle,
279 [in] samr_Sids *sids,
283 /************************/
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,
295 /************************/
300 [size_is(count)] samr_Name *names;
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,
311 /************************/
313 NTSTATUS samr_OpenGroup(
314 [in,ref] policy_handle *handle,
315 [in] uint32 access_mask,
317 [out,ref] policy_handle *acct_handle
321 /************************/
328 samr_Name description;
333 } samr_GroupInfoName;
340 samr_Name description;
341 } samr_GroupInfoDesciption;
351 [case(GroupInfoAll)] samr_GroupInfoAll all;
352 [case(GroupInfoName)] samr_GroupInfoName name;
353 [case(GroupInfoX)] samr_GroupInfoX unknown;
354 [case(GroupInfoDescription)] samr_GroupInfoDesciption description;
357 NTSTATUS samr_QueryGroupInfo(
358 [in,ref] policy_handle *handle,
360 [out,switch_is(level)] samr_GroupInfo *info
363 /************************/
365 NTSTATUS samr_SET_GROUPINFO();
367 /************************/
369 NTSTATUS samr_ADD_GROUPMEM();
371 /************************/
373 NTSTATUS samr_DELETE_DOM_GROUP();
375 /************************/
377 NTSTATUS samr_DEL_GROUPMEM();
379 /************************/
381 NTSTATUS samr_QUERY_GROUPMEM();
383 /************************/
385 NTSTATUS samr_SET_MEMBER_ATTRIBUTES_OF_GROUP();
388 /************************/
390 NTSTATUS samr_OpenAlias (
391 [in,ref] policy_handle *handle,
392 [in] uint32 access_mask,
394 [out,ref] policy_handle *acct_handle
398 /************************/
404 samr_Name description;
409 } samr_AliasInfoName;
412 samr_Name description;
413 } samr_AliasInfoDescription;
416 [case(1)] samr_AliasInfoAll all;
417 [case(2)] samr_AliasInfoName name;
418 [case(3)] samr_AliasInfoDescription description;
421 NTSTATUS samr_QueryAliasInfo(
422 [in,ref] policy_handle *handle,
424 [out,switch_is(level)] samr_AliasInfo *info
427 /************************/
429 NTSTATUS samr_SET_ALIASINFO();
431 /************************/
433 NTSTATUS samr_DELETE_DOM_ALIAS();
435 /************************/
437 NTSTATUS samr_ADD_ALIASMEM();
439 /************************/
441 NTSTATUS samr_DEL_ALIASMEM();
443 /************************/
445 NTSTATUS samr_GET_MEMBERS_IN_ALIAS();
447 /************************/
449 NTSTATUS samr_OpenUser(
450 [in,ref] policy_handle *handle,
451 [in] uint32 access_mask,
453 [out,ref] policy_handle *acct_handle
456 /************************/
458 NTSTATUS samr_DeleteUser(
459 [in,out,ref] policy_handle *handle
462 /************************/
468 samr_Name description;
474 samr_Name unknown; /* settable, but doesn't stick. probably obsolete */
484 samr_Name home_directory;
485 samr_Name home_drive;
486 samr_Name logon_script;
488 samr_Name workstations;
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;
502 uint32 units_per_week;
503 [size_is(1260), length_is(units_per_week/8)] uint8 *logon_hours;
511 samr_Name home_directory;
512 samr_Name home_drive;
513 samr_Name logon_script;
515 samr_Name description;
516 samr_Name workstations;
519 uint32 units_per_week;
520 [size_is(1260), length_is(units_per_week/8)] uint8 *logon_hours;
521 uint16 bad_pwd_count;
523 NTTIME last_pwd_change;
547 samr_Name home_drive;
551 samr_Name logon_script;
559 samr_Name description;
563 samr_Name workstations;
581 NTTIME last_pwd_change;
583 NTTIME allow_pwd_change;
584 NTTIME force_pwd_change;
588 samr_Name home_drive;
589 samr_Name logon_script;
591 samr_Name description;
592 samr_Name workstations;
599 [size_is(buf_count)] uint8 *buffer;
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;
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;
637 NTSTATUS samr_QueryUserInfo(
638 [in,ref] policy_handle *handle,
640 [out,switch_is(level)] samr_UserInfo *info
644 /************************/
646 NTSTATUS samr_SetUserInfo(
647 [in,ref] policy_handle *handle,
649 [in,ref,switch_is(level)] samr_UserInfo *info
652 /************************/
654 NTSTATUS samr_CHANGE_PASSWORD_USER();
656 /************************/
658 NTSTATUS samr_GET_GROUPS_FOR_USER();
660 /************************/
667 samr_Name account_name;
669 samr_Name description;
670 } samr_DispEntryGeneral;
674 [size_is(count)] samr_DispEntryGeneral *entries;
675 } samr_DispInfoGeneral;
681 samr_Name account_name;
682 samr_Name description;
683 } samr_DispEntryFull;
687 [size_is(count)] samr_DispEntryFull *entries;
691 [value(strlen_m(r->name))] uint16 name_len;
692 [value(strlen_m(r->name))] uint16 name_size;
698 samr_AsciiName account_name;
699 } samr_DispEntryAscii;
703 [size_is(count)] samr_DispEntryAscii *entries;
704 } samr_DispInfoAscii;
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 */
714 NTSTATUS samr_QueryDisplayInfo(
715 [in,ref] policy_handle *handle,
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
725 /************************/
727 NTSTATUS samr_GET_DISPLAY_ENUMERATION_INDEX();
729 /************************/
731 NTSTATUS samr_TEST_PRIVATE_FUNCTIONS_DOMAIN();
733 /************************/
735 NTSTATUS samr_TEST_PRIVATE_FUNCTIONS_USER();
738 /************************/
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;
750 uint32 password_properties;
753 NTSTATUS samr_GetUserPwInfo(
754 [in,ref] policy_handle *handle,
755 [out] samr_PwInfo info
758 /************************/
760 NTSTATUS samr_REMOVE_MEMBER_FROM_FOREIGN_DOMAIN();
762 /************************/
764 NTSTATUS samr_QUERY_INFORMATION_DOMAIN2();
766 /************************/
768 NTSTATUS samr_QUERY_INFORMATION_USER2();
770 /************************/
772 NTSTATUS samr_QUERY_DISPINFO2();
774 /************************/
776 NTSTATUS samr_GET_DISPLAY_ENUMERATION_INDEX2();
778 /************************/
780 NTSTATUS samr_CREATE_USER2_IN_DOMAIN();
782 /************************/
784 NTSTATUS samr_QUERY_DISPINFO3();
786 /************************/
788 NTSTATUS samr_ADD_MULTIPLE_MEMBERS_TO_ALIAS();
790 /************************/
792 NTSTATUS samr_REMOVE_MULTIPLE_MEMBERS_FROM_ALIAS();
794 /************************/
796 NTSTATUS samr_OEM_CHANGE_PASSWORD_USER2();
798 /************************/
800 NTSTATUS samr_UNICODE_CHANGE_PASSWORD_USER2();
802 /************************/
804 NTSTATUS samr_GET_DOM_PWINFO();
806 /************************/
808 NTSTATUS samr_Connect2(
809 [in] unistr *system_name,
810 [in] uint32 access_mask,
811 [out,ref] policy_handle *handle
814 /************************/
816 NTSTATUS samr_SET_USERINFO2();
818 /************************/
820 NTSTATUS samr_SET_BOOT_KEY_INFORMATION();
822 /************************/
824 NTSTATUS samr_GET_BOOT_KEY_INFORMATION();
826 /************************/
828 NTSTATUS samr_CONNECT3();
830 /************************/
832 NTSTATUS samr_Connect4(
833 [in] unistr *system_name,
835 [in] uint32 access_mask,
836 [out,ref] policy_handle *handle
839 /************************/
841 NTSTATUS samr_UNICODE_CHANGE_PASSWORD_USER3();
843 /************************/
845 NTSTATUS samr_CONNECT5();
847 /************************/
849 NTSTATUS samr_RID_TO_SID();
851 /************************/
853 NTSTATUS samr_SET_DSRM_PASSWORD();
855 /************************/
857 NTSTATUS samr_VALIDATE_PASSWORD();