1 /* header auto-generated by pidl */
5 #include "librpc/gen_ndr/misc.h"
6 #include "librpc/gen_ndr/lsa.h"
7 #include "librpc/gen_ndr/security.h"
11 #define SAMR_ACCESS_ALL_ACCESS ( 0x0000003F )
12 #define GENERIC_RIGHTS_SAM_ALL_ACCESS ( (STANDARD_RIGHTS_REQUIRED_ACCESS|SAMR_ACCESS_ALL_ACCESS) )
13 #define GENERIC_RIGHTS_SAM_READ ( (STANDARD_RIGHTS_READ_ACCESS|SAMR_ACCESS_ENUM_DOMAINS) )
14 #define GENERIC_RIGHTS_SAM_WRITE ( (STANDARD_RIGHTS_WRITE_ACCESS|SAMR_ACCESS_CREATE_DOMAIN|SAMR_ACCESS_INITIALIZE_SERVER|SAMR_ACCESS_SHUTDOWN_SERVER) )
15 #define GENERIC_RIGHTS_SAM_EXECUTE ( (STANDARD_RIGHTS_EXECUTE_ACCESS|SAMR_ACCESS_OPEN_DOMAIN|SAMR_ACCESS_CONNECT_TO_SERVER) )
16 #define SAMR_USER_ACCESS_ALL_ACCESS ( 0x000007FF )
17 #define GENERIC_RIGHTS_USER_ALL_ACCESS ( (STANDARD_RIGHTS_REQUIRED_ACCESS|SAMR_USER_ACCESS_ALL_ACCESS) )
18 #define GENERIC_RIGHTS_USER_READ ( (STANDARD_RIGHTS_READ_ACCESS|SAMR_USER_ACCESS_GET_GROUP_MEMBERSHIP|SAMR_USER_ACCESS_GET_GROUPS|SAMR_USER_ACCESS_GET_ATTRIBUTES|SAMR_USER_ACCESS_GET_LOGONINFO|SAMR_USER_ACCESS_GET_LOCALE) )
19 #define GENERIC_RIGHTS_USER_WRITE ( (STANDARD_RIGHTS_WRITE_ACCESS|SAMR_USER_ACCESS_CHANGE_PASSWORD|SAMR_USER_ACCESS_SET_LOC_COM|SAMR_USER_ACCESS_SET_ATTRIBUTES|SAMR_USER_ACCESS_SET_PASSWORD|SAMR_USER_ACCESS_CHANGE_GROUP_MEMBERSHIP) )
20 #define GENERIC_RIGHTS_USER_EXECUTE ( (STANDARD_RIGHTS_EXECUTE_ACCESS|SAMR_USER_ACCESS_CHANGE_PASSWORD|SAMR_USER_ACCESS_GET_NAME_ETC) )
21 #define SAMR_DOMAIN_ACCESS_ALL_ACCESS ( 0x000007FF )
22 #define GENERIC_RIGHTS_DOMAIN_ALL_ACCESS ( (STANDARD_RIGHTS_REQUIRED_ACCESS|SAMR_DOMAIN_ACCESS_ALL_ACCESS) )
23 #define GENERIC_RIGHTS_DOMAIN_READ ( (STANDARD_RIGHTS_READ_ACCESS|SAMR_DOMAIN_ACCESS_LOOKUP_ALIAS|SAMR_DOMAIN_ACCESS_LOOKUP_INFO_2) )
24 #define GENERIC_RIGHTS_DOMAIN_WRITE ( (STANDARD_RIGHTS_WRITE_ACCESS|SAMR_DOMAIN_ACCESS_SET_INFO_3|SAMR_DOMAIN_ACCESS_CREATE_ALIAS|SAMR_DOMAIN_ACCESS_CREATE_GROUP|SAMR_DOMAIN_ACCESS_CREATE_USER|SAMR_DOMAIN_ACCESS_SET_INFO_2|SAMR_DOMAIN_ACCESS_SET_INFO_1) )
25 #define GENERIC_RIGHTS_DOMAIN_EXECUTE ( (STANDARD_RIGHTS_EXECUTE_ACCESS|SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT|SAMR_DOMAIN_ACCESS_ENUM_ACCOUNTS|SAMR_DOMAIN_ACCESS_LOOKUP_INFO_1) )
26 #define MAX_SAM_ENTRIES_W2K ( 0x400 )
27 #define MAX_SAM_ENTRIES_W95 ( 50 )
28 #define SAMR_ENUM_USERS_MULTIPLIER ( 54 )
29 #define PASS_MUST_CHANGE_AT_NEXT_LOGON ( 0x01 )
30 #define PASS_DONT_CHANGE_AT_NEXT_LOGON ( 0x00 )
31 /* bitmap samr_AcctFlags */
32 #define ACB_DISABLED ( 0x00000001 )
33 #define ACB_HOMDIRREQ ( 0x00000002 )
34 #define ACB_PWNOTREQ ( 0x00000004 )
35 #define ACB_TEMPDUP ( 0x00000008 )
36 #define ACB_NORMAL ( 0x00000010 )
37 #define ACB_MNS ( 0x00000020 )
38 #define ACB_DOMTRUST ( 0x00000040 )
39 #define ACB_WSTRUST ( 0x00000080 )
40 #define ACB_SVRTRUST ( 0x00000100 )
41 #define ACB_PWNOEXP ( 0x00000200 )
42 #define ACB_AUTOLOCK ( 0x00000400 )
43 #define ACB_ENC_TXT_PWD_ALLOWED ( 0x00000800 )
44 #define ACB_SMARTCARD_REQUIRED ( 0x00001000 )
45 #define ACB_TRUSTED_FOR_DELEGATION ( 0x00002000 )
46 #define ACB_NOT_DELEGATED ( 0x00004000 )
47 #define ACB_USE_DES_KEY_ONLY ( 0x00008000 )
48 #define ACB_DONT_REQUIRE_PREAUTH ( 0x00010000 )
49 #define ACB_PW_EXPIRED ( 0x00020000 )
50 #define ACB_NO_AUTH_DATA_REQD ( 0x00080000 )
52 /* bitmap samr_ConnectAccessMask */
53 #define SAMR_ACCESS_CONNECT_TO_SERVER ( 0x00000001 )
54 #define SAMR_ACCESS_SHUTDOWN_SERVER ( 0x00000002 )
55 #define SAMR_ACCESS_INITIALIZE_SERVER ( 0x00000004 )
56 #define SAMR_ACCESS_CREATE_DOMAIN ( 0x00000008 )
57 #define SAMR_ACCESS_ENUM_DOMAINS ( 0x00000010 )
58 #define SAMR_ACCESS_OPEN_DOMAIN ( 0x00000020 )
60 /* bitmap samr_UserAccessMask */
61 #define SAMR_USER_ACCESS_GET_NAME_ETC ( 0x00000001 )
62 #define SAMR_USER_ACCESS_GET_LOCALE ( 0x00000002 )
63 #define SAMR_USER_ACCESS_SET_LOC_COM ( 0x00000004 )
64 #define SAMR_USER_ACCESS_GET_LOGONINFO ( 0x00000008 )
65 #define SAMR_USER_ACCESS_GET_ATTRIBUTES ( 0x00000010 )
66 #define SAMR_USER_ACCESS_SET_ATTRIBUTES ( 0x00000020 )
67 #define SAMR_USER_ACCESS_CHANGE_PASSWORD ( 0x00000040 )
68 #define SAMR_USER_ACCESS_SET_PASSWORD ( 0x00000080 )
69 #define SAMR_USER_ACCESS_GET_GROUPS ( 0x00000100 )
70 #define SAMR_USER_ACCESS_GET_GROUP_MEMBERSHIP ( 0x00000200 )
71 #define SAMR_USER_ACCESS_CHANGE_GROUP_MEMBERSHIP ( 0x00000400 )
73 /* bitmap samr_DomainAccessMask */
74 #define SAMR_DOMAIN_ACCESS_LOOKUP_INFO_1 ( 0x00000001 )
75 #define SAMR_DOMAIN_ACCESS_SET_INFO_1 ( 0x00000002 )
76 #define SAMR_DOMAIN_ACCESS_LOOKUP_INFO_2 ( 0x00000004 )
77 #define SAMR_DOMAIN_ACCESS_SET_INFO_2 ( 0x00000008 )
78 #define SAMR_DOMAIN_ACCESS_CREATE_USER ( 0x00000010 )
79 #define SAMR_DOMAIN_ACCESS_CREATE_GROUP ( 0x00000020 )
80 #define SAMR_DOMAIN_ACCESS_CREATE_ALIAS ( 0x00000040 )
81 #define SAMR_DOMAIN_ACCESS_LOOKUP_ALIAS ( 0x00000080 )
82 #define SAMR_DOMAIN_ACCESS_ENUM_ACCOUNTS ( 0x00000100 )
83 #define SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT ( 0x00000200 )
84 #define SAMR_DOMAIN_ACCESS_SET_INFO_3 ( 0x00000400 )
86 /* bitmap samr_GroupAccessMask */
87 #define SAMR_GROUP_ACCESS_LOOKUP_INFO ( 0x00000001 )
88 #define SAMR_GROUP_ACCESS_SET_INFO ( 0x00000002 )
89 #define SAMR_GROUP_ACCESS_ADD_MEMBER ( 0x00000004 )
90 #define SAMR_GROUP_ACCESS_REMOVE_MEMBER ( 0x00000008 )
91 #define SAMR_GROUP_ACCESS_GET_MEMBERS ( 0x00000010 )
93 /* bitmap samr_AliasAccessMask */
94 #define SAMR_ALIAS_ACCESS_ADD_MEMBER ( 0x00000001 )
95 #define SAMR_ALIAS_ACCESS_REMOVE_MEMBER ( 0x00000002 )
96 #define SAMR_ALIAS_ACCESS_GET_MEMBERS ( 0x00000004 )
97 #define SAMR_ALIAS_ACCESS_LOOKUP_INFO ( 0x00000008 )
98 #define SAMR_ALIAS_ACCESS_SET_INFO ( 0x00000010 )
100 struct samr_SamEntry {
102 struct lsa_String name;
105 struct samr_SamArray {
107 struct samr_SamEntry *entries;/* [unique,size_is(count)] */
111 #ifndef USE_UINT_ENUMS
113 SAMR_ROLE_STANDALONE=0,
114 SAMR_ROLE_DOMAIN_MEMBER=1,
115 SAMR_ROLE_DOMAIN_BDC=2,
116 SAMR_ROLE_DOMAIN_PDC=3
119 { __donnot_use_enum_samr_Role=0x7FFFFFFF}
120 #define SAMR_ROLE_STANDALONE ( 0 )
121 #define SAMR_ROLE_DOMAIN_MEMBER ( 1 )
122 #define SAMR_ROLE_DOMAIN_BDC ( 2 )
123 #define SAMR_ROLE_DOMAIN_PDC ( 3 )
127 /* bitmap samr_PasswordProperties */
128 #define DOMAIN_PASSWORD_COMPLEX ( 0x00000001 )
129 #define DOMAIN_PASSWORD_NO_ANON_CHANGE ( 0x00000002 )
130 #define DOMAIN_PASSWORD_NO_CLEAR_CHANGE ( 0x00000004 )
131 #define DOMAIN_PASSWORD_LOCKOUT_ADMINS ( 0x00000008 )
132 #define DOMAIN_PASSWORD_STORE_CLEARTEXT ( 0x00000010 )
133 #define DOMAIN_REFUSE_PASSWORD_CHANGE ( 0x00000020 )
135 struct samr_DomInfo1 {
136 uint16_t min_password_length;
137 uint16_t password_history_length;
138 uint32_t password_properties;
139 int64_t max_password_age;
140 int64_t min_password_age;
143 struct samr_DomGeneralInformation {
144 NTTIME force_logoff_time;
145 struct lsa_String oem_information;
146 struct lsa_String domain_name;
147 struct lsa_String primary;
148 uint64_t sequence_num;
154 uint32_t num_aliases;
157 struct samr_DomInfo3 {
158 NTTIME force_logoff_time;
161 struct samr_DomOEMInformation {
162 struct lsa_String oem_information;
165 struct samr_DomInfo5 {
166 struct lsa_String domain_name;
169 struct samr_DomInfo6 {
170 struct lsa_String primary;
173 struct samr_DomInfo7 {
177 struct samr_DomInfo8 {
178 uint64_t sequence_num;
179 NTTIME domain_create_time;
182 struct samr_DomInfo9 {
186 struct samr_DomGeneralInformation2 {
187 struct samr_DomGeneralInformation general;
188 uint64_t lockout_duration;
189 uint64_t lockout_window;
190 uint16_t lockout_threshold;
193 struct samr_DomInfo12 {
194 uint64_t lockout_duration;
195 uint64_t lockout_window;
196 uint16_t lockout_threshold;
199 struct samr_DomInfo13 {
200 uint64_t sequence_num;
201 NTTIME domain_create_time;
206 union samr_DomainInfo {
207 struct samr_DomInfo1 info1;/* [case] */
208 struct samr_DomGeneralInformation general;/* [case(2)] */
209 struct samr_DomInfo3 info3;/* [case(3)] */
210 struct samr_DomOEMInformation oem;/* [case(4)] */
211 struct samr_DomInfo5 info5;/* [case(5)] */
212 struct samr_DomInfo6 info6;/* [case(6)] */
213 struct samr_DomInfo7 info7;/* [case(7)] */
214 struct samr_DomInfo8 info8;/* [case(8)] */
215 struct samr_DomInfo9 info9;/* [case(9)] */
216 struct samr_DomGeneralInformation2 general2;/* [case(11)] */
217 struct samr_DomInfo12 info12;/* [case(12)] */
218 struct samr_DomInfo13 info13;/* [case(13)] */
219 }/* [switch_type(uint16)] */;
222 uint32_t count;/* [range(0,1024)] */
223 uint32_t *ids;/* [unique,size_is(count)] */
226 /* bitmap samr_GroupAttrs */
227 #define SE_GROUP_MANDATORY ( 0x00000001 )
228 #define SE_GROUP_ENABLED_BY_DEFAULT ( 0x00000002 )
229 #define SE_GROUP_ENABLED ( 0x00000004 )
230 #define SE_GROUP_OWNER ( 0x00000008 )
231 #define SE_GROUP_USE_FOR_DENY_ONLY ( 0x00000010 )
232 #define SE_GROUP_RESOURCE ( 0x20000000 )
233 #define SE_GROUP_LOGON_ID ( 0xC0000000 )
235 struct samr_GroupInfoAll {
236 struct lsa_String name;
238 uint32_t num_members;
239 struct lsa_String description;
242 struct samr_GroupInfoAttributes {
246 struct samr_GroupInfoDescription {
247 struct lsa_String description;
250 enum samr_GroupInfoEnum
251 #ifndef USE_UINT_ENUMS
255 GROUPINFOATTRIBUTES=3,
256 GROUPINFODESCRIPTION=4,
260 { __donnot_use_enum_samr_GroupInfoEnum=0x7FFFFFFF}
261 #define GROUPINFOALL ( 1 )
262 #define GROUPINFONAME ( 2 )
263 #define GROUPINFOATTRIBUTES ( 3 )
264 #define GROUPINFODESCRIPTION ( 4 )
265 #define GROUPINFOALL2 ( 5 )
269 union samr_GroupInfo {
270 struct samr_GroupInfoAll all;/* [case(GROUPINFOALL)] */
271 struct lsa_String name;/* [case(GROUPINFONAME)] */
272 struct samr_GroupInfoAttributes attributes;/* [case(GROUPINFOATTRIBUTES)] */
273 struct lsa_String description;/* [case(GROUPINFODESCRIPTION)] */
274 struct samr_GroupInfoAll all2;/* [case(GROUPINFOALL2)] */
275 }/* [switch_type(samr_GroupInfoEnum)] */;
277 struct samr_RidTypeArray {
279 uint32_t *rids;/* [unique,size_is(count)] */
280 uint32_t *types;/* [unique,size_is(count)] */
283 struct samr_AliasInfoAll {
284 struct lsa_String name;
285 uint32_t num_members;
286 struct lsa_String description;
289 enum samr_AliasInfoEnum
290 #ifndef USE_UINT_ENUMS
294 ALIASINFODESCRIPTION=3
297 { __donnot_use_enum_samr_AliasInfoEnum=0x7FFFFFFF}
298 #define ALIASINFOALL ( 1 )
299 #define ALIASINFONAME ( 2 )
300 #define ALIASINFODESCRIPTION ( 3 )
304 union samr_AliasInfo {
305 struct samr_AliasInfoAll all;/* [case(ALIASINFOALL)] */
306 struct lsa_String name;/* [case(ALIASINFONAME)] */
307 struct lsa_String description;/* [case(ALIASINFODESCRIPTION)] */
308 }/* [switch_type(samr_AliasInfoEnum)] */;
310 struct samr_UserInfo1 {
311 struct lsa_String account_name;
312 struct lsa_String full_name;
313 uint32_t primary_gid;
314 struct lsa_String description;
315 struct lsa_String comment;
318 struct samr_UserInfo2 {
319 struct lsa_String comment;
320 struct lsa_String unknown;
321 uint16_t country_code;
325 struct samr_LogonHours {
326 uint16_t units_per_week;
327 uint8_t *bits;/* [unique,length_is(units_per_week/8),size_is(1260)] */
328 }/* [public,flag(LIBNDR_PRINT_ARRAY_HEX)] */;
330 struct samr_UserInfo3 {
331 struct lsa_String account_name;
332 struct lsa_String full_name;
334 uint32_t primary_gid;
335 struct lsa_String home_directory;
336 struct lsa_String home_drive;
337 struct lsa_String logon_script;
338 struct lsa_String profile_path;
339 struct lsa_String workstations;
342 NTTIME last_password_change;
343 NTTIME allow_password_change;
344 NTTIME force_password_change;
345 struct samr_LogonHours logon_hours;
346 uint16_t bad_password_count;
347 uint16_t logon_count;
351 struct samr_UserInfo4 {
352 struct samr_LogonHours logon_hours;
355 struct samr_UserInfo5 {
356 struct lsa_String account_name;
357 struct lsa_String full_name;
359 uint32_t primary_gid;
360 struct lsa_String home_directory;
361 struct lsa_String home_drive;
362 struct lsa_String logon_script;
363 struct lsa_String profile_path;
364 struct lsa_String description;
365 struct lsa_String workstations;
368 struct samr_LogonHours logon_hours;
369 uint16_t bad_password_count;
370 uint16_t logon_count;
371 NTTIME last_password_change;
376 struct samr_UserInfo6 {
377 struct lsa_String account_name;
378 struct lsa_String full_name;
381 struct samr_UserInfo7 {
382 struct lsa_String account_name;
385 struct samr_UserInfo8 {
386 struct lsa_String full_name;
389 struct samr_UserInfo9 {
390 uint32_t primary_gid;
393 struct samr_UserInfo10 {
394 struct lsa_String home_directory;
395 struct lsa_String home_drive;
398 struct samr_UserInfo11 {
399 struct lsa_String logon_script;
402 struct samr_UserInfo12 {
403 struct lsa_String profile_path;
406 struct samr_UserInfo13 {
407 struct lsa_String description;
410 struct samr_UserInfo14 {
411 struct lsa_String workstations;
414 struct samr_UserInfo16 {
418 struct samr_UserInfo17 {
422 struct samr_Password {
424 }/* [public,flag(LIBNDR_PRINT_ARRAY_HEX)] */;
426 struct samr_UserInfo18 {
427 struct samr_Password lm_pwd;
428 struct samr_Password nt_pwd;
429 uint8_t lm_pwd_active;
430 uint8_t nt_pwd_active;
433 struct samr_UserInfo20 {
434 struct lsa_BinaryString parameters;
437 /* bitmap samr_FieldsPresent */
438 #define SAMR_FIELD_ACCOUNT_NAME ( 0x00000001 )
439 #define SAMR_FIELD_FULL_NAME ( 0x00000002 )
440 #define SAMR_FIELD_RID ( 0x00000004 )
441 #define SAMR_FIELD_PRIMARY_GID ( 0x00000008 )
442 #define SAMR_FIELD_DESCRIPTION ( 0x00000010 )
443 #define SAMR_FIELD_COMMENT ( 0x00000020 )
444 #define SAMR_FIELD_HOME_DIRECTORY ( 0x00000040 )
445 #define SAMR_FIELD_HOME_DRIVE ( 0x00000080 )
446 #define SAMR_FIELD_LOGON_SCRIPT ( 0x00000100 )
447 #define SAMR_FIELD_PROFILE_PATH ( 0x00000200 )
448 #define SAMR_FIELD_WORKSTATIONS ( 0x00000400 )
449 #define SAMR_FIELD_LAST_LOGON ( 0x00000800 )
450 #define SAMR_FIELD_LAST_LOGOFF ( 0x00001000 )
451 #define SAMR_FIELD_LOGON_HOURS ( 0x00002000 )
452 #define SAMR_FIELD_BAD_PWD_COUNT ( 0x00004000 )
453 #define SAMR_FIELD_NUM_LOGONS ( 0x00008000 )
454 #define SAMR_FIELD_ALLOW_PWD_CHANGE ( 0x00010000 )
455 #define SAMR_FIELD_FORCE_PWD_CHANGE ( 0x00020000 )
456 #define SAMR_FIELD_LAST_PWD_CHANGE ( 0x00040000 )
457 #define SAMR_FIELD_ACCT_EXPIRY ( 0x00080000 )
458 #define SAMR_FIELD_ACCT_FLAGS ( 0x00100000 )
459 #define SAMR_FIELD_PARAMETERS ( 0x00200000 )
460 #define SAMR_FIELD_COUNTRY_CODE ( 0x00400000 )
461 #define SAMR_FIELD_CODE_PAGE ( 0x00800000 )
462 #define SAMR_FIELD_PASSWORD ( 0x01000000 )
463 #define SAMR_FIELD_PASSWORD2 ( 0x02000000 )
464 #define SAMR_FIELD_PRIVATE_DATA ( 0x04000000 )
465 #define SAMR_FIELD_EXPIRED_FLAG ( 0x08000000 )
466 #define SAMR_FIELD_SEC_DESC ( 0x10000000 )
467 #define SAMR_FIELD_OWF_PWD ( 0x20000000 )
469 struct samr_UserInfo21 {
472 NTTIME last_password_change;
474 NTTIME allow_password_change;
475 NTTIME force_password_change;
476 struct lsa_String account_name;
477 struct lsa_String full_name;
478 struct lsa_String home_directory;
479 struct lsa_String home_drive;
480 struct lsa_String logon_script;
481 struct lsa_String profile_path;
482 struct lsa_String description;
483 struct lsa_String workstations;
484 struct lsa_String comment;
485 struct lsa_BinaryString parameters;
486 struct lsa_String unknown1;
487 struct lsa_String unknown2;
488 struct lsa_String unknown3;
490 uint8_t *buffer;/* [unique,size_is(buf_count)] */
492 uint32_t primary_gid;
494 uint32_t fields_present;
495 struct samr_LogonHours logon_hours;
496 uint16_t bad_password_count;
497 uint16_t logon_count;
498 uint16_t country_code;
500 uint8_t nt_password_set;
501 uint8_t lm_password_set;
502 uint8_t password_expired;
506 struct samr_CryptPassword {
508 }/* [public,flag(LIBNDR_PRINT_ARRAY_HEX)] */;
510 struct samr_UserInfo23 {
511 struct samr_UserInfo21 info;
512 struct samr_CryptPassword password;
515 struct samr_UserInfo24 {
516 struct samr_CryptPassword password;
520 struct samr_CryptPasswordEx {
522 }/* [flag(LIBNDR_PRINT_ARRAY_HEX)] */;
524 struct samr_UserInfo25 {
525 struct samr_UserInfo21 info;
526 struct samr_CryptPasswordEx password;
529 struct samr_UserInfo26 {
530 struct samr_CryptPasswordEx password;
534 union samr_UserInfo {
535 struct samr_UserInfo1 info1;/* [case] */
536 struct samr_UserInfo2 info2;/* [case(2)] */
537 struct samr_UserInfo3 info3;/* [case(3)] */
538 struct samr_UserInfo4 info4;/* [case(4)] */
539 struct samr_UserInfo5 info5;/* [case(5)] */
540 struct samr_UserInfo6 info6;/* [case(6)] */
541 struct samr_UserInfo7 info7;/* [case(7)] */
542 struct samr_UserInfo8 info8;/* [case(8)] */
543 struct samr_UserInfo9 info9;/* [case(9)] */
544 struct samr_UserInfo10 info10;/* [case(10)] */
545 struct samr_UserInfo11 info11;/* [case(11)] */
546 struct samr_UserInfo12 info12;/* [case(12)] */
547 struct samr_UserInfo13 info13;/* [case(13)] */
548 struct samr_UserInfo14 info14;/* [case(14)] */
549 struct samr_UserInfo16 info16;/* [case(16)] */
550 struct samr_UserInfo17 info17;/* [case(17)] */
551 struct samr_UserInfo18 info18;/* [case(18)] */
552 struct samr_UserInfo20 info20;/* [case(20)] */
553 struct samr_UserInfo21 info21;/* [case(21)] */
554 struct samr_UserInfo23 info23;/* [case(23)] */
555 struct samr_UserInfo24 info24;/* [case(24)] */
556 struct samr_UserInfo25 info25;/* [case(25)] */
557 struct samr_UserInfo26 info26;/* [case(26)] */
558 }/* [switch_type(uint16)] */;
560 struct samr_RidWithAttribute {
565 struct samr_RidWithAttributeArray {
567 struct samr_RidWithAttribute *rids;/* [unique,size_is(count)] */
570 struct samr_DispEntryGeneral {
574 struct lsa_String account_name;
575 struct lsa_String description;
576 struct lsa_String full_name;
579 struct samr_DispInfoGeneral {
581 struct samr_DispEntryGeneral *entries;/* [unique,size_is(count)] */
584 struct samr_DispEntryFull {
588 struct lsa_String account_name;
589 struct lsa_String description;
592 struct samr_DispInfoFull {
594 struct samr_DispEntryFull *entries;/* [unique,size_is(count)] */
597 struct samr_DispEntryFullGroup {
601 struct lsa_String account_name;
602 struct lsa_String description;
605 struct samr_DispInfoFullGroups {
607 struct samr_DispEntryFullGroup *entries;/* [unique,size_is(count)] */
610 struct samr_DispEntryAscii {
612 struct lsa_AsciiStringLarge account_name;
615 struct samr_DispInfoAscii {
617 struct samr_DispEntryAscii *entries;/* [unique,size_is(count)] */
620 union samr_DispInfo {
621 struct samr_DispInfoGeneral info1;/* [case] */
622 struct samr_DispInfoFull info2;/* [case(2)] */
623 struct samr_DispInfoFullGroups info3;/* [case(3)] */
624 struct samr_DispInfoAscii info4;/* [case(4)] */
625 struct samr_DispInfoAscii info5;/* [case(5)] */
626 }/* [switch_type(uint16)] */;
629 uint16_t min_password_length;
630 uint32_t password_properties;
633 enum samr_ConnectVersion
634 #ifndef USE_UINT_ENUMS
636 SAMR_CONNECT_PRE_W2K=1,
638 SAMR_CONNECT_AFTER_W2K=3
641 { __donnot_use_enum_samr_ConnectVersion=0x7FFFFFFF}
642 #define SAMR_CONNECT_PRE_W2K ( 1 )
643 #define SAMR_CONNECT_W2K ( 2 )
644 #define SAMR_CONNECT_AFTER_W2K ( 3 )
648 enum samr_RejectReason;
650 struct samr_ChangeReject {
651 enum samr_RejectReason reason;
656 struct samr_ConnectInfo1 {
657 enum samr_ConnectVersion client_version;
661 union samr_ConnectInfo {
662 struct samr_ConnectInfo1 info1;/* [case] */
665 /* bitmap samr_ValidateFieldsPresent */
666 #define SAMR_VALIDATE_FIELD_PASSWORD_LAST_SET ( 0x00000001 )
667 #define SAMR_VALIDATE_FIELD_BAD_PASSWORD_TIME ( 0x00000002 )
668 #define SAMR_VALIDATE_FIELD_LOCKOUT_TIME ( 0x00000004 )
669 #define SAMR_VALIDATE_FIELD_BAD_PASSWORD_COUNT ( 0x00000008 )
670 #define SAMR_VALIDATE_FIELD_PASSWORD_HISTORY_LENGTH ( 0x00000010 )
671 #define SAMR_VALIDATE_FIELD_PASSWORD_HISTORY ( 0x00000020 )
673 enum samr_ValidatePasswordLevel
674 #ifndef USE_UINT_ENUMS
676 NetValidateAuthentication=1,
677 NetValidatePasswordChange=2,
678 NetValidatePasswordReset=3
681 { __donnot_use_enum_samr_ValidatePasswordLevel=0x7FFFFFFF}
682 #define NetValidateAuthentication ( 1 )
683 #define NetValidatePasswordChange ( 2 )
684 #define NetValidatePasswordReset ( 3 )
688 enum samr_ValidationStatus
689 #ifndef USE_UINT_ENUMS
691 SAMR_VALIDATION_STATUS_SUCCESS=0,
692 SAMR_VALIDATION_STATUS_PASSWORD_MUST_CHANGE=1,
693 SAMR_VALIDATION_STATUS_ACCOUNT_LOCKED_OUT=2,
694 SAMR_VALIDATION_STATUS_BAD_PASSWORD=4,
695 SAMR_VALIDATION_STATUS_PWD_HISTORY_CONFLICT=5,
696 SAMR_VALIDATION_STATUS_PWD_TOO_SHORT=6,
697 SAMR_VALIDATION_STATUS_PWD_TOO_LONG=7,
698 SAMR_VALIDATION_STATUS_NOT_COMPLEX_ENOUGH=8,
699 SAMR_VALIDATION_STATUS_PASSWORD_TOO_RECENT=9
702 { __donnot_use_enum_samr_ValidationStatus=0x7FFFFFFF}
703 #define SAMR_VALIDATION_STATUS_SUCCESS ( 0 )
704 #define SAMR_VALIDATION_STATUS_PASSWORD_MUST_CHANGE ( 1 )
705 #define SAMR_VALIDATION_STATUS_ACCOUNT_LOCKED_OUT ( 2 )
706 #define SAMR_VALIDATION_STATUS_BAD_PASSWORD ( 4 )
707 #define SAMR_VALIDATION_STATUS_PWD_HISTORY_CONFLICT ( 5 )
708 #define SAMR_VALIDATION_STATUS_PWD_TOO_SHORT ( 6 )
709 #define SAMR_VALIDATION_STATUS_PWD_TOO_LONG ( 7 )
710 #define SAMR_VALIDATION_STATUS_NOT_COMPLEX_ENOUGH ( 8 )
711 #define SAMR_VALIDATION_STATUS_PASSWORD_TOO_RECENT ( 9 )
715 struct samr_ValidationBlob {
717 uint8_t *data;/* [unique,size_is(length)] */
720 struct samr_ValidatePasswordInfo {
721 uint32_t fields_present;
722 NTTIME last_password_change;
723 NTTIME bad_password_time;
725 uint32_t bad_pwd_count;
726 uint32_t pwd_history_len;
727 struct samr_ValidationBlob *pwd_history;/* [unique,size_is(pwd_history_len)] */
730 struct samr_ValidatePasswordRepCtr {
731 struct samr_ValidatePasswordInfo info;
732 enum samr_ValidationStatus status;
735 union samr_ValidatePasswordRep {
736 struct samr_ValidatePasswordRepCtr ctr1;/* [case] */
737 struct samr_ValidatePasswordRepCtr ctr2;/* [case(2)] */
738 struct samr_ValidatePasswordRepCtr ctr3;/* [case(3)] */
739 }/* [switch_type(uint16)] */;
741 struct samr_ValidatePasswordReq3 {
742 struct samr_ValidatePasswordInfo info;
743 struct lsa_StringLarge password;
744 struct lsa_StringLarge account;
745 struct samr_ValidationBlob hash;
746 uint8_t pwd_must_change_at_next_logon;
747 uint8_t clear_lockout;
750 struct samr_ValidatePasswordReq2 {
751 struct samr_ValidatePasswordInfo info;
752 struct lsa_StringLarge password;
753 struct lsa_StringLarge account;
754 struct samr_ValidationBlob hash;
755 uint8_t password_matched;
758 struct samr_ValidatePasswordReq1 {
759 struct samr_ValidatePasswordInfo info;
760 uint8_t password_matched;
763 union samr_ValidatePasswordReq {
764 struct samr_ValidatePasswordReq1 req1;/* [case] */
765 struct samr_ValidatePasswordReq2 req2;/* [case(2)] */
766 struct samr_ValidatePasswordReq3 req3;/* [case(3)] */
767 }/* [switch_type(uint16)] */;
770 struct samr_Connect {
772 uint16_t *system_name;/* [unique] */
773 uint32_t access_mask;
777 struct policy_handle *connect_handle;/* [ref] */
786 struct policy_handle *handle;/* [ref] */
790 struct policy_handle *handle;/* [ref] */
797 struct samr_SetSecurity {
799 struct policy_handle *handle;/* [ref] */
801 struct sec_desc_buf *sdbuf;/* [ref] */
811 struct samr_QuerySecurity {
813 struct policy_handle *handle;/* [ref] */
818 struct sec_desc_buf **sdbuf;/* [ref] */
825 struct samr_Shutdown {
827 struct policy_handle *connect_handle;/* [ref] */
837 struct samr_LookupDomain {
839 struct policy_handle *connect_handle;/* [ref] */
840 struct lsa_String *domain_name;/* [ref] */
844 struct dom_sid2 **sid;/* [ref] */
851 struct samr_EnumDomains {
853 struct policy_handle *connect_handle;/* [ref] */
855 uint32_t *resume_handle;/* [ref] */
859 struct samr_SamArray **sam;/* [ref] */
860 uint32_t *num_entries;/* [ref] */
861 uint32_t *resume_handle;/* [ref] */
868 struct samr_OpenDomain {
870 struct policy_handle *connect_handle;/* [ref] */
871 uint32_t access_mask;
872 struct dom_sid2 *sid;/* [ref] */
876 struct policy_handle *domain_handle;/* [ref] */
883 struct samr_QueryDomainInfo {
885 struct policy_handle *domain_handle;/* [ref] */
890 union samr_DomainInfo **info;/* [ref,switch_is(level)] */
897 struct samr_SetDomainInfo {
899 struct policy_handle *domain_handle;/* [ref] */
901 union samr_DomainInfo *info;/* [ref,switch_is(level)] */
911 struct samr_CreateDomainGroup {
913 struct policy_handle *domain_handle;/* [ref] */
914 struct lsa_String *name;/* [ref] */
915 uint32_t access_mask;
919 struct policy_handle *group_handle;/* [ref] */
920 uint32_t *rid;/* [ref] */
927 struct samr_EnumDomainGroups {
929 struct policy_handle *domain_handle;/* [ref] */
931 uint32_t *resume_handle;/* [ref] */
935 struct samr_SamArray **sam;/* [ref] */
936 uint32_t *num_entries;/* [ref] */
937 uint32_t *resume_handle;/* [ref] */
944 struct samr_CreateUser {
946 struct policy_handle *domain_handle;/* [ref] */
947 struct lsa_String *account_name;/* [ref] */
948 uint32_t access_mask;
952 struct policy_handle *user_handle;/* [ref] */
953 uint32_t *rid;/* [ref] */
960 struct samr_EnumDomainUsers {
962 struct policy_handle *domain_handle;/* [ref] */
965 uint32_t *resume_handle;/* [ref] */
969 struct samr_SamArray **sam;/* [ref] */
970 uint32_t *num_entries;/* [ref] */
971 uint32_t *resume_handle;/* [ref] */
978 struct samr_CreateDomAlias {
980 struct policy_handle *domain_handle;/* [ref] */
981 struct lsa_String *alias_name;/* [ref] */
982 uint32_t access_mask;
986 struct policy_handle *alias_handle;/* [ref] */
987 uint32_t *rid;/* [ref] */
994 struct samr_EnumDomainAliases {
996 struct policy_handle *domain_handle;/* [ref] */
998 uint32_t *resume_handle;/* [ref] */
1002 struct samr_SamArray **sam;/* [ref] */
1003 uint32_t *num_entries;/* [ref] */
1004 uint32_t *resume_handle;/* [ref] */
1011 struct samr_GetAliasMembership {
1013 struct policy_handle *domain_handle;/* [ref] */
1014 struct lsa_SidArray *sids;/* [ref] */
1018 struct samr_Ids *rids;/* [ref] */
1025 struct samr_LookupNames {
1027 struct policy_handle *domain_handle;/* [ref] */
1028 uint32_t num_names;/* [range(0,1000)] */
1029 struct lsa_String *names;/* [length_is(num_names),size_is(1000)] */
1033 struct samr_Ids *rids;/* [ref] */
1034 struct samr_Ids *types;/* [ref] */
1041 struct samr_LookupRids {
1043 struct policy_handle *domain_handle;/* [ref] */
1044 uint32_t num_rids;/* [range(0,1000)] */
1045 uint32_t *rids;/* [length_is(num_rids),size_is(1000)] */
1049 struct lsa_Strings *names;/* [ref] */
1050 struct samr_Ids *types;/* [ref] */
1057 struct samr_OpenGroup {
1059 struct policy_handle *domain_handle;/* [ref] */
1060 uint32_t access_mask;
1065 struct policy_handle *group_handle;/* [ref] */
1072 struct samr_QueryGroupInfo {
1074 struct policy_handle *group_handle;/* [ref] */
1075 enum samr_GroupInfoEnum level;
1079 union samr_GroupInfo **info;/* [ref,switch_is(level)] */
1086 struct samr_SetGroupInfo {
1088 struct policy_handle *group_handle;/* [ref] */
1089 enum samr_GroupInfoEnum level;
1090 union samr_GroupInfo *info;/* [ref,switch_is(level)] */
1100 struct samr_AddGroupMember {
1102 struct policy_handle *group_handle;/* [ref] */
1114 struct samr_DeleteDomainGroup {
1116 struct policy_handle *group_handle;/* [ref] */
1120 struct policy_handle *group_handle;/* [ref] */
1127 struct samr_DeleteGroupMember {
1129 struct policy_handle *group_handle;/* [ref] */
1140 struct samr_QueryGroupMember {
1142 struct policy_handle *group_handle;/* [ref] */
1146 struct samr_RidTypeArray **rids;/* [ref] */
1153 struct samr_SetMemberAttributesOfGroup {
1155 struct policy_handle *group_handle;/* [ref] */
1167 struct samr_OpenAlias {
1169 struct policy_handle *domain_handle;/* [ref] */
1170 uint32_t access_mask;
1175 struct policy_handle *alias_handle;/* [ref] */
1182 struct samr_QueryAliasInfo {
1184 struct policy_handle *alias_handle;/* [ref] */
1185 enum samr_AliasInfoEnum level;
1189 union samr_AliasInfo **info;/* [ref,switch_is(level)] */
1196 struct samr_SetAliasInfo {
1198 struct policy_handle *alias_handle;/* [ref] */
1199 enum samr_AliasInfoEnum level;
1200 union samr_AliasInfo *info;/* [ref,switch_is(level)] */
1210 struct samr_DeleteDomAlias {
1212 struct policy_handle *alias_handle;/* [ref] */
1216 struct policy_handle *alias_handle;/* [ref] */
1223 struct samr_AddAliasMember {
1225 struct policy_handle *alias_handle;/* [ref] */
1226 struct dom_sid2 *sid;/* [ref] */
1236 struct samr_DeleteAliasMember {
1238 struct policy_handle *alias_handle;/* [ref] */
1239 struct dom_sid2 *sid;/* [ref] */
1249 struct samr_GetMembersInAlias {
1251 struct policy_handle *alias_handle;/* [ref] */
1255 struct lsa_SidArray *sids;/* [ref] */
1262 struct samr_OpenUser {
1264 struct policy_handle *domain_handle;/* [ref] */
1265 uint32_t access_mask;
1270 struct policy_handle *user_handle;/* [ref] */
1277 struct samr_DeleteUser {
1279 struct policy_handle *user_handle;/* [ref] */
1283 struct policy_handle *user_handle;/* [ref] */
1290 struct samr_QueryUserInfo {
1292 struct policy_handle *user_handle;/* [ref] */
1297 union samr_UserInfo **info;/* [ref,switch_is(level)] */
1304 struct samr_SetUserInfo {
1306 struct policy_handle *user_handle;/* [ref] */
1308 union samr_UserInfo *info;/* [ref,switch_is(level)] */
1318 struct samr_ChangePasswordUser {
1320 struct policy_handle *user_handle;/* [ref] */
1322 struct samr_Password *old_lm_crypted;/* [unique] */
1323 struct samr_Password *new_lm_crypted;/* [unique] */
1325 struct samr_Password *old_nt_crypted;/* [unique] */
1326 struct samr_Password *new_nt_crypted;/* [unique] */
1327 uint8_t cross1_present;
1328 struct samr_Password *nt_cross;/* [unique] */
1329 uint8_t cross2_present;
1330 struct samr_Password *lm_cross;/* [unique] */
1340 struct samr_GetGroupsForUser {
1342 struct policy_handle *user_handle;/* [ref] */
1346 struct samr_RidWithAttributeArray **rids;/* [ref] */
1353 struct samr_QueryDisplayInfo {
1355 struct policy_handle *domain_handle;/* [ref] */
1358 uint32_t max_entries;
1363 uint32_t *total_size;/* [ref] */
1364 uint32_t *returned_size;/* [ref] */
1365 union samr_DispInfo *info;/* [ref,switch_is(level)] */
1372 struct samr_GetDisplayEnumerationIndex {
1374 struct policy_handle *domain_handle;/* [ref] */
1376 struct lsa_String *name;/* [ref] */
1380 uint32_t *idx;/* [ref] */
1387 struct samr_TestPrivateFunctionsDomain {
1389 struct policy_handle *domain_handle;/* [ref] */
1399 struct samr_TestPrivateFunctionsUser {
1401 struct policy_handle *user_handle;/* [ref] */
1411 struct samr_GetUserPwInfo {
1413 struct policy_handle *user_handle;/* [ref] */
1417 struct samr_PwInfo *info;/* [ref] */
1424 struct samr_RemoveMemberFromForeignDomain {
1426 struct policy_handle *domain_handle;/* [ref] */
1427 struct dom_sid2 *sid;/* [ref] */
1437 struct samr_QueryDomainInfo2 {
1439 struct policy_handle *domain_handle;/* [ref] */
1444 union samr_DomainInfo **info;/* [ref,switch_is(level)] */
1451 struct samr_QueryUserInfo2 {
1453 struct policy_handle *user_handle;/* [ref] */
1458 union samr_UserInfo *info;/* [ref,switch_is(level)] */
1465 struct samr_QueryDisplayInfo2 {
1467 struct policy_handle *domain_handle;/* [ref] */
1470 uint32_t max_entries;
1475 uint32_t *total_size;/* [ref] */
1476 uint32_t *returned_size;/* [ref] */
1477 union samr_DispInfo *info;/* [ref,switch_is(level)] */
1484 struct samr_GetDisplayEnumerationIndex2 {
1486 struct policy_handle *domain_handle;/* [ref] */
1488 struct lsa_String *name;/* [ref] */
1492 uint32_t *idx;/* [ref] */
1499 struct samr_CreateUser2 {
1501 struct policy_handle *domain_handle;/* [ref] */
1502 struct lsa_String *account_name;/* [ref] */
1503 uint32_t acct_flags;
1504 uint32_t access_mask;
1508 struct policy_handle *user_handle;/* [ref] */
1509 uint32_t *access_granted;/* [ref] */
1510 uint32_t *rid;/* [ref] */
1517 struct samr_QueryDisplayInfo3 {
1519 struct policy_handle *domain_handle;/* [ref] */
1522 uint32_t max_entries;
1527 uint32_t *total_size;/* [ref] */
1528 uint32_t *returned_size;/* [ref] */
1529 union samr_DispInfo *info;/* [ref,switch_is(level)] */
1536 struct samr_AddMultipleMembersToAlias {
1538 struct policy_handle *alias_handle;/* [ref] */
1539 struct lsa_SidArray *sids;/* [ref] */
1549 struct samr_RemoveMultipleMembersFromAlias {
1551 struct policy_handle *alias_handle;/* [ref] */
1552 struct lsa_SidArray *sids;/* [ref] */
1562 struct samr_OemChangePasswordUser2 {
1564 struct lsa_AsciiString *server;/* [unique] */
1565 struct lsa_AsciiString *account;/* [ref] */
1566 struct samr_CryptPassword *password;/* [unique] */
1567 struct samr_Password *hash;/* [unique] */
1577 struct samr_ChangePasswordUser2 {
1579 struct lsa_String *server;/* [unique] */
1580 struct lsa_String *account;/* [ref] */
1581 struct samr_CryptPassword *nt_password;/* [unique] */
1582 struct samr_Password *nt_verifier;/* [unique] */
1584 struct samr_CryptPassword *lm_password;/* [unique] */
1585 struct samr_Password *lm_verifier;/* [unique] */
1595 struct samr_GetDomPwInfo {
1597 struct lsa_String *domain_name;/* [unique] */
1601 struct samr_PwInfo *info;/* [ref] */
1608 struct samr_Connect2 {
1610 const char *system_name;/* [unique,charset(UTF16)] */
1611 uint32_t access_mask;
1615 struct policy_handle *connect_handle;/* [ref] */
1622 struct samr_SetUserInfo2 {
1624 struct policy_handle *user_handle;/* [ref] */
1626 union samr_UserInfo *info;/* [ref,switch_is(level)] */
1636 struct samr_SetBootKeyInformation {
1638 struct policy_handle *connect_handle;/* [ref] */
1651 struct samr_GetBootKeyInformation {
1653 struct policy_handle *domain_handle;/* [ref] */
1657 uint32_t *unknown;/* [ref] */
1664 struct samr_Connect3 {
1666 const char *system_name;/* [unique,charset(UTF16)] */
1668 uint32_t access_mask;
1672 struct policy_handle *connect_handle;/* [ref] */
1679 struct samr_Connect4 {
1681 const char *system_name;/* [unique,charset(UTF16)] */
1682 enum samr_ConnectVersion client_version;
1683 uint32_t access_mask;
1687 struct policy_handle *connect_handle;/* [ref] */
1694 struct samr_ChangePasswordUser3 {
1696 struct lsa_String *server;/* [unique] */
1697 struct lsa_String *account;/* [ref] */
1698 struct samr_CryptPassword *nt_password;/* [unique] */
1699 struct samr_Password *nt_verifier;/* [unique] */
1701 struct samr_CryptPassword *lm_password;/* [unique] */
1702 struct samr_Password *lm_verifier;/* [unique] */
1703 struct samr_CryptPassword *password3;/* [unique] */
1707 struct samr_DomInfo1 **dominfo;/* [ref] */
1708 struct samr_ChangeReject **reject;/* [ref] */
1715 struct samr_Connect5 {
1717 const char *system_name;/* [unique,charset(UTF16)] */
1718 uint32_t access_mask;
1720 union samr_ConnectInfo *info_in;/* [ref,switch_is(level_in)] */
1724 uint32_t *level_out;/* [ref] */
1725 union samr_ConnectInfo *info_out;/* [ref,switch_is(*level_out)] */
1726 struct policy_handle *connect_handle;/* [ref] */
1733 struct samr_RidToSid {
1735 struct policy_handle *domain_handle;/* [ref] */
1740 struct dom_sid2 *sid;/* [ref] */
1747 struct samr_SetDsrmPassword {
1749 struct lsa_String *name;/* [unique] */
1751 struct samr_Password *hash;/* [unique] */
1761 struct samr_ValidatePassword {
1763 enum samr_ValidatePasswordLevel level;
1764 union samr_ValidatePasswordReq req;/* [switch_is(level)] */
1768 union samr_ValidatePasswordRep *rep;/* [ref,switch_is(level)] */
1774 #endif /* _HEADER_samr */