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 MAX_SAM_ENTRIES_W2K ( 0x400 )
12 #define MAX_SAM_ENTRIES_W95 ( 50 )
13 #define SAMR_ENUM_USERS_MULTIPLIER ( 54 )
14 #define PASS_MUST_CHANGE_AT_NEXT_LOGON ( 0x01 )
15 #define PASS_DONT_CHANGE_AT_NEXT_LOGON ( 0x00 )
16 /* bitmap samr_AcctFlags */
17 #define ACB_DISABLED ( 0x00000001 )
18 #define ACB_HOMDIRREQ ( 0x00000002 )
19 #define ACB_PWNOTREQ ( 0x00000004 )
20 #define ACB_TEMPDUP ( 0x00000008 )
21 #define ACB_NORMAL ( 0x00000010 )
22 #define ACB_MNS ( 0x00000020 )
23 #define ACB_DOMTRUST ( 0x00000040 )
24 #define ACB_WSTRUST ( 0x00000080 )
25 #define ACB_SVRTRUST ( 0x00000100 )
26 #define ACB_PWNOEXP ( 0x00000200 )
27 #define ACB_AUTOLOCK ( 0x00000400 )
28 #define ACB_ENC_TXT_PWD_ALLOWED ( 0x00000800 )
29 #define ACB_SMARTCARD_REQUIRED ( 0x00001000 )
30 #define ACB_TRUSTED_FOR_DELEGATION ( 0x00002000 )
31 #define ACB_NOT_DELEGATED ( 0x00004000 )
32 #define ACB_USE_DES_KEY_ONLY ( 0x00008000 )
33 #define ACB_DONT_REQUIRE_PREAUTH ( 0x00010000 )
34 #define ACB_PW_EXPIRED ( 0x00020000 )
35 #define ACB_NO_AUTH_DATA_REQD ( 0x00080000 )
37 /* bitmap samr_ConnectAccessMask */
38 #define SAMR_ACCESS_CONNECT_TO_SERVER ( 0x00000001 )
39 #define SAMR_ACCESS_SHUTDOWN_SERVER ( 0x00000002 )
40 #define SAMR_ACCESS_INITIALIZE_SERVER ( 0x00000004 )
41 #define SAMR_ACCESS_CREATE_DOMAIN ( 0x00000008 )
42 #define SAMR_ACCESS_ENUM_DOMAINS ( 0x00000010 )
43 #define SAMR_ACCESS_OPEN_DOMAIN ( 0x00000020 )
45 /* bitmap samr_UserAccessMask */
46 #define SAMR_USER_ACCESS_GET_NAME_ETC ( 0x00000001 )
47 #define SAMR_USER_ACCESS_GET_LOCALE ( 0x00000002 )
48 #define SAMR_USER_ACCESS_SET_LOC_COM ( 0x00000004 )
49 #define SAMR_USER_ACCESS_GET_LOGONINFO ( 0x00000008 )
50 #define SAMR_USER_ACCESS_GET_ATTRIBUTES ( 0x00000010 )
51 #define SAMR_USER_ACCESS_SET_ATTRIBUTES ( 0x00000020 )
52 #define SAMR_USER_ACCESS_CHANGE_PASSWORD ( 0x00000040 )
53 #define SAMR_USER_ACCESS_SET_PASSWORD ( 0x00000080 )
54 #define SAMR_USER_ACCESS_GET_GROUPS ( 0x00000100 )
55 #define SAMR_USER_ACCESS_GET_GROUP_MEMBERSHIP ( 0x00000200 )
56 #define SAMR_USER_ACCESS_CHANGE_GROUP_MEMBERSHIP ( 0x00000400 )
58 /* bitmap samr_DomainAccessMask */
59 #define SAMR_DOMAIN_ACCESS_LOOKUP_INFO_1 ( 0x00000001 )
60 #define SAMR_DOMAIN_ACCESS_SET_INFO_1 ( 0x00000002 )
61 #define SAMR_DOMAIN_ACCESS_LOOKUP_INFO_2 ( 0x00000004 )
62 #define SAMR_DOMAIN_ACCESS_SET_INFO_2 ( 0x00000008 )
63 #define SAMR_DOMAIN_ACCESS_CREATE_USER ( 0x00000010 )
64 #define SAMR_DOMAIN_ACCESS_CREATE_GROUP ( 0x00000020 )
65 #define SAMR_DOMAIN_ACCESS_CREATE_ALIAS ( 0x00000040 )
66 #define SAMR_DOMAIN_ACCESS_LOOKUP_ALIAS ( 0x00000080 )
67 #define SAMR_DOMAIN_ACCESS_ENUM_ACCOUNTS ( 0x00000100 )
68 #define SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT ( 0x00000200 )
69 #define SAMR_DOMAIN_ACCESS_SET_INFO_3 ( 0x00000400 )
71 /* bitmap samr_GroupAccessMask */
72 #define SAMR_GROUP_ACCESS_LOOKUP_INFO ( 0x00000001 )
73 #define SAMR_GROUP_ACCESS_SET_INFO ( 0x00000002 )
74 #define SAMR_GROUP_ACCESS_ADD_MEMBER ( 0x00000004 )
75 #define SAMR_GROUP_ACCESS_REMOVE_MEMBER ( 0x00000008 )
76 #define SAMR_GROUP_ACCESS_GET_MEMBERS ( 0x00000010 )
78 /* bitmap samr_AliasAccessMask */
79 #define SAMR_ALIAS_ACCESS_ADD_MEMBER ( 0x00000001 )
80 #define SAMR_ALIAS_ACCESS_REMOVE_MEMBER ( 0x00000002 )
81 #define SAMR_ALIAS_ACCESS_GET_MEMBERS ( 0x00000004 )
82 #define SAMR_ALIAS_ACCESS_LOOKUP_INFO ( 0x00000008 )
83 #define SAMR_ALIAS_ACCESS_SET_INFO ( 0x00000010 )
85 struct samr_SamEntry
{
87 struct lsa_String name
;
90 struct samr_SamArray
{
92 struct samr_SamEntry
*entries
;/* [unique,size_is(count)] */
96 #ifndef USE_UINT_ENUMS
98 SAMR_ROLE_STANDALONE
=0,
99 SAMR_ROLE_DOMAIN_MEMBER
=1,
100 SAMR_ROLE_DOMAIN_BDC
=2,
101 SAMR_ROLE_DOMAIN_PDC
=3
104 { __donnot_use_enum_samr_Role
=0x7FFFFFFF}
105 #define SAMR_ROLE_STANDALONE ( 0 )
106 #define SAMR_ROLE_DOMAIN_MEMBER ( 1 )
107 #define SAMR_ROLE_DOMAIN_BDC ( 2 )
108 #define SAMR_ROLE_DOMAIN_PDC ( 3 )
112 /* bitmap samr_PasswordProperties */
113 #define DOMAIN_PASSWORD_COMPLEX ( 0x00000001 )
114 #define DOMAIN_PASSWORD_NO_ANON_CHANGE ( 0x00000002 )
115 #define DOMAIN_PASSWORD_NO_CLEAR_CHANGE ( 0x00000004 )
116 #define DOMAIN_PASSWORD_LOCKOUT_ADMINS ( 0x00000008 )
117 #define DOMAIN_PASSWORD_STORE_CLEARTEXT ( 0x00000010 )
118 #define DOMAIN_REFUSE_PASSWORD_CHANGE ( 0x00000020 )
120 struct samr_DomInfo1
{
121 uint16_t min_password_length
;
122 uint16_t password_history_length
;
123 uint32_t password_properties
;
124 int64_t max_password_age
;
125 int64_t min_password_age
;
128 struct samr_DomInfo2
{
129 NTTIME force_logoff_time
;
130 struct lsa_String comment
;
131 struct lsa_String domain_name
;
132 struct lsa_String primary
;
133 uint64_t sequence_num
;
139 uint32_t num_aliases
;
142 struct samr_DomInfo3
{
143 NTTIME force_logoff_time
;
146 struct samr_DomInfo4
{
147 struct lsa_String comment
;
150 struct samr_DomInfo5
{
151 struct lsa_String domain_name
;
154 struct samr_DomInfo6
{
155 struct lsa_String primary
;
158 struct samr_DomInfo7
{
162 struct samr_DomInfo8
{
163 uint64_t sequence_num
;
164 NTTIME domain_create_time
;
167 struct samr_DomInfo9
{
171 struct samr_DomInfo11
{
172 struct samr_DomInfo2 info2
;
173 uint64_t lockout_duration
;
174 uint64_t lockout_window
;
175 uint16_t lockout_threshold
;
178 struct samr_DomInfo12
{
179 uint64_t lockout_duration
;
180 uint64_t lockout_window
;
181 uint16_t lockout_threshold
;
184 struct samr_DomInfo13
{
185 uint64_t sequence_num
;
186 NTTIME domain_create_time
;
191 union samr_DomainInfo
{
192 struct samr_DomInfo1 info1
;/* [case] */
193 struct samr_DomInfo2 info2
;/* [case(2)] */
194 struct samr_DomInfo3 info3
;/* [case(3)] */
195 struct samr_DomInfo4 info4
;/* [case(4)] */
196 struct samr_DomInfo5 info5
;/* [case(5)] */
197 struct samr_DomInfo6 info6
;/* [case(6)] */
198 struct samr_DomInfo7 info7
;/* [case(7)] */
199 struct samr_DomInfo8 info8
;/* [case(8)] */
200 struct samr_DomInfo9 info9
;/* [case(9)] */
201 struct samr_DomInfo11 info11
;/* [case(11)] */
202 struct samr_DomInfo12 info12
;/* [case(12)] */
203 struct samr_DomInfo13 info13
;/* [case(13)] */
204 }/* [switch_type(uint16)] */;
207 uint32_t count
;/* [range(0,1024)] */
208 uint32_t *ids
;/* [unique,size_is(count)] */
211 /* bitmap samr_GroupAttrs */
212 #define SE_GROUP_MANDATORY ( 0x00000001 )
213 #define SE_GROUP_ENABLED_BY_DEFAULT ( 0x00000002 )
214 #define SE_GROUP_ENABLED ( 0x00000004 )
215 #define SE_GROUP_OWNER ( 0x00000008 )
216 #define SE_GROUP_USE_FOR_DENY_ONLY ( 0x00000010 )
217 #define SE_GROUP_RESOURCE ( 0x20000000 )
218 #define SE_GROUP_LOGON_ID ( 0xC0000000 )
220 struct samr_GroupInfoAll
{
221 struct lsa_String name
;
223 uint32_t num_members
;
224 struct lsa_String description
;
227 struct samr_GroupInfoAttributes
{
231 struct samr_GroupInfoDescription
{
232 struct lsa_String description
;
235 enum samr_GroupInfoEnum
236 #ifndef USE_UINT_ENUMS
240 GROUPINFOATTRIBUTES
=3,
241 GROUPINFODESCRIPTION
=4,
245 { __donnot_use_enum_samr_GroupInfoEnum
=0x7FFFFFFF}
246 #define GROUPINFOALL ( 1 )
247 #define GROUPINFONAME ( 2 )
248 #define GROUPINFOATTRIBUTES ( 3 )
249 #define GROUPINFODESCRIPTION ( 4 )
250 #define GROUPINFOALL2 ( 5 )
254 union samr_GroupInfo
{
255 struct samr_GroupInfoAll all
;/* [case(GROUPINFOALL)] */
256 struct lsa_String name
;/* [case(GROUPINFONAME)] */
257 struct samr_GroupInfoAttributes attributes
;/* [case(GROUPINFOATTRIBUTES)] */
258 struct lsa_String description
;/* [case(GROUPINFODESCRIPTION)] */
259 struct samr_GroupInfoAll all2
;/* [case(GROUPINFOALL2)] */
260 }/* [switch_type(samr_GroupInfoEnum)] */;
262 struct samr_RidTypeArray
{
264 uint32_t *rids
;/* [unique,size_is(count)] */
265 uint32_t *types
;/* [unique,size_is(count)] */
268 struct samr_AliasInfoAll
{
269 struct lsa_String name
;
270 uint32_t num_members
;
271 struct lsa_String description
;
274 enum samr_AliasInfoEnum
275 #ifndef USE_UINT_ENUMS
279 ALIASINFODESCRIPTION
=3
282 { __donnot_use_enum_samr_AliasInfoEnum
=0x7FFFFFFF}
283 #define ALIASINFOALL ( 1 )
284 #define ALIASINFONAME ( 2 )
285 #define ALIASINFODESCRIPTION ( 3 )
289 union samr_AliasInfo
{
290 struct samr_AliasInfoAll all
;/* [case(ALIASINFOALL)] */
291 struct lsa_String name
;/* [case(ALIASINFONAME)] */
292 struct lsa_String description
;/* [case(ALIASINFODESCRIPTION)] */
293 }/* [switch_type(samr_AliasInfoEnum)] */;
295 struct samr_UserInfo1
{
296 struct lsa_String account_name
;
297 struct lsa_String full_name
;
298 uint32_t primary_gid
;
299 struct lsa_String description
;
300 struct lsa_String comment
;
303 struct samr_UserInfo2
{
304 struct lsa_String comment
;
305 struct lsa_String unknown
;
306 uint16_t country_code
;
310 struct samr_LogonHours
{
311 uint16_t units_per_week
;
312 uint8_t *bits
;/* [unique,length_is(units_per_week/8),size_is(1260)] */
313 }/* [public,flag(LIBNDR_PRINT_ARRAY_HEX)] */;
315 struct samr_UserInfo3
{
316 struct lsa_String account_name
;
317 struct lsa_String full_name
;
319 uint32_t primary_gid
;
320 struct lsa_String home_directory
;
321 struct lsa_String home_drive
;
322 struct lsa_String logon_script
;
323 struct lsa_String profile_path
;
324 struct lsa_String workstations
;
327 NTTIME last_password_change
;
328 NTTIME allow_password_change
;
329 NTTIME force_password_change
;
330 struct samr_LogonHours logon_hours
;
331 uint16_t bad_password_count
;
332 uint16_t logon_count
;
336 struct samr_UserInfo4
{
337 struct samr_LogonHours logon_hours
;
340 struct samr_UserInfo5
{
341 struct lsa_String account_name
;
342 struct lsa_String full_name
;
344 uint32_t primary_gid
;
345 struct lsa_String home_directory
;
346 struct lsa_String home_drive
;
347 struct lsa_String logon_script
;
348 struct lsa_String profile_path
;
349 struct lsa_String description
;
350 struct lsa_String workstations
;
353 struct samr_LogonHours logon_hours
;
354 uint16_t bad_password_count
;
355 uint16_t logon_count
;
356 NTTIME last_password_change
;
361 struct samr_UserInfo6
{
362 struct lsa_String account_name
;
363 struct lsa_String full_name
;
366 struct samr_UserInfo7
{
367 struct lsa_String account_name
;
370 struct samr_UserInfo8
{
371 struct lsa_String full_name
;
374 struct samr_UserInfo9
{
375 uint32_t primary_gid
;
378 struct samr_UserInfo10
{
379 struct lsa_String home_directory
;
380 struct lsa_String home_drive
;
383 struct samr_UserInfo11
{
384 struct lsa_String logon_script
;
387 struct samr_UserInfo12
{
388 struct lsa_String profile_path
;
391 struct samr_UserInfo13
{
392 struct lsa_String description
;
395 struct samr_UserInfo14
{
396 struct lsa_String workstations
;
399 struct samr_UserInfo16
{
403 struct samr_UserInfo17
{
407 struct samr_Password
{
409 }/* [public,flag(LIBNDR_PRINT_ARRAY_HEX)] */;
411 struct samr_UserInfo18
{
412 struct samr_Password lm_pwd
;
413 struct samr_Password nt_pwd
;
414 uint8_t lm_pwd_active
;
415 uint8_t nt_pwd_active
;
418 struct samr_UserInfo20
{
419 struct lsa_BinaryString parameters
;
422 /* bitmap samr_FieldsPresent */
423 #define SAMR_FIELD_ACCOUNT_NAME ( 0x00000001 )
424 #define SAMR_FIELD_FULL_NAME ( 0x00000002 )
425 #define SAMR_FIELD_RID ( 0x00000004 )
426 #define SAMR_FIELD_PRIMARY_GID ( 0x00000008 )
427 #define SAMR_FIELD_DESCRIPTION ( 0x00000010 )
428 #define SAMR_FIELD_COMMENT ( 0x00000020 )
429 #define SAMR_FIELD_HOME_DIRECTORY ( 0x00000040 )
430 #define SAMR_FIELD_HOME_DRIVE ( 0x00000080 )
431 #define SAMR_FIELD_LOGON_SCRIPT ( 0x00000100 )
432 #define SAMR_FIELD_PROFILE_PATH ( 0x00000200 )
433 #define SAMR_FIELD_WORKSTATIONS ( 0x00000400 )
434 #define SAMR_FIELD_LAST_LOGON ( 0x00000800 )
435 #define SAMR_FIELD_LAST_LOGOFF ( 0x00001000 )
436 #define SAMR_FIELD_LOGON_HOURS ( 0x00002000 )
437 #define SAMR_FIELD_BAD_PWD_COUNT ( 0x00004000 )
438 #define SAMR_FIELD_NUM_LOGONS ( 0x00008000 )
439 #define SAMR_FIELD_ALLOW_PWD_CHANGE ( 0x00010000 )
440 #define SAMR_FIELD_FORCE_PWD_CHANGE ( 0x00020000 )
441 #define SAMR_FIELD_LAST_PWD_CHANGE ( 0x00040000 )
442 #define SAMR_FIELD_ACCT_EXPIRY ( 0x00080000 )
443 #define SAMR_FIELD_ACCT_FLAGS ( 0x00100000 )
444 #define SAMR_FIELD_PARAMETERS ( 0x00200000 )
445 #define SAMR_FIELD_COUNTRY_CODE ( 0x00400000 )
446 #define SAMR_FIELD_CODE_PAGE ( 0x00800000 )
447 #define SAMR_FIELD_PASSWORD ( 0x01000000 )
448 #define SAMR_FIELD_PASSWORD2 ( 0x02000000 )
449 #define SAMR_FIELD_PRIVATE_DATA ( 0x04000000 )
450 #define SAMR_FIELD_EXPIRED_FLAG ( 0x08000000 )
451 #define SAMR_FIELD_SEC_DESC ( 0x10000000 )
452 #define SAMR_FIELD_OWF_PWD ( 0x20000000 )
454 struct samr_UserInfo21
{
457 NTTIME last_password_change
;
459 NTTIME allow_password_change
;
460 NTTIME force_password_change
;
461 struct lsa_String account_name
;
462 struct lsa_String full_name
;
463 struct lsa_String home_directory
;
464 struct lsa_String home_drive
;
465 struct lsa_String logon_script
;
466 struct lsa_String profile_path
;
467 struct lsa_String description
;
468 struct lsa_String workstations
;
469 struct lsa_String comment
;
470 struct lsa_BinaryString parameters
;
471 struct lsa_String unknown1
;
472 struct lsa_String unknown2
;
473 struct lsa_String unknown3
;
475 uint8_t *buffer
;/* [unique,size_is(buf_count)] */
477 uint32_t primary_gid
;
479 uint32_t fields_present
;
480 struct samr_LogonHours logon_hours
;
481 uint16_t bad_password_count
;
482 uint16_t logon_count
;
483 uint16_t country_code
;
485 uint8_t nt_password_set
;
486 uint8_t lm_password_set
;
487 uint8_t password_expired
;
491 struct samr_CryptPassword
{
493 }/* [public,flag(LIBNDR_PRINT_ARRAY_HEX)] */;
495 struct samr_UserInfo23
{
496 struct samr_UserInfo21 info
;
497 struct samr_CryptPassword password
;
500 struct samr_UserInfo24
{
501 struct samr_CryptPassword password
;
505 struct samr_CryptPasswordEx
{
507 }/* [flag(LIBNDR_PRINT_ARRAY_HEX)] */;
509 struct samr_UserInfo25
{
510 struct samr_UserInfo21 info
;
511 struct samr_CryptPasswordEx password
;
514 struct samr_UserInfo26
{
515 struct samr_CryptPasswordEx password
;
519 union samr_UserInfo
{
520 struct samr_UserInfo1 info1
;/* [case] */
521 struct samr_UserInfo2 info2
;/* [case(2)] */
522 struct samr_UserInfo3 info3
;/* [case(3)] */
523 struct samr_UserInfo4 info4
;/* [case(4)] */
524 struct samr_UserInfo5 info5
;/* [case(5)] */
525 struct samr_UserInfo6 info6
;/* [case(6)] */
526 struct samr_UserInfo7 info7
;/* [case(7)] */
527 struct samr_UserInfo8 info8
;/* [case(8)] */
528 struct samr_UserInfo9 info9
;/* [case(9)] */
529 struct samr_UserInfo10 info10
;/* [case(10)] */
530 struct samr_UserInfo11 info11
;/* [case(11)] */
531 struct samr_UserInfo12 info12
;/* [case(12)] */
532 struct samr_UserInfo13 info13
;/* [case(13)] */
533 struct samr_UserInfo14 info14
;/* [case(14)] */
534 struct samr_UserInfo16 info16
;/* [case(16)] */
535 struct samr_UserInfo17 info17
;/* [case(17)] */
536 struct samr_UserInfo18 info18
;/* [case(18)] */
537 struct samr_UserInfo20 info20
;/* [case(20)] */
538 struct samr_UserInfo21 info21
;/* [case(21)] */
539 struct samr_UserInfo23 info23
;/* [case(23)] */
540 struct samr_UserInfo24 info24
;/* [case(24)] */
541 struct samr_UserInfo25 info25
;/* [case(25)] */
542 struct samr_UserInfo26 info26
;/* [case(26)] */
543 }/* [switch_type(uint16)] */;
545 struct samr_RidWithAttribute
{
550 struct samr_RidWithAttributeArray
{
552 struct samr_RidWithAttribute
*rids
;/* [unique,size_is(count)] */
555 struct samr_DispEntryGeneral
{
559 struct lsa_String account_name
;
560 struct lsa_String description
;
561 struct lsa_String full_name
;
564 struct samr_DispInfoGeneral
{
566 struct samr_DispEntryGeneral
*entries
;/* [unique,size_is(count)] */
569 struct samr_DispEntryFull
{
573 struct lsa_String account_name
;
574 struct lsa_String description
;
577 struct samr_DispInfoFull
{
579 struct samr_DispEntryFull
*entries
;/* [unique,size_is(count)] */
582 struct samr_DispEntryFullGroup
{
586 struct lsa_String account_name
;
587 struct lsa_String description
;
590 struct samr_DispInfoFullGroups
{
592 struct samr_DispEntryFullGroup
*entries
;/* [unique,size_is(count)] */
595 struct samr_DispEntryAscii
{
597 struct lsa_AsciiStringLarge account_name
;
600 struct samr_DispInfoAscii
{
602 struct samr_DispEntryAscii
*entries
;/* [unique,size_is(count)] */
605 union samr_DispInfo
{
606 struct samr_DispInfoGeneral info1
;/* [case] */
607 struct samr_DispInfoFull info2
;/* [case(2)] */
608 struct samr_DispInfoFullGroups info3
;/* [case(3)] */
609 struct samr_DispInfoAscii info4
;/* [case(4)] */
610 struct samr_DispInfoAscii info5
;/* [case(5)] */
611 }/* [switch_type(uint16)] */;
614 uint16_t min_password_length
;
615 uint32_t password_properties
;
618 enum samr_ConnectVersion
619 #ifndef USE_UINT_ENUMS
621 SAMR_CONNECT_PRE_W2K
=1,
623 SAMR_CONNECT_AFTER_W2K
=3
626 { __donnot_use_enum_samr_ConnectVersion
=0x7FFFFFFF}
627 #define SAMR_CONNECT_PRE_W2K ( 1 )
628 #define SAMR_CONNECT_W2K ( 2 )
629 #define SAMR_CONNECT_AFTER_W2K ( 3 )
633 enum samr_RejectReason
;
635 struct samr_ChangeReject
{
636 enum samr_RejectReason reason
;
641 struct samr_ConnectInfo1
{
642 enum samr_ConnectVersion client_version
;
646 union samr_ConnectInfo
{
647 struct samr_ConnectInfo1 info1
;/* [case] */
650 /* bitmap samr_ValidateFieldsPresent */
651 #define SAMR_VALIDATE_FIELD_PASSWORD_LAST_SET ( 0x00000001 )
652 #define SAMR_VALIDATE_FIELD_BAD_PASSWORD_TIME ( 0x00000002 )
653 #define SAMR_VALIDATE_FIELD_LOCKOUT_TIME ( 0x00000004 )
654 #define SAMR_VALIDATE_FIELD_BAD_PASSWORD_COUNT ( 0x00000008 )
655 #define SAMR_VALIDATE_FIELD_PASSWORD_HISTORY_LENGTH ( 0x00000010 )
656 #define SAMR_VALIDATE_FIELD_PASSWORD_HISTORY ( 0x00000020 )
658 enum samr_ValidatePasswordLevel
659 #ifndef USE_UINT_ENUMS
661 NetValidateAuthentication
=1,
662 NetValidatePasswordChange
=2,
663 NetValidatePasswordReset
=3
666 { __donnot_use_enum_samr_ValidatePasswordLevel
=0x7FFFFFFF}
667 #define NetValidateAuthentication ( 1 )
668 #define NetValidatePasswordChange ( 2 )
669 #define NetValidatePasswordReset ( 3 )
673 enum samr_ValidationStatus
674 #ifndef USE_UINT_ENUMS
676 SAMR_VALIDATION_STATUS_SUCCESS
=0,
677 SAMR_VALIDATION_STATUS_PASSWORD_MUST_CHANGE
=1,
678 SAMR_VALIDATION_STATUS_ACCOUNT_LOCKED_OUT
=2,
679 SAMR_VALIDATION_STATUS_BAD_PASSWORD
=4,
680 SAMR_VALIDATION_STATUS_PWD_HISTORY_CONFLICT
=5,
681 SAMR_VALIDATION_STATUS_PWD_TOO_SHORT
=6,
682 SAMR_VALIDATION_STATUS_PWD_TOO_LONG
=7,
683 SAMR_VALIDATION_STATUS_NOT_COMPLEX_ENOUGH
=8,
684 SAMR_VALIDATION_STATUS_PASSWORD_TOO_RECENT
=9
687 { __donnot_use_enum_samr_ValidationStatus
=0x7FFFFFFF}
688 #define SAMR_VALIDATION_STATUS_SUCCESS ( 0 )
689 #define SAMR_VALIDATION_STATUS_PASSWORD_MUST_CHANGE ( 1 )
690 #define SAMR_VALIDATION_STATUS_ACCOUNT_LOCKED_OUT ( 2 )
691 #define SAMR_VALIDATION_STATUS_BAD_PASSWORD ( 4 )
692 #define SAMR_VALIDATION_STATUS_PWD_HISTORY_CONFLICT ( 5 )
693 #define SAMR_VALIDATION_STATUS_PWD_TOO_SHORT ( 6 )
694 #define SAMR_VALIDATION_STATUS_PWD_TOO_LONG ( 7 )
695 #define SAMR_VALIDATION_STATUS_NOT_COMPLEX_ENOUGH ( 8 )
696 #define SAMR_VALIDATION_STATUS_PASSWORD_TOO_RECENT ( 9 )
700 struct samr_ValidationBlob
{
702 uint8_t *data
;/* [unique,size_is(length)] */
705 struct samr_ValidatePasswordInfo
{
706 uint32_t fields_present
;
707 NTTIME last_password_change
;
708 NTTIME bad_password_time
;
710 uint32_t bad_pwd_count
;
711 uint32_t pwd_history_len
;
712 struct samr_ValidationBlob
*pwd_history
;/* [unique,size_is(pwd_history_len)] */
715 struct samr_ValidatePasswordRepCtr
{
716 struct samr_ValidatePasswordInfo info
;
717 enum samr_ValidationStatus status
;
720 union samr_ValidatePasswordRep
{
721 struct samr_ValidatePasswordRepCtr ctr1
;/* [case] */
722 struct samr_ValidatePasswordRepCtr ctr2
;/* [case(2)] */
723 struct samr_ValidatePasswordRepCtr ctr3
;/* [case(3)] */
724 }/* [switch_type(uint16)] */;
726 struct samr_ValidatePasswordReq3
{
727 struct samr_ValidatePasswordInfo info
;
728 struct lsa_StringLarge password
;
729 struct lsa_StringLarge account
;
730 struct samr_ValidationBlob hash
;
731 uint8_t pwd_must_change_at_next_logon
;
732 uint8_t clear_lockout
;
735 struct samr_ValidatePasswordReq2
{
736 struct samr_ValidatePasswordInfo info
;
737 struct lsa_StringLarge password
;
738 struct lsa_StringLarge account
;
739 struct samr_ValidationBlob hash
;
740 uint8_t password_matched
;
743 struct samr_ValidatePasswordReq1
{
744 struct samr_ValidatePasswordInfo info
;
745 uint8_t password_matched
;
748 union samr_ValidatePasswordReq
{
749 struct samr_ValidatePasswordReq1 req1
;/* [case] */
750 struct samr_ValidatePasswordReq2 req2
;/* [case(2)] */
751 struct samr_ValidatePasswordReq3 req3
;/* [case(3)] */
752 }/* [switch_type(uint16)] */;
755 struct samr_Connect
{
757 uint16_t *system_name
;/* [unique] */
758 uint32_t access_mask
;
762 struct policy_handle
*connect_handle
;/* [ref] */
771 struct policy_handle
*handle
;/* [ref] */
775 struct policy_handle
*handle
;/* [ref] */
782 struct samr_SetSecurity
{
784 struct policy_handle
*handle
;/* [ref] */
786 struct sec_desc_buf
*sdbuf
;/* [ref] */
796 struct samr_QuerySecurity
{
798 struct policy_handle
*handle
;/* [ref] */
803 struct sec_desc_buf
**sdbuf
;/* [ref] */
810 struct samr_Shutdown
{
812 struct policy_handle
*connect_handle
;/* [ref] */
822 struct samr_LookupDomain
{
824 struct policy_handle
*connect_handle
;/* [ref] */
825 struct lsa_String
*domain_name
;/* [ref] */
829 struct dom_sid2
**sid
;/* [ref] */
836 struct samr_EnumDomains
{
838 struct policy_handle
*connect_handle
;/* [ref] */
840 uint32_t *resume_handle
;/* [ref] */
844 struct samr_SamArray
**sam
;/* [ref] */
845 uint32_t *num_entries
;/* [ref] */
846 uint32_t *resume_handle
;/* [ref] */
853 struct samr_OpenDomain
{
855 struct policy_handle
*connect_handle
;/* [ref] */
856 uint32_t access_mask
;
857 struct dom_sid2
*sid
;/* [ref] */
861 struct policy_handle
*domain_handle
;/* [ref] */
868 struct samr_QueryDomainInfo
{
870 struct policy_handle
*domain_handle
;/* [ref] */
875 union samr_DomainInfo
**info
;/* [ref,switch_is(level)] */
882 struct samr_SetDomainInfo
{
884 struct policy_handle
*domain_handle
;/* [ref] */
886 union samr_DomainInfo
*info
;/* [ref,switch_is(level)] */
896 struct samr_CreateDomainGroup
{
898 struct policy_handle
*domain_handle
;/* [ref] */
899 struct lsa_String
*name
;/* [ref] */
900 uint32_t access_mask
;
904 struct policy_handle
*group_handle
;/* [ref] */
905 uint32_t *rid
;/* [ref] */
912 struct samr_EnumDomainGroups
{
914 struct policy_handle
*domain_handle
;/* [ref] */
916 uint32_t *resume_handle
;/* [ref] */
920 struct samr_SamArray
**sam
;/* [ref] */
921 uint32_t *num_entries
;/* [ref] */
922 uint32_t *resume_handle
;/* [ref] */
929 struct samr_CreateUser
{
931 struct policy_handle
*domain_handle
;/* [ref] */
932 struct lsa_String
*account_name
;/* [ref] */
933 uint32_t access_mask
;
937 struct policy_handle
*user_handle
;/* [ref] */
938 uint32_t *rid
;/* [ref] */
945 struct samr_EnumDomainUsers
{
947 struct policy_handle
*domain_handle
;/* [ref] */
950 uint32_t *resume_handle
;/* [ref] */
954 struct samr_SamArray
**sam
;/* [ref] */
955 uint32_t *num_entries
;/* [ref] */
956 uint32_t *resume_handle
;/* [ref] */
963 struct samr_CreateDomAlias
{
965 struct policy_handle
*domain_handle
;/* [ref] */
966 struct lsa_String
*alias_name
;/* [ref] */
967 uint32_t access_mask
;
971 struct policy_handle
*alias_handle
;/* [ref] */
972 uint32_t *rid
;/* [ref] */
979 struct samr_EnumDomainAliases
{
981 struct policy_handle
*domain_handle
;/* [ref] */
983 uint32_t *resume_handle
;/* [ref] */
987 struct samr_SamArray
**sam
;/* [ref] */
988 uint32_t *num_entries
;/* [ref] */
989 uint32_t *resume_handle
;/* [ref] */
996 struct samr_GetAliasMembership
{
998 struct policy_handle
*domain_handle
;/* [ref] */
999 struct lsa_SidArray
*sids
;/* [ref] */
1003 struct samr_Ids
*rids
;/* [ref] */
1010 struct samr_LookupNames
{
1012 struct policy_handle
*domain_handle
;/* [ref] */
1013 uint32_t num_names
;/* [range(0,1000)] */
1014 struct lsa_String
*names
;/* [length_is(num_names),size_is(1000)] */
1018 struct samr_Ids
*rids
;/* [ref] */
1019 struct samr_Ids
*types
;/* [ref] */
1026 struct samr_LookupRids
{
1028 struct policy_handle
*domain_handle
;/* [ref] */
1029 uint32_t num_rids
;/* [range(0,1000)] */
1030 uint32_t *rids
;/* [length_is(num_rids),size_is(1000)] */
1034 struct lsa_Strings
*names
;/* [ref] */
1035 struct samr_Ids
*types
;/* [ref] */
1042 struct samr_OpenGroup
{
1044 struct policy_handle
*domain_handle
;/* [ref] */
1045 uint32_t access_mask
;
1050 struct policy_handle
*group_handle
;/* [ref] */
1057 struct samr_QueryGroupInfo
{
1059 struct policy_handle
*group_handle
;/* [ref] */
1060 enum samr_GroupInfoEnum level
;
1064 union samr_GroupInfo
**info
;/* [ref,switch_is(level)] */
1071 struct samr_SetGroupInfo
{
1073 struct policy_handle
*group_handle
;/* [ref] */
1074 enum samr_GroupInfoEnum level
;
1075 union samr_GroupInfo
*info
;/* [ref,switch_is(level)] */
1085 struct samr_AddGroupMember
{
1087 struct policy_handle
*group_handle
;/* [ref] */
1099 struct samr_DeleteDomainGroup
{
1101 struct policy_handle
*group_handle
;/* [ref] */
1105 struct policy_handle
*group_handle
;/* [ref] */
1112 struct samr_DeleteGroupMember
{
1114 struct policy_handle
*group_handle
;/* [ref] */
1125 struct samr_QueryGroupMember
{
1127 struct policy_handle
*group_handle
;/* [ref] */
1131 struct samr_RidTypeArray
**rids
;/* [ref] */
1138 struct samr_SetMemberAttributesOfGroup
{
1140 struct policy_handle
*group_handle
;/* [ref] */
1152 struct samr_OpenAlias
{
1154 struct policy_handle
*domain_handle
;/* [ref] */
1155 uint32_t access_mask
;
1160 struct policy_handle
*alias_handle
;/* [ref] */
1167 struct samr_QueryAliasInfo
{
1169 struct policy_handle
*alias_handle
;/* [ref] */
1170 enum samr_AliasInfoEnum level
;
1174 union samr_AliasInfo
**info
;/* [ref,switch_is(level)] */
1181 struct samr_SetAliasInfo
{
1183 struct policy_handle
*alias_handle
;/* [ref] */
1184 enum samr_AliasInfoEnum level
;
1185 union samr_AliasInfo
*info
;/* [ref,switch_is(level)] */
1195 struct samr_DeleteDomAlias
{
1197 struct policy_handle
*alias_handle
;/* [ref] */
1201 struct policy_handle
*alias_handle
;/* [ref] */
1208 struct samr_AddAliasMember
{
1210 struct policy_handle
*alias_handle
;/* [ref] */
1211 struct dom_sid2
*sid
;/* [ref] */
1221 struct samr_DeleteAliasMember
{
1223 struct policy_handle
*alias_handle
;/* [ref] */
1224 struct dom_sid2
*sid
;/* [ref] */
1234 struct samr_GetMembersInAlias
{
1236 struct policy_handle
*alias_handle
;/* [ref] */
1240 struct lsa_SidArray
*sids
;/* [ref] */
1247 struct samr_OpenUser
{
1249 struct policy_handle
*domain_handle
;/* [ref] */
1250 uint32_t access_mask
;
1255 struct policy_handle
*user_handle
;/* [ref] */
1262 struct samr_DeleteUser
{
1264 struct policy_handle
*user_handle
;/* [ref] */
1268 struct policy_handle
*user_handle
;/* [ref] */
1275 struct samr_QueryUserInfo
{
1277 struct policy_handle
*user_handle
;/* [ref] */
1282 union samr_UserInfo
**info
;/* [ref,switch_is(level)] */
1289 struct samr_SetUserInfo
{
1291 struct policy_handle
*user_handle
;/* [ref] */
1293 union samr_UserInfo
*info
;/* [ref,switch_is(level)] */
1303 struct samr_ChangePasswordUser
{
1305 struct policy_handle
*user_handle
;/* [ref] */
1307 struct samr_Password
*old_lm_crypted
;/* [unique] */
1308 struct samr_Password
*new_lm_crypted
;/* [unique] */
1310 struct samr_Password
*old_nt_crypted
;/* [unique] */
1311 struct samr_Password
*new_nt_crypted
;/* [unique] */
1312 uint8_t cross1_present
;
1313 struct samr_Password
*nt_cross
;/* [unique] */
1314 uint8_t cross2_present
;
1315 struct samr_Password
*lm_cross
;/* [unique] */
1325 struct samr_GetGroupsForUser
{
1327 struct policy_handle
*user_handle
;/* [ref] */
1331 struct samr_RidWithAttributeArray
**rids
;/* [ref] */
1338 struct samr_QueryDisplayInfo
{
1340 struct policy_handle
*domain_handle
;/* [ref] */
1343 uint32_t max_entries
;
1348 uint32_t *total_size
;/* [ref] */
1349 uint32_t *returned_size
;/* [ref] */
1350 union samr_DispInfo
*info
;/* [ref,switch_is(level)] */
1357 struct samr_GetDisplayEnumerationIndex
{
1359 struct policy_handle
*domain_handle
;/* [ref] */
1361 struct lsa_String
*name
;/* [ref] */
1365 uint32_t *idx
;/* [ref] */
1372 struct samr_TestPrivateFunctionsDomain
{
1374 struct policy_handle
*domain_handle
;/* [ref] */
1384 struct samr_TestPrivateFunctionsUser
{
1386 struct policy_handle
*user_handle
;/* [ref] */
1396 struct samr_GetUserPwInfo
{
1398 struct policy_handle
*user_handle
;/* [ref] */
1402 struct samr_PwInfo
*info
;/* [ref] */
1409 struct samr_RemoveMemberFromForeignDomain
{
1411 struct policy_handle
*domain_handle
;/* [ref] */
1412 struct dom_sid2
*sid
;/* [ref] */
1422 struct samr_QueryDomainInfo2
{
1424 struct policy_handle
*domain_handle
;/* [ref] */
1429 union samr_DomainInfo
**info
;/* [ref,switch_is(level)] */
1436 struct samr_QueryUserInfo2
{
1438 struct policy_handle
*user_handle
;/* [ref] */
1443 union samr_UserInfo
*info
;/* [ref,switch_is(level)] */
1450 struct samr_QueryDisplayInfo2
{
1452 struct policy_handle
*domain_handle
;/* [ref] */
1455 uint32_t max_entries
;
1460 uint32_t *total_size
;/* [ref] */
1461 uint32_t *returned_size
;/* [ref] */
1462 union samr_DispInfo
*info
;/* [ref,switch_is(level)] */
1469 struct samr_GetDisplayEnumerationIndex2
{
1471 struct policy_handle
*domain_handle
;/* [ref] */
1473 struct lsa_String
*name
;/* [ref] */
1477 uint32_t *idx
;/* [ref] */
1484 struct samr_CreateUser2
{
1486 struct policy_handle
*domain_handle
;/* [ref] */
1487 struct lsa_String
*account_name
;/* [ref] */
1488 uint32_t acct_flags
;
1489 uint32_t access_mask
;
1493 struct policy_handle
*user_handle
;/* [ref] */
1494 uint32_t *access_granted
;/* [ref] */
1495 uint32_t *rid
;/* [ref] */
1502 struct samr_QueryDisplayInfo3
{
1504 struct policy_handle
*domain_handle
;/* [ref] */
1507 uint32_t max_entries
;
1512 uint32_t *total_size
;/* [ref] */
1513 uint32_t *returned_size
;/* [ref] */
1514 union samr_DispInfo
*info
;/* [ref,switch_is(level)] */
1521 struct samr_AddMultipleMembersToAlias
{
1523 struct policy_handle
*alias_handle
;/* [ref] */
1524 struct lsa_SidArray
*sids
;/* [ref] */
1534 struct samr_RemoveMultipleMembersFromAlias
{
1536 struct policy_handle
*alias_handle
;/* [ref] */
1537 struct lsa_SidArray
*sids
;/* [ref] */
1547 struct samr_OemChangePasswordUser2
{
1549 struct lsa_AsciiString
*server
;/* [unique] */
1550 struct lsa_AsciiString
*account
;/* [ref] */
1551 struct samr_CryptPassword
*password
;/* [unique] */
1552 struct samr_Password
*hash
;/* [unique] */
1562 struct samr_ChangePasswordUser2
{
1564 struct lsa_String
*server
;/* [unique] */
1565 struct lsa_String
*account
;/* [ref] */
1566 struct samr_CryptPassword
*nt_password
;/* [unique] */
1567 struct samr_Password
*nt_verifier
;/* [unique] */
1569 struct samr_CryptPassword
*lm_password
;/* [unique] */
1570 struct samr_Password
*lm_verifier
;/* [unique] */
1580 struct samr_GetDomPwInfo
{
1582 struct lsa_String
*domain_name
;/* [unique] */
1586 struct samr_PwInfo
*info
;/* [ref] */
1593 struct samr_Connect2
{
1595 const char *system_name
;/* [unique,charset(UTF16)] */
1596 uint32_t access_mask
;
1600 struct policy_handle
*connect_handle
;/* [ref] */
1607 struct samr_SetUserInfo2
{
1609 struct policy_handle
*user_handle
;/* [ref] */
1611 union samr_UserInfo
*info
;/* [ref,switch_is(level)] */
1621 struct samr_SetBootKeyInformation
{
1623 struct policy_handle
*connect_handle
;/* [ref] */
1636 struct samr_GetBootKeyInformation
{
1638 struct policy_handle
*domain_handle
;/* [ref] */
1642 uint32_t *unknown
;/* [ref] */
1649 struct samr_Connect3
{
1651 const char *system_name
;/* [unique,charset(UTF16)] */
1653 uint32_t access_mask
;
1657 struct policy_handle
*connect_handle
;/* [ref] */
1664 struct samr_Connect4
{
1666 const char *system_name
;/* [unique,charset(UTF16)] */
1667 enum samr_ConnectVersion client_version
;
1668 uint32_t access_mask
;
1672 struct policy_handle
*connect_handle
;/* [ref] */
1679 struct samr_ChangePasswordUser3
{
1681 struct lsa_String
*server
;/* [unique] */
1682 struct lsa_String
*account
;/* [ref] */
1683 struct samr_CryptPassword
*nt_password
;/* [unique] */
1684 struct samr_Password
*nt_verifier
;/* [unique] */
1686 struct samr_CryptPassword
*lm_password
;/* [unique] */
1687 struct samr_Password
*lm_verifier
;/* [unique] */
1688 struct samr_CryptPassword
*password3
;/* [unique] */
1692 struct samr_DomInfo1
**dominfo
;/* [ref] */
1693 struct samr_ChangeReject
**reject
;/* [ref] */
1700 struct samr_Connect5
{
1702 const char *system_name
;/* [unique,charset(UTF16)] */
1703 uint32_t access_mask
;
1705 union samr_ConnectInfo
*info_in
;/* [ref,switch_is(level_in)] */
1709 uint32_t *level_out
;/* [ref] */
1710 union samr_ConnectInfo
*info_out
;/* [ref,switch_is(*level_out)] */
1711 struct policy_handle
*connect_handle
;/* [ref] */
1718 struct samr_RidToSid
{
1720 struct policy_handle
*domain_handle
;/* [ref] */
1725 struct dom_sid2
*sid
;/* [ref] */
1732 struct samr_SetDsrmPassword
{
1734 struct lsa_String
*name
;/* [unique] */
1736 struct samr_Password
*hash
;/* [unique] */
1746 struct samr_ValidatePassword
{
1748 enum samr_ValidatePasswordLevel level
;
1749 union samr_ValidatePasswordReq req
;/* [switch_is(level)] */
1753 union samr_ValidatePasswordRep
*rep
;/* [ref,switch_is(level)] */
1759 #endif /* _HEADER_samr */