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_ENUM_USERS_MULTIPLIER ( 54 )
12 /* bitmap samr_AcctFlags */
13 #define ACB_DISABLED ( 0x00000001 )
14 #define ACB_HOMDIRREQ ( 0x00000002 )
15 #define ACB_PWNOTREQ ( 0x00000004 )
16 #define ACB_TEMPDUP ( 0x00000008 )
17 #define ACB_NORMAL ( 0x00000010 )
18 #define ACB_MNS ( 0x00000020 )
19 #define ACB_DOMTRUST ( 0x00000040 )
20 #define ACB_WSTRUST ( 0x00000080 )
21 #define ACB_SVRTRUST ( 0x00000100 )
22 #define ACB_PWNOEXP ( 0x00000200 )
23 #define ACB_AUTOLOCK ( 0x00000400 )
24 #define ACB_ENC_TXT_PWD_ALLOWED ( 0x00000800 )
25 #define ACB_SMARTCARD_REQUIRED ( 0x00001000 )
26 #define ACB_TRUSTED_FOR_DELEGATION ( 0x00002000 )
27 #define ACB_NOT_DELEGATED ( 0x00004000 )
28 #define ACB_USE_DES_KEY_ONLY ( 0x00008000 )
29 #define ACB_DONT_REQUIRE_PREAUTH ( 0x00010000 )
30 #define ACB_PW_EXPIRED ( 0x00020000 )
31 #define ACB_NO_AUTH_DATA_REQD ( 0x00080000 )
33 /* bitmap samr_ConnectAccessMask */
34 #define SAMR_ACCESS_CONNECT_TO_SERVER ( 0x00000001 )
35 #define SAMR_ACCESS_SHUTDOWN_SERVER ( 0x00000002 )
36 #define SAMR_ACCESS_INITIALIZE_SERVER ( 0x00000004 )
37 #define SAMR_ACCESS_CREATE_DOMAIN ( 0x00000008 )
38 #define SAMR_ACCESS_ENUM_DOMAINS ( 0x00000010 )
39 #define SAMR_ACCESS_OPEN_DOMAIN ( 0x00000020 )
41 /* bitmap samr_UserAccessMask */
42 #define SAMR_USER_ACCESS_GET_NAME_ETC ( 0x00000001 )
43 #define SAMR_USER_ACCESS_GET_LOCALE ( 0x00000002 )
44 #define SAMR_USER_ACCESS_SET_LOC_COM ( 0x00000004 )
45 #define SAMR_USER_ACCESS_GET_LOGONINFO ( 0x00000008 )
46 #define SAMR_USER_ACCESS_GET_ATTRIBUTES ( 0x00000010 )
47 #define SAMR_USER_ACCESS_SET_ATTRIBUTES ( 0x00000020 )
48 #define SAMR_USER_ACCESS_CHANGE_PASSWORD ( 0x00000040 )
49 #define SAMR_USER_ACCESS_SET_PASSWORD ( 0x00000080 )
50 #define SAMR_USER_ACCESS_GET_GROUPS ( 0x00000100 )
51 #define SAMR_USER_ACCESS_GET_GROUP_MEMBERSHIP ( 0x00000200 )
52 #define SAMR_USER_ACCESS_CHANGE_GROUP_MEMBERSHIP ( 0x00000400 )
54 /* bitmap samr_DomainAccessMask */
55 #define SAMR_DOMAIN_ACCESS_LOOKUP_INFO_1 ( 0x00000001 )
56 #define SAMR_DOMAIN_ACCESS_SET_INFO_1 ( 0x00000002 )
57 #define SAMR_DOMAIN_ACCESS_LOOKUP_INFO_2 ( 0x00000004 )
58 #define SAMR_DOMAIN_ACCESS_SET_INFO_2 ( 0x00000008 )
59 #define SAMR_DOMAIN_ACCESS_CREATE_USER ( 0x00000010 )
60 #define SAMR_DOMAIN_ACCESS_CREATE_GROUP ( 0x00000020 )
61 #define SAMR_DOMAIN_ACCESS_CREATE_ALIAS ( 0x00000040 )
62 #define SAMR_DOMAIN_ACCESS_LOOKUP_ALIAS ( 0x00000080 )
63 #define SAMR_DOMAIN_ACCESS_ENUM_ACCOUNTS ( 0x00000100 )
64 #define SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT ( 0x00000200 )
65 #define SAMR_DOMAIN_ACCESS_SET_INFO_3 ( 0x00000400 )
67 /* bitmap samr_GroupAccessMask */
68 #define SAMR_GROUP_ACCESS_LOOKUP_INFO ( 0x00000001 )
69 #define SAMR_GROUP_ACCESS_SET_INFO ( 0x00000002 )
70 #define SAMR_GROUP_ACCESS_ADD_MEMBER ( 0x00000004 )
71 #define SAMR_GROUP_ACCESS_REMOVE_MEMBER ( 0x00000008 )
72 #define SAMR_GROUP_ACCESS_GET_MEMBERS ( 0x00000010 )
74 /* bitmap samr_AliasAccessMask */
75 #define SAMR_ALIAS_ACCESS_ADD_MEMBER ( 0x00000001 )
76 #define SAMR_ALIAS_ACCESS_REMOVE_MEMBER ( 0x00000002 )
77 #define SAMR_ALIAS_ACCESS_GET_MEMBERS ( 0x00000004 )
78 #define SAMR_ALIAS_ACCESS_LOOKUP_INFO ( 0x00000008 )
79 #define SAMR_ALIAS_ACCESS_SET_INFO ( 0x00000010 )
81 struct samr_SamEntry
{
83 struct lsa_String name
;
86 struct samr_SamArray
{
88 struct samr_SamEntry
*entries
;/* [unique,size_is(count)] */
92 #ifndef USE_UINT_ENUMS
94 SAMR_ROLE_STANDALONE
=0,
95 SAMR_ROLE_DOMAIN_MEMBER
=1,
96 SAMR_ROLE_DOMAIN_BDC
=2,
97 SAMR_ROLE_DOMAIN_PDC
=3
100 { __donnot_use_enum_samr_Role
=0x7FFFFFFF}
101 #define SAMR_ROLE_STANDALONE ( 0 )
102 #define SAMR_ROLE_DOMAIN_MEMBER ( 1 )
103 #define SAMR_ROLE_DOMAIN_BDC ( 2 )
104 #define SAMR_ROLE_DOMAIN_PDC ( 3 )
108 /* bitmap samr_PasswordProperties */
109 #define DOMAIN_PASSWORD_COMPLEX ( 0x00000001 )
110 #define DOMAIN_PASSWORD_NO_ANON_CHANGE ( 0x00000002 )
111 #define DOMAIN_PASSWORD_NO_CLEAR_CHANGE ( 0x00000004 )
112 #define DOMAIN_PASSWORD_LOCKOUT_ADMINS ( 0x00000008 )
113 #define DOMAIN_PASSWORD_STORE_CLEARTEXT ( 0x00000010 )
114 #define DOMAIN_REFUSE_PASSWORD_CHANGE ( 0x00000020 )
116 struct samr_DomInfo1
{
117 uint16_t min_password_length
;
118 uint16_t password_history_length
;
119 uint32_t password_properties
;
120 int64_t max_password_age
;
121 int64_t min_password_age
;
124 struct samr_DomInfo2
{
125 NTTIME force_logoff_time
;
126 struct lsa_String comment
;
127 struct lsa_String domain_name
;
128 struct lsa_String primary
;
129 uint64_t sequence_num
;
135 uint32_t num_aliases
;
138 struct samr_DomInfo3
{
139 NTTIME force_logoff_time
;
142 struct samr_DomInfo4
{
143 struct lsa_String comment
;
146 struct samr_DomInfo5
{
147 struct lsa_String domain_name
;
150 struct samr_DomInfo6
{
151 struct lsa_String primary
;
154 struct samr_DomInfo7
{
158 struct samr_DomInfo8
{
159 uint64_t sequence_num
;
160 NTTIME domain_create_time
;
163 struct samr_DomInfo9
{
167 struct samr_DomInfo11
{
168 struct samr_DomInfo2 info2
;
169 uint64_t lockout_duration
;
170 uint64_t lockout_window
;
171 uint16_t lockout_threshold
;
174 struct samr_DomInfo12
{
175 uint64_t lockout_duration
;
176 uint64_t lockout_window
;
177 uint16_t lockout_threshold
;
180 struct samr_DomInfo13
{
181 uint64_t sequence_num
;
182 NTTIME domain_create_time
;
187 union samr_DomainInfo
{
188 struct samr_DomInfo1 info1
;/* [case] */
189 struct samr_DomInfo2 info2
;/* [case(2)] */
190 struct samr_DomInfo3 info3
;/* [case(3)] */
191 struct samr_DomInfo4 info4
;/* [case(4)] */
192 struct samr_DomInfo5 info5
;/* [case(5)] */
193 struct samr_DomInfo6 info6
;/* [case(6)] */
194 struct samr_DomInfo7 info7
;/* [case(7)] */
195 struct samr_DomInfo8 info8
;/* [case(8)] */
196 struct samr_DomInfo9 info9
;/* [case(9)] */
197 struct samr_DomInfo11 info11
;/* [case(11)] */
198 struct samr_DomInfo12 info12
;/* [case(12)] */
199 struct samr_DomInfo13 info13
;/* [case(13)] */
200 }/* [switch_type(uint16)] */;
203 uint32_t count
;/* [range(0,1024)] */
204 uint32_t *ids
;/* [unique,size_is(count)] */
207 /* bitmap samr_GroupAttrs */
208 #define SE_GROUP_MANDATORY ( 0x00000001 )
209 #define SE_GROUP_ENABLED_BY_DEFAULT ( 0x00000002 )
210 #define SE_GROUP_ENABLED ( 0x00000004 )
211 #define SE_GROUP_OWNER ( 0x00000008 )
212 #define SE_GROUP_USE_FOR_DENY_ONLY ( 0x00000010 )
213 #define SE_GROUP_RESOURCE ( 0x20000000 )
214 #define SE_GROUP_LOGON_ID ( 0xC0000000 )
216 struct samr_GroupInfoAll
{
217 struct lsa_String name
;
219 uint32_t num_members
;
220 struct lsa_String description
;
223 struct samr_GroupInfoAttributes
{
227 struct samr_GroupInfoDescription
{
228 struct lsa_String description
;
231 enum samr_GroupInfoEnum
232 #ifndef USE_UINT_ENUMS
236 GROUPINFOATTRIBUTES
=3,
237 GROUPINFODESCRIPTION
=4,
241 { __donnot_use_enum_samr_GroupInfoEnum
=0x7FFFFFFF}
242 #define GROUPINFOALL ( 1 )
243 #define GROUPINFONAME ( 2 )
244 #define GROUPINFOATTRIBUTES ( 3 )
245 #define GROUPINFODESCRIPTION ( 4 )
246 #define GROUPINFOALL2 ( 5 )
250 union samr_GroupInfo
{
251 struct samr_GroupInfoAll all
;/* [case(GROUPINFOALL)] */
252 struct lsa_String name
;/* [case(GROUPINFONAME)] */
253 struct samr_GroupInfoAttributes attributes
;/* [case(GROUPINFOATTRIBUTES)] */
254 struct lsa_String description
;/* [case(GROUPINFODESCRIPTION)] */
255 struct samr_GroupInfoAll all2
;/* [case(GROUPINFOALL2)] */
256 }/* [switch_type(samr_GroupInfoEnum)] */;
258 struct samr_RidTypeArray
{
260 uint32_t *rids
;/* [unique,size_is(count)] */
261 uint32_t *types
;/* [unique,size_is(count)] */
264 struct samr_AliasInfoAll
{
265 struct lsa_String name
;
266 uint32_t num_members
;
267 struct lsa_String description
;
270 enum samr_AliasInfoEnum
271 #ifndef USE_UINT_ENUMS
275 ALIASINFODESCRIPTION
=3
278 { __donnot_use_enum_samr_AliasInfoEnum
=0x7FFFFFFF}
279 #define ALIASINFOALL ( 1 )
280 #define ALIASINFONAME ( 2 )
281 #define ALIASINFODESCRIPTION ( 3 )
285 union samr_AliasInfo
{
286 struct samr_AliasInfoAll all
;/* [case(ALIASINFOALL)] */
287 struct lsa_String name
;/* [case(ALIASINFONAME)] */
288 struct lsa_String description
;/* [case(ALIASINFODESCRIPTION)] */
289 }/* [switch_type(samr_AliasInfoEnum)] */;
291 struct samr_UserInfo1
{
292 struct lsa_String account_name
;
293 struct lsa_String full_name
;
294 uint32_t primary_gid
;
295 struct lsa_String description
;
296 struct lsa_String comment
;
299 struct samr_UserInfo2
{
300 struct lsa_String comment
;
301 struct lsa_String unknown
;
302 uint16_t country_code
;
306 struct samr_LogonHours
{
307 uint16_t units_per_week
;
308 uint8_t *bits
;/* [unique,length_is(units_per_week/8),size_is(1260)] */
309 }/* [public,flag(LIBNDR_PRINT_ARRAY_HEX)] */;
311 struct samr_UserInfo3
{
312 struct lsa_String account_name
;
313 struct lsa_String full_name
;
315 uint32_t primary_gid
;
316 struct lsa_String home_directory
;
317 struct lsa_String home_drive
;
318 struct lsa_String logon_script
;
319 struct lsa_String profile_path
;
320 struct lsa_String workstations
;
323 NTTIME last_password_change
;
324 NTTIME allow_password_change
;
325 NTTIME force_password_change
;
326 struct samr_LogonHours logon_hours
;
327 uint16_t bad_password_count
;
328 uint16_t logon_count
;
332 struct samr_UserInfo4
{
333 struct samr_LogonHours logon_hours
;
336 struct samr_UserInfo5
{
337 struct lsa_String account_name
;
338 struct lsa_String full_name
;
340 uint32_t primary_gid
;
341 struct lsa_String home_directory
;
342 struct lsa_String home_drive
;
343 struct lsa_String logon_script
;
344 struct lsa_String profile_path
;
345 struct lsa_String description
;
346 struct lsa_String workstations
;
349 struct samr_LogonHours logon_hours
;
350 uint16_t bad_password_count
;
351 uint16_t logon_count
;
352 NTTIME last_password_change
;
357 struct samr_UserInfo6
{
358 struct lsa_String account_name
;
359 struct lsa_String full_name
;
362 struct samr_UserInfo7
{
363 struct lsa_String account_name
;
366 struct samr_UserInfo8
{
367 struct lsa_String full_name
;
370 struct samr_UserInfo9
{
371 uint32_t primary_gid
;
374 struct samr_UserInfo10
{
375 struct lsa_String home_directory
;
376 struct lsa_String home_drive
;
379 struct samr_UserInfo11
{
380 struct lsa_String logon_script
;
383 struct samr_UserInfo12
{
384 struct lsa_String profile_path
;
387 struct samr_UserInfo13
{
388 struct lsa_String description
;
391 struct samr_UserInfo14
{
392 struct lsa_String workstations
;
395 struct samr_UserInfo16
{
399 struct samr_UserInfo17
{
403 struct samr_Password
{
405 }/* [public,flag(LIBNDR_PRINT_ARRAY_HEX)] */;
407 struct samr_UserInfo18
{
408 struct samr_Password lm_pwd
;
409 struct samr_Password nt_pwd
;
410 uint8_t lm_pwd_active
;
411 uint8_t nt_pwd_active
;
414 struct samr_UserInfo20
{
415 struct lsa_String parameters
;
418 /* bitmap samr_FieldsPresent */
419 #define SAMR_FIELD_ACCOUNT_NAME ( 0x00000001 )
420 #define SAMR_FIELD_FULL_NAME ( 0x00000002 )
421 #define SAMR_FIELD_RID ( 0x00000004 )
422 #define SAMR_FIELD_PRIMARY_GID ( 0x00000008 )
423 #define SAMR_FIELD_DESCRIPTION ( 0x00000010 )
424 #define SAMR_FIELD_COMMENT ( 0x00000020 )
425 #define SAMR_FIELD_HOME_DIRECTORY ( 0x00000040 )
426 #define SAMR_FIELD_HOME_DRIVE ( 0x00000080 )
427 #define SAMR_FIELD_LOGON_SCRIPT ( 0x00000100 )
428 #define SAMR_FIELD_PROFILE_PATH ( 0x00000200 )
429 #define SAMR_FIELD_WORKSTATIONS ( 0x00000400 )
430 #define SAMR_FIELD_LAST_LOGON ( 0x00000800 )
431 #define SAMR_FIELD_LAST_LOGOFF ( 0x00001000 )
432 #define SAMR_FIELD_LOGON_HOURS ( 0x00002000 )
433 #define SAMR_FIELD_BAD_PWD_COUNT ( 0x00004000 )
434 #define SAMR_FIELD_NUM_LOGONS ( 0x00008000 )
435 #define SAMR_FIELD_ALLOW_PWD_CHANGE ( 0x00010000 )
436 #define SAMR_FIELD_FORCE_PWD_CHANGE ( 0x00020000 )
437 #define SAMR_FIELD_LAST_PWD_CHANGE ( 0x00040000 )
438 #define SAMR_FIELD_ACCT_EXPIRY ( 0x00080000 )
439 #define SAMR_FIELD_ACCT_FLAGS ( 0x00100000 )
440 #define SAMR_FIELD_PARAMETERS ( 0x00200000 )
441 #define SAMR_FIELD_COUNTRY_CODE ( 0x00400000 )
442 #define SAMR_FIELD_CODE_PAGE ( 0x00800000 )
443 #define SAMR_FIELD_PASSWORD ( 0x01000000 )
444 #define SAMR_FIELD_PASSWORD2 ( 0x02000000 )
445 #define SAMR_FIELD_PRIVATE_DATA ( 0x04000000 )
446 #define SAMR_FIELD_EXPIRED_FLAG ( 0x08000000 )
447 #define SAMR_FIELD_SEC_DESC ( 0x10000000 )
448 #define SAMR_FIELD_OWF_PWD ( 0x20000000 )
450 struct samr_UserInfo21
{
453 NTTIME last_password_change
;
455 NTTIME allow_password_change
;
456 NTTIME force_password_change
;
457 struct lsa_String account_name
;
458 struct lsa_String full_name
;
459 struct lsa_String home_directory
;
460 struct lsa_String home_drive
;
461 struct lsa_String logon_script
;
462 struct lsa_String profile_path
;
463 struct lsa_String description
;
464 struct lsa_String workstations
;
465 struct lsa_String comment
;
466 struct lsa_String parameters
;
467 struct lsa_String unknown1
;
468 struct lsa_String unknown2
;
469 struct lsa_String unknown3
;
471 uint8_t *buffer
;/* [unique,size_is(buf_count)] */
473 uint32_t primary_gid
;
475 uint32_t fields_present
;
476 struct samr_LogonHours logon_hours
;
477 uint16_t bad_password_count
;
478 uint16_t logon_count
;
479 uint16_t country_code
;
481 uint8_t nt_password_set
;
482 uint8_t lm_password_set
;
483 uint8_t password_expired
;
487 struct samr_CryptPassword
{
489 }/* [public,flag(LIBNDR_PRINT_ARRAY_HEX)] */;
491 struct samr_UserInfo23
{
492 struct samr_UserInfo21 info
;
493 struct samr_CryptPassword password
;
496 struct samr_UserInfo24
{
497 struct samr_CryptPassword password
;
501 struct samr_CryptPasswordEx
{
503 }/* [flag(LIBNDR_PRINT_ARRAY_HEX)] */;
505 struct samr_UserInfo25
{
506 struct samr_UserInfo21 info
;
507 struct samr_CryptPasswordEx password
;
510 struct samr_UserInfo26
{
511 struct samr_CryptPasswordEx password
;
515 union samr_UserInfo
{
516 struct samr_UserInfo1 info1
;/* [case] */
517 struct samr_UserInfo2 info2
;/* [case(2)] */
518 struct samr_UserInfo3 info3
;/* [case(3)] */
519 struct samr_UserInfo4 info4
;/* [case(4)] */
520 struct samr_UserInfo5 info5
;/* [case(5)] */
521 struct samr_UserInfo6 info6
;/* [case(6)] */
522 struct samr_UserInfo7 info7
;/* [case(7)] */
523 struct samr_UserInfo8 info8
;/* [case(8)] */
524 struct samr_UserInfo9 info9
;/* [case(9)] */
525 struct samr_UserInfo10 info10
;/* [case(10)] */
526 struct samr_UserInfo11 info11
;/* [case(11)] */
527 struct samr_UserInfo12 info12
;/* [case(12)] */
528 struct samr_UserInfo13 info13
;/* [case(13)] */
529 struct samr_UserInfo14 info14
;/* [case(14)] */
530 struct samr_UserInfo16 info16
;/* [case(16)] */
531 struct samr_UserInfo17 info17
;/* [case(17)] */
532 struct samr_UserInfo18 info18
;/* [case(18)] */
533 struct samr_UserInfo20 info20
;/* [case(20)] */
534 struct samr_UserInfo21 info21
;/* [case(21)] */
535 struct samr_UserInfo23 info23
;/* [case(23)] */
536 struct samr_UserInfo24 info24
;/* [case(24)] */
537 struct samr_UserInfo25 info25
;/* [case(25)] */
538 struct samr_UserInfo26 info26
;/* [case(26)] */
539 }/* [switch_type(uint16)] */;
541 struct samr_RidWithAttribute
{
546 struct samr_RidWithAttributeArray
{
548 struct samr_RidWithAttribute
*rids
;/* [unique,size_is(count)] */
551 struct samr_DispEntryGeneral
{
555 struct lsa_String account_name
;
556 struct lsa_String description
;
557 struct lsa_String full_name
;
560 struct samr_DispInfoGeneral
{
562 struct samr_DispEntryGeneral
*entries
;/* [unique,size_is(count)] */
565 struct samr_DispEntryFull
{
569 struct lsa_String account_name
;
570 struct lsa_String description
;
573 struct samr_DispInfoFull
{
575 struct samr_DispEntryFull
*entries
;/* [unique,size_is(count)] */
578 struct samr_DispEntryFullGroup
{
582 struct lsa_String account_name
;
583 struct lsa_String description
;
586 struct samr_DispInfoFullGroups
{
588 struct samr_DispEntryFullGroup
*entries
;/* [unique,size_is(count)] */
591 struct samr_DispEntryAscii
{
593 struct lsa_AsciiString account_name
;
596 struct samr_DispInfoAscii
{
598 struct samr_DispEntryAscii
*entries
;/* [unique,size_is(count)] */
601 union samr_DispInfo
{
602 struct samr_DispInfoGeneral info1
;/* [case] */
603 struct samr_DispInfoFull info2
;/* [case(2)] */
604 struct samr_DispInfoFullGroups info3
;/* [case(3)] */
605 struct samr_DispInfoAscii info4
;/* [case(4)] */
606 struct samr_DispInfoAscii info5
;/* [case(5)] */
607 }/* [switch_type(uint16)] */;
610 uint16_t min_password_length
;
611 uint32_t password_properties
;
614 enum samr_ConnectVersion
615 #ifndef USE_UINT_ENUMS
617 SAMR_CONNECT_PRE_W2K
=1,
619 SAMR_CONNECT_AFTER_W2K
=3
622 { __donnot_use_enum_samr_ConnectVersion
=0x7FFFFFFF}
623 #define SAMR_CONNECT_PRE_W2K ( 1 )
624 #define SAMR_CONNECT_W2K ( 2 )
625 #define SAMR_CONNECT_AFTER_W2K ( 3 )
629 enum samr_RejectReason
;
631 struct samr_ChangeReject
{
632 enum samr_RejectReason reason
;
637 struct samr_ConnectInfo1
{
638 enum samr_ConnectVersion client_version
;
642 union samr_ConnectInfo
{
643 struct samr_ConnectInfo1 info1
;/* [case] */
646 /* bitmap samr_ValidateFieldsPresent */
647 #define SAMR_VALIDATE_FIELD_PASSWORD_LAST_SET ( 0x00000001 )
648 #define SAMR_VALIDATE_FIELD_BAD_PASSWORD_TIME ( 0x00000002 )
649 #define SAMR_VALIDATE_FIELD_LOCKOUT_TIME ( 0x00000004 )
650 #define SAMR_VALIDATE_FIELD_BAD_PASSWORD_COUNT ( 0x00000008 )
651 #define SAMR_VALIDATE_FIELD_PASSWORD_HISTORY_LENGTH ( 0x00000010 )
652 #define SAMR_VALIDATE_FIELD_PASSWORD_HISTORY ( 0x00000020 )
654 enum samr_ValidatePasswordLevel
655 #ifndef USE_UINT_ENUMS
657 NetValidateAuthentication
=1,
658 NetValidatePasswordChange
=2,
659 NetValidatePasswordReset
=3
662 { __donnot_use_enum_samr_ValidatePasswordLevel
=0x7FFFFFFF}
663 #define NetValidateAuthentication ( 1 )
664 #define NetValidatePasswordChange ( 2 )
665 #define NetValidatePasswordReset ( 3 )
669 enum samr_ValidationStatus
670 #ifndef USE_UINT_ENUMS
672 SAMR_VALIDATION_STATUS_SUCCESS
=0,
673 SAMR_VALIDATION_STATUS_PASSWORD_MUST_CHANGE
=1,
674 SAMR_VALIDATION_STATUS_ACCOUNT_LOCKED_OUT
=2,
675 SAMR_VALIDATION_STATUS_BAD_PASSWORD
=4,
676 SAMR_VALIDATION_STATUS_PWD_HISTORY_CONFLICT
=5,
677 SAMR_VALIDATION_STATUS_PWD_TOO_SHORT
=6,
678 SAMR_VALIDATION_STATUS_PWD_TOO_LONG
=7,
679 SAMR_VALIDATION_STATUS_NOT_COMPLEX_ENOUGH
=8,
680 SAMR_VALIDATION_STATUS_PASSWORD_TOO_RECENT
=9
683 { __donnot_use_enum_samr_ValidationStatus
=0x7FFFFFFF}
684 #define SAMR_VALIDATION_STATUS_SUCCESS ( 0 )
685 #define SAMR_VALIDATION_STATUS_PASSWORD_MUST_CHANGE ( 1 )
686 #define SAMR_VALIDATION_STATUS_ACCOUNT_LOCKED_OUT ( 2 )
687 #define SAMR_VALIDATION_STATUS_BAD_PASSWORD ( 4 )
688 #define SAMR_VALIDATION_STATUS_PWD_HISTORY_CONFLICT ( 5 )
689 #define SAMR_VALIDATION_STATUS_PWD_TOO_SHORT ( 6 )
690 #define SAMR_VALIDATION_STATUS_PWD_TOO_LONG ( 7 )
691 #define SAMR_VALIDATION_STATUS_NOT_COMPLEX_ENOUGH ( 8 )
692 #define SAMR_VALIDATION_STATUS_PASSWORD_TOO_RECENT ( 9 )
696 struct samr_ValidationBlob
{
698 uint8_t *data
;/* [unique,size_is(length)] */
701 struct samr_ValidatePasswordInfo
{
702 uint32_t fields_present
;
703 NTTIME last_password_change
;
704 NTTIME bad_password_time
;
706 uint32_t bad_pwd_count
;
707 uint32_t pwd_history_len
;
708 struct samr_ValidationBlob
*pwd_history
;/* [unique,size_is(pwd_history_len)] */
711 struct samr_ValidatePasswordRepCtr
{
712 struct samr_ValidatePasswordInfo info
;
713 enum samr_ValidationStatus status
;
716 union samr_ValidatePasswordRep
{
717 struct samr_ValidatePasswordRepCtr ctr1
;/* [case] */
718 struct samr_ValidatePasswordRepCtr ctr2
;/* [case(2)] */
719 struct samr_ValidatePasswordRepCtr ctr3
;/* [case(3)] */
720 }/* [switch_type(uint16)] */;
722 struct samr_ValidatePasswordReq3
{
723 struct samr_ValidatePasswordInfo info
;
724 struct lsa_StringLarge password
;
725 struct lsa_StringLarge account
;
726 struct samr_ValidationBlob hash
;
727 uint8_t pwd_must_change_at_next_logon
;
728 uint8_t clear_lockout
;
731 struct samr_ValidatePasswordReq2
{
732 struct samr_ValidatePasswordInfo info
;
733 struct lsa_StringLarge password
;
734 struct lsa_StringLarge account
;
735 struct samr_ValidationBlob hash
;
736 uint8_t password_matched
;
739 struct samr_ValidatePasswordReq1
{
740 struct samr_ValidatePasswordInfo info
;
741 uint8_t password_matched
;
744 union samr_ValidatePasswordReq
{
745 struct samr_ValidatePasswordReq1 req1
;/* [case] */
746 struct samr_ValidatePasswordReq2 req2
;/* [case(2)] */
747 struct samr_ValidatePasswordReq3 req3
;/* [case(3)] */
748 }/* [switch_type(uint16)] */;
751 struct samr_Connect
{
753 uint16_t *system_name
;/* [unique] */
754 uint32_t access_mask
;
758 struct policy_handle
*connect_handle
;/* [ref] */
767 struct policy_handle
*handle
;/* [ref] */
771 struct policy_handle
*handle
;/* [ref] */
778 struct samr_SetSecurity
{
780 struct policy_handle
*handle
;/* [ref] */
782 struct sec_desc_buf
*sdbuf
;/* [ref] */
792 struct samr_QuerySecurity
{
794 struct policy_handle
*handle
;/* [ref] */
799 struct sec_desc_buf
**sdbuf
;/* [ref] */
806 struct samr_Shutdown
{
808 struct policy_handle
*connect_handle
;/* [ref] */
818 struct samr_LookupDomain
{
820 struct policy_handle
*connect_handle
;/* [ref] */
821 struct lsa_String
*domain_name
;/* [ref] */
825 struct dom_sid2
**sid
;/* [ref] */
832 struct samr_EnumDomains
{
834 struct policy_handle
*connect_handle
;/* [ref] */
836 uint32_t *resume_handle
;/* [ref] */
840 struct samr_SamArray
*sam
;/* [ref] */
841 uint32_t *num_entries
;/* [ref] */
842 uint32_t *resume_handle
;/* [ref] */
849 struct samr_OpenDomain
{
851 struct policy_handle
*connect_handle
;/* [ref] */
852 uint32_t access_mask
;
853 struct dom_sid2
*sid
;/* [ref] */
857 struct policy_handle
*domain_handle
;/* [ref] */
864 struct samr_QueryDomainInfo
{
866 struct policy_handle
*domain_handle
;/* [ref] */
871 union samr_DomainInfo
**info
;/* [ref,switch_is(level)] */
878 struct samr_SetDomainInfo
{
880 struct policy_handle
*domain_handle
;/* [ref] */
882 union samr_DomainInfo
*info
;/* [ref,switch_is(level)] */
892 struct samr_CreateDomainGroup
{
894 struct policy_handle
*domain_handle
;/* [ref] */
895 struct lsa_String
*name
;/* [ref] */
896 uint32_t access_mask
;
900 struct policy_handle
*group_handle
;/* [ref] */
901 uint32_t *rid
;/* [ref] */
908 struct samr_EnumDomainGroups
{
910 struct policy_handle
*domain_handle
;/* [ref] */
912 uint32_t *resume_handle
;/* [ref] */
916 struct samr_SamArray
*sam
;/* [ref] */
917 uint32_t *num_entries
;/* [ref] */
918 uint32_t *resume_handle
;/* [ref] */
925 struct samr_CreateUser
{
927 struct policy_handle
*domain_handle
;/* [ref] */
928 struct lsa_String
*account_name
;/* [ref] */
929 uint32_t access_mask
;
933 struct policy_handle
*user_handle
;/* [ref] */
934 uint32_t *rid
;/* [ref] */
941 struct samr_EnumDomainUsers
{
943 struct policy_handle
*domain_handle
;/* [ref] */
946 uint32_t *resume_handle
;/* [ref] */
950 struct samr_SamArray
**sam
;/* [ref] */
951 uint32_t *num_entries
;/* [ref] */
952 uint32_t *resume_handle
;/* [ref] */
959 struct samr_CreateDomAlias
{
961 struct policy_handle
*domain_handle
;/* [ref] */
962 struct lsa_String
*alias_name
;/* [ref] */
963 uint32_t access_mask
;
967 struct policy_handle
*alias_handle
;/* [ref] */
968 uint32_t *rid
;/* [ref] */
975 struct samr_EnumDomainAliases
{
977 struct policy_handle
*domain_handle
;/* [ref] */
979 uint32_t *resume_handle
;/* [ref] */
983 struct samr_SamArray
*sam
;/* [ref] */
984 uint32_t *num_entries
;/* [ref] */
985 uint32_t *resume_handle
;/* [ref] */
992 struct samr_GetAliasMembership
{
994 struct policy_handle
*domain_handle
;/* [ref] */
995 struct lsa_SidArray
*sids
;/* [ref] */
999 struct samr_Ids
*rids
;/* [ref] */
1006 struct samr_LookupNames
{
1008 struct policy_handle
*domain_handle
;/* [ref] */
1009 uint32_t num_names
;/* [range(0,1000)] */
1010 struct lsa_String
*names
;/* [length_is(num_names),size_is(1000)] */
1014 struct samr_Ids
*rids
;/* [ref] */
1015 struct samr_Ids
*types
;/* [ref] */
1022 struct samr_LookupRids
{
1024 struct policy_handle
*domain_handle
;/* [ref] */
1025 uint32_t num_rids
;/* [range(0,1000)] */
1026 uint32_t *rids
;/* [length_is(num_rids),size_is(1000)] */
1030 struct lsa_Strings
*names
;/* [ref] */
1031 struct samr_Ids
*types
;/* [ref] */
1038 struct samr_OpenGroup
{
1040 struct policy_handle
*domain_handle
;/* [ref] */
1041 uint32_t access_mask
;
1046 struct policy_handle
*group_handle
;/* [ref] */
1053 struct samr_QueryGroupInfo
{
1055 struct policy_handle
*group_handle
;/* [ref] */
1056 enum samr_GroupInfoEnum level
;
1060 union samr_GroupInfo
**info
;/* [ref,switch_is(level)] */
1067 struct samr_SetGroupInfo
{
1069 struct policy_handle
*group_handle
;/* [ref] */
1070 enum samr_GroupInfoEnum level
;
1071 union samr_GroupInfo
*info
;/* [ref,switch_is(level)] */
1081 struct samr_AddGroupMember
{
1083 struct policy_handle
*group_handle
;/* [ref] */
1095 struct samr_DeleteDomainGroup
{
1097 struct policy_handle
*group_handle
;/* [ref] */
1101 struct policy_handle
*group_handle
;/* [ref] */
1108 struct samr_DeleteGroupMember
{
1110 struct policy_handle
*group_handle
;/* [ref] */
1121 struct samr_QueryGroupMember
{
1123 struct policy_handle
*group_handle
;/* [ref] */
1127 struct samr_RidTypeArray
**rids
;/* [ref] */
1134 struct samr_SetMemberAttributesOfGroup
{
1136 struct policy_handle
*group_handle
;/* [ref] */
1148 struct samr_OpenAlias
{
1150 struct policy_handle
*domain_handle
;/* [ref] */
1151 uint32_t access_mask
;
1156 struct policy_handle
*alias_handle
;/* [ref] */
1163 struct samr_QueryAliasInfo
{
1165 struct policy_handle
*alias_handle
;/* [ref] */
1166 enum samr_AliasInfoEnum level
;
1170 union samr_AliasInfo
**info
;/* [ref,switch_is(level)] */
1177 struct samr_SetAliasInfo
{
1179 struct policy_handle
*alias_handle
;/* [ref] */
1180 enum samr_AliasInfoEnum level
;
1181 union samr_AliasInfo
*info
;/* [ref,switch_is(level)] */
1191 struct samr_DeleteDomAlias
{
1193 struct policy_handle
*alias_handle
;/* [ref] */
1197 struct policy_handle
*alias_handle
;/* [ref] */
1204 struct samr_AddAliasMember
{
1206 struct policy_handle
*alias_handle
;/* [ref] */
1207 struct dom_sid2
*sid
;/* [ref] */
1217 struct samr_DeleteAliasMember
{
1219 struct policy_handle
*alias_handle
;/* [ref] */
1220 struct dom_sid2
*sid
;/* [ref] */
1230 struct samr_GetMembersInAlias
{
1232 struct policy_handle
*alias_handle
;/* [ref] */
1236 struct lsa_SidArray
*sids
;/* [ref] */
1243 struct samr_OpenUser
{
1245 struct policy_handle
*domain_handle
;/* [ref] */
1246 uint32_t access_mask
;
1251 struct policy_handle
*user_handle
;/* [ref] */
1258 struct samr_DeleteUser
{
1260 struct policy_handle
*user_handle
;/* [ref] */
1264 struct policy_handle
*user_handle
;/* [ref] */
1271 struct samr_QueryUserInfo
{
1273 struct policy_handle
*user_handle
;/* [ref] */
1278 union samr_UserInfo
*info
;/* [ref,switch_is(level)] */
1285 struct samr_SetUserInfo
{
1287 struct policy_handle
*user_handle
;/* [ref] */
1289 union samr_UserInfo
*info
;/* [ref,switch_is(level)] */
1299 struct samr_ChangePasswordUser
{
1301 struct policy_handle
*user_handle
;/* [ref] */
1303 struct samr_Password
*old_lm_crypted
;/* [unique] */
1304 struct samr_Password
*new_lm_crypted
;/* [unique] */
1306 struct samr_Password
*old_nt_crypted
;/* [unique] */
1307 struct samr_Password
*new_nt_crypted
;/* [unique] */
1308 uint8_t cross1_present
;
1309 struct samr_Password
*nt_cross
;/* [unique] */
1310 uint8_t cross2_present
;
1311 struct samr_Password
*lm_cross
;/* [unique] */
1321 struct samr_GetGroupsForUser
{
1323 struct policy_handle
*user_handle
;/* [ref] */
1327 struct samr_RidWithAttributeArray
**rids
;/* [ref] */
1334 struct samr_QueryDisplayInfo
{
1336 struct policy_handle
*domain_handle
;/* [ref] */
1339 uint32_t max_entries
;
1344 uint32_t *total_size
;/* [ref] */
1345 uint32_t *returned_size
;/* [ref] */
1346 union samr_DispInfo
*info
;/* [ref,switch_is(level)] */
1353 struct samr_GetDisplayEnumerationIndex
{
1355 struct policy_handle
*domain_handle
;/* [ref] */
1357 struct lsa_String name
;
1361 uint32_t *idx
;/* [ref] */
1368 struct samr_TestPrivateFunctionsDomain
{
1370 struct policy_handle
*domain_handle
;/* [ref] */
1380 struct samr_TestPrivateFunctionsUser
{
1382 struct policy_handle
*user_handle
;/* [ref] */
1392 struct samr_GetUserPwInfo
{
1394 struct policy_handle
*user_handle
;/* [ref] */
1398 struct samr_PwInfo
*info
;/* [ref] */
1405 struct samr_RemoveMemberFromForeignDomain
{
1407 struct policy_handle
*domain_handle
;/* [ref] */
1408 struct dom_sid2
*sid
;/* [ref] */
1418 struct samr_QueryDomainInfo2
{
1420 struct policy_handle
*domain_handle
;/* [ref] */
1425 union samr_DomainInfo
**info
;/* [ref,switch_is(level)] */
1432 struct samr_QueryUserInfo2
{
1434 struct policy_handle
*user_handle
;/* [ref] */
1439 union samr_UserInfo
*info
;/* [ref,switch_is(level)] */
1446 struct samr_QueryDisplayInfo2
{
1448 struct policy_handle
*domain_handle
;/* [ref] */
1451 uint32_t max_entries
;
1456 uint32_t *total_size
;/* [ref] */
1457 uint32_t *returned_size
;/* [ref] */
1458 union samr_DispInfo
*info
;/* [ref,switch_is(level)] */
1465 struct samr_GetDisplayEnumerationIndex2
{
1467 struct policy_handle
*domain_handle
;/* [ref] */
1469 struct lsa_String name
;
1473 uint32_t *idx
;/* [ref] */
1480 struct samr_CreateUser2
{
1482 struct policy_handle
*domain_handle
;/* [ref] */
1483 struct lsa_String
*account_name
;/* [ref] */
1484 uint32_t acct_flags
;
1485 uint32_t access_mask
;
1489 struct policy_handle
*user_handle
;/* [ref] */
1490 uint32_t *access_granted
;/* [ref] */
1491 uint32_t *rid
;/* [ref] */
1498 struct samr_QueryDisplayInfo3
{
1500 struct policy_handle
*domain_handle
;/* [ref] */
1503 uint32_t max_entries
;
1508 uint32_t *total_size
;/* [ref] */
1509 uint32_t *returned_size
;/* [ref] */
1510 union samr_DispInfo
*info
;/* [ref,switch_is(level)] */
1517 struct samr_AddMultipleMembersToAlias
{
1519 struct policy_handle
*alias_handle
;/* [ref] */
1520 struct lsa_SidArray
*sids
;/* [ref] */
1530 struct samr_RemoveMultipleMembersFromAlias
{
1532 struct policy_handle
*alias_handle
;/* [ref] */
1533 struct lsa_SidArray
*sids
;/* [ref] */
1543 struct samr_OemChangePasswordUser2
{
1545 struct lsa_AsciiString
*server
;/* [unique] */
1546 struct lsa_AsciiString
*account
;/* [ref] */
1547 struct samr_CryptPassword
*password
;/* [unique] */
1548 struct samr_Password
*hash
;/* [unique] */
1558 struct samr_ChangePasswordUser2
{
1560 struct lsa_String
*server
;/* [unique] */
1561 struct lsa_String
*account
;/* [ref] */
1562 struct samr_CryptPassword
*nt_password
;/* [unique] */
1563 struct samr_Password
*nt_verifier
;/* [unique] */
1565 struct samr_CryptPassword
*lm_password
;/* [unique] */
1566 struct samr_Password
*lm_verifier
;/* [unique] */
1576 struct samr_GetDomPwInfo
{
1578 struct lsa_String
*domain_name
;/* [unique] */
1582 struct samr_PwInfo
*info
;/* [ref] */
1589 struct samr_Connect2
{
1591 const char *system_name
;/* [unique,charset(UTF16)] */
1592 uint32_t access_mask
;
1596 struct policy_handle
*connect_handle
;/* [ref] */
1603 struct samr_SetUserInfo2
{
1605 struct policy_handle
*user_handle
;/* [ref] */
1607 union samr_UserInfo
*info
;/* [ref,switch_is(level)] */
1617 struct samr_SetBootKeyInformation
{
1619 struct policy_handle
*connect_handle
;/* [ref] */
1632 struct samr_GetBootKeyInformation
{
1634 struct policy_handle
*domain_handle
;/* [ref] */
1638 uint32_t *unknown
;/* [ref] */
1645 struct samr_Connect3
{
1647 const char *system_name
;/* [unique,charset(UTF16)] */
1649 uint32_t access_mask
;
1653 struct policy_handle
*connect_handle
;/* [ref] */
1660 struct samr_Connect4
{
1662 const char *system_name
;/* [unique,charset(UTF16)] */
1663 enum samr_ConnectVersion client_version
;
1664 uint32_t access_mask
;
1668 struct policy_handle
*connect_handle
;/* [ref] */
1675 struct samr_ChangePasswordUser3
{
1677 struct lsa_String
*server
;/* [unique] */
1678 struct lsa_String
*account
;/* [ref] */
1679 struct samr_CryptPassword
*nt_password
;/* [unique] */
1680 struct samr_Password
*nt_verifier
;/* [unique] */
1682 struct samr_CryptPassword
*lm_password
;/* [unique] */
1683 struct samr_Password
*lm_verifier
;/* [unique] */
1684 struct samr_CryptPassword
*password3
;/* [unique] */
1688 struct samr_DomInfo1
**dominfo
;/* [ref] */
1689 struct samr_ChangeReject
**reject
;/* [ref] */
1696 struct samr_Connect5
{
1698 const char *system_name
;/* [unique,charset(UTF16)] */
1699 uint32_t access_mask
;
1701 union samr_ConnectInfo
*info_in
;/* [ref,switch_is(level_in)] */
1705 uint32_t *level_out
;/* [ref] */
1706 union samr_ConnectInfo
*info_out
;/* [ref,switch_is(*level_out)] */
1707 struct policy_handle
*connect_handle
;/* [ref] */
1714 struct samr_RidToSid
{
1716 struct policy_handle
*domain_handle
;/* [ref] */
1721 struct dom_sid2
*sid
;/* [ref] */
1728 struct samr_SetDsrmPassword
{
1730 struct lsa_String
*name
;/* [unique] */
1732 struct samr_Password
*hash
;/* [unique] */
1742 struct samr_ValidatePassword
{
1744 enum samr_ValidatePasswordLevel level
;
1745 union samr_ValidatePasswordReq req
;/* [switch_is(level)] */
1749 union samr_ValidatePasswordRep
*rep
;/* [ref,switch_is(level)] */
1755 #endif /* _HEADER_samr */