2 samr interface definition
7 Thanks to Todd Sabin for some information from his samr.idl in acltools
10 [ uuid(12345778-1234-abcd-ef00-0123456789ac),
12 pointer_default(unique)
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
28 [in,out,ref] policy_handle *handle
33 NTSTATUS samr_SetSecurity ();
40 [subcontext] security_descriptor *sd;
43 NTSTATUS samr_QuerySecurity (
44 [in,ref] policy_handle *handle,
46 [out] samr_SdBuf *sdbuf
51 NTSTATUS samr_Shutdown ();
56 [value(2*strlen_m(r->name))] uint16 name_len;
57 [value(2*strlen_m(r->name))] uint16 name_size;
61 NTSTATUS samr_LookupDomain (
62 [in,ref] policy_handle *handle,
63 [in,ref] samr_Name *domain,
78 [size_is(count)] samr_SamEntry *entries;
81 NTSTATUS samr_EnumDomains (
82 [in,ref] policy_handle *handle,
83 [in,out,ref] uint32 *resume_handle,
85 [out] samr_SamArray *sam,
86 [out,ref] uint32 *num_entries
90 /************************/
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
99 /************************/
103 uint16 min_length_password;
104 uint16 password_history;
107 NTTIME min_passwordage;
111 HYPER_T force_logoff_time;
113 samr_Name domain; /* domain name */
114 samr_Name primary; /* PDC name if this is a BDC */
115 HYPER_T sequence_num;
125 HYPER_T force_logoff_time;
145 HYPER_T sequence_num;
146 NTTIME last_xxx_time;
154 HYPER_T force_logoff_time;
158 HYPER_T sequence_num;
165 HYPER_T lockout_duration;
166 HYPER_T lockout_window;
167 uint16 lockout_threshold;
171 HYPER_T lockout_duration;
172 HYPER_T lockout_window;
173 uint16 lockout_threshold;
177 HYPER_T sequence_num;
178 NTTIME last_xxx_time;
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;
198 NTSTATUS samr_QueryDomainInfo(
199 [in,ref] policy_handle *handle,
201 [out,switch_is(level)] samr_DomainInfo *info
204 /************************/
206 NTSTATUS samr_SET_DOMAIN_INFO();
208 /************************/
210 NTSTATUS samr_CREATE_DOM_GROUP();
212 /************************/
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
222 /************************/
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
232 /************************/
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
243 /************************/
245 NTSTATUS samr_CREATE_DOM_ALIAS();
247 /************************/
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
257 /************************/
262 [size_is(count)] dom_sid2 *sids;
267 [size_is(count)] uint32 *ids;
270 NTSTATUS samr_GetAliasMembership(
271 [in,ref] policy_handle *handle,
272 [in] samr_Sids *sids,
276 /************************/
279 NTSTATUS samr_LookupNames(
280 [in,ref] policy_handle *handle,
281 [in] uint32 num_names,
282 [in,ref,size_is(1000),length_is(num_names)] samr_Name *names,
288 /************************/
293 [size_is(count)] samr_Name *names;
296 NTSTATUS samr_LookupRids(
297 [in,ref] policy_handle *handle,
298 [in] uint32 num_rids,
299 [in,ref,size_is(1000),length_is(num_rids)] uint32 *rids,
300 [out] samr_Names names,
304 /************************/
306 NTSTATUS samr_OpenGroup(
307 [in,ref] policy_handle *handle,
308 [in] uint32 access_mask,
310 [out,ref] policy_handle *acct_handle
314 /************************/
321 samr_Name description;
326 } samr_GroupInfoName;
333 samr_Name description;
334 } samr_GroupInfoDesciption;
337 [case(1)] samr_GroupInfoAll all;
338 [case(2)] samr_GroupInfoName name;
339 [case(3)] samr_GroupInfoX unknown;
340 [case(4)] samr_GroupInfoDesciption description;
343 NTSTATUS samr_QueryGroupInfo(
344 [in,ref] policy_handle *handle,
346 [out,switch_is(level)] samr_GroupInfo *info
349 /************************/
351 NTSTATUS samr_SET_GROUPINFO();
353 /************************/
355 NTSTATUS samr_ADD_GROUPMEM();
357 /************************/
359 NTSTATUS samr_DELETE_DOM_GROUP();
361 /************************/
363 NTSTATUS samr_DEL_GROUPMEM();
365 /************************/
367 NTSTATUS samr_QUERY_GROUPMEM();
369 /************************/
371 NTSTATUS samr_SET_MEMBER_ATTRIBUTES_OF_GROUP();
374 /************************/
376 NTSTATUS samr_OpenAlias (
377 [in,ref] policy_handle *handle,
378 [in] uint32 access_mask,
380 [out,ref] policy_handle *acct_handle
384 /************************/
390 samr_Name description;
395 } samr_AliasInfoName;
398 samr_Name description;
399 } samr_AliasInfoDescription;
402 [case(1)] samr_AliasInfoAll all;
403 [case(2)] samr_AliasInfoName name;
404 [case(3)] samr_AliasInfoDescription description;
407 NTSTATUS samr_QueryAliasInfo(
408 [in,ref] policy_handle *handle,
410 [out,switch_is(level)] samr_AliasInfo *info
413 /************************/
415 NTSTATUS samr_SET_ALIASINFO();
417 /************************/
419 NTSTATUS samr_DELETE_DOM_ALIAS();
421 /************************/
423 NTSTATUS samr_ADD_ALIASMEM();
425 /************************/
427 NTSTATUS samr_DEL_ALIASMEM();
429 /************************/
431 NTSTATUS samr_GET_MEMBERS_IN_ALIAS();
433 /************************/
435 NTSTATUS samr_OpenUser(
436 [in,ref] policy_handle *handle,
437 [in] uint32 access_mask,
439 [out,ref] policy_handle *acct_handle
442 /************************/
444 NTSTATUS samr_DeleteUser(
445 [in,out,ref] policy_handle *handle
448 /************************/
454 samr_Name description;
460 samr_Name unknown; /* settable, but doesn't stick. probably obsolete */
470 samr_Name home_directory;
471 samr_Name home_drive;
472 samr_Name logon_script;
474 samr_Name workstations;
477 NTTIME last_pwd_change;
478 NTTIME allow_pwd_change;
479 NTTIME force_pwd_change;
480 uint32 units_per_week;
481 [size_is(1260), length_is(units_per_week/8)] uint8 *logon_hours;
482 uint16 bad_pwd_count;
488 uint32 units_per_week;
489 [size_is(1260), length_is(units_per_week/8)] uint8 *logon_hours;
497 samr_Name home_directory;
498 samr_Name home_drive;
499 samr_Name logon_script;
501 samr_Name description;
502 samr_Name workstations;
505 uint32 units_per_week;
506 [size_is(1260), length_is(units_per_week/8)] uint8 *logon_hours;
507 uint16 bad_pwd_count;
509 NTTIME last_pwd_change;
533 samr_Name home_drive;
537 samr_Name logon_script;
545 samr_Name description;
549 samr_Name workstations;
567 NTTIME last_pwd_change;
569 NTTIME allow_pwd_change;
570 NTTIME force_pwd_change;
574 samr_Name home_drive;
575 samr_Name logon_script;
577 samr_Name description;
578 samr_Name workstations;
585 [size_is(buf_count)] uint8 *buffer;
589 uint32 fields_present;
590 uint32 units_per_week;
591 [size_is(1260), length_is(units_per_week/8)] uint8 *logon_hours;
592 uint16 bad_pwd_count;
603 [case(1)] samr_UserInfo1 info1;
604 [case(2)] samr_UserInfo2 info2;
605 [case(3)] samr_UserInfo3 info3;
606 [case(4)] samr_UserInfo4 info4;
607 [case(5)] samr_UserInfo5 info5;
608 [case(6)] samr_UserInfo6 info6;
609 [case(7)] samr_UserInfo7 info7;
610 [case(8)] samr_UserInfo8 info8;
611 [case(9)] samr_UserInfo9 info9;
612 [case(10)] samr_UserInfo10 info10;
613 [case(11)] samr_UserInfo11 info11;
614 [case(12)] samr_UserInfo12 info12;
615 [case(13)] samr_UserInfo13 info13;
616 [case(14)] samr_UserInfo14 info14;
617 [case(16)] samr_UserInfo16 info16;
618 [case(17)] samr_UserInfo17 info17;
619 [case(20)] samr_UserInfo20 info20;
620 [case(21)] samr_UserInfo21 info21;
623 NTSTATUS samr_QueryUserInfo(
624 [in,ref] policy_handle *handle,
626 [out,switch_is(level)] samr_UserInfo *info
630 /************************/
632 NTSTATUS samr_SetUserInfo(
633 [in,ref] policy_handle *handle,
635 [in,ref,switch_is(level)] samr_UserInfo *info
638 /************************/
640 NTSTATUS samr_CHANGE_PASSWORD_USER();
642 /************************/
644 NTSTATUS samr_GET_GROUPS_FOR_USER();
646 /************************/
655 samr_Name description;
660 [size_is(count)] samr_DispEntry1 *entries;
664 [case(1)] samr_DispInfo1 info1;
667 NTSTATUS samr_QueryDisplayInfo(
668 [in,ref] policy_handle *handle,
670 [in] uint32 start_idx,
671 [in] uint32 max_entries,
672 [in] uint32 buf_size,
673 [out] uint32 total_size,
674 [out] uint32 returned_size,
675 [out,switch_is(level)] samr_DispInfo info
678 /************************/
680 NTSTATUS samr_GET_DISPLAY_ENUMERATION_INDEX();
682 /************************/
684 NTSTATUS samr_TEST_PRIVATE_FUNCTIONS_DOMAIN();
686 /************************/
688 NTSTATUS samr_TEST_PRIVATE_FUNCTIONS_USER();
690 /************************/
692 NTSTATUS samr_GET_USRDOM_PWINFO();
694 /************************/
696 NTSTATUS samr_REMOVE_MEMBER_FROM_FOREIGN_DOMAIN();
698 /************************/
700 NTSTATUS samr_QUERY_INFORMATION_DOMAIN2();
702 /************************/
704 NTSTATUS samr_QUERY_INFORMATION_USER2();
706 /************************/
708 NTSTATUS samr_QUERY_DISPINFO2();
710 /************************/
712 NTSTATUS samr_GET_DISPLAY_ENUMERATION_INDEX2();
714 /************************/
716 NTSTATUS samr_CREATE_USER2_IN_DOMAIN();
718 /************************/
720 NTSTATUS samr_QUERY_DISPINFO3();
722 /************************/
724 NTSTATUS samr_ADD_MULTIPLE_MEMBERS_TO_ALIAS();
726 /************************/
728 NTSTATUS samr_REMOVE_MULTIPLE_MEMBERS_FROM_ALIAS();
730 /************************/
732 NTSTATUS samr_OEM_CHANGE_PASSWORD_USER2();
734 /************************/
736 NTSTATUS samr_UNICODE_CHANGE_PASSWORD_USER2();
738 /************************/
740 NTSTATUS samr_GET_DOM_PWINFO();
742 /************************/
744 NTSTATUS samr_CONNECT2();
746 /************************/
748 NTSTATUS samr_SET_USERINFO2();
750 /************************/
752 NTSTATUS samr_SET_BOOT_KEY_INFORMATION();
754 /************************/
756 NTSTATUS samr_GET_BOOT_KEY_INFORMATION();
758 /************************/
760 NTSTATUS samr_CONNECT3();
762 /************************/
764 NTSTATUS samr_Connect4(
765 [in] unistr *system_name,
767 [in] uint32 access_mask,
768 [out,ref] policy_handle *handle
771 /************************/
773 NTSTATUS samr_UNICODE_CHANGE_PASSWORD_USER3();
775 /************************/
777 NTSTATUS samr_CONNECT5();
779 /************************/
781 NTSTATUS samr_RID_TO_SID();
783 /************************/
785 NTSTATUS samr_SET_DSRM_PASSWORD();
787 /************************/
789 NTSTATUS samr_VALIDATE_PASSWORD();