#define GENERIC_RIGHTS_SAM_ALL_ACCESS ( (STANDARD_RIGHTS_REQUIRED_ACCESS|SAMR_ACCESS_ALL_ACCESS) )
#define GENERIC_RIGHTS_SAM_READ ( (STANDARD_RIGHTS_READ_ACCESS|SAMR_ACCESS_ENUM_DOMAINS) )
#define GENERIC_RIGHTS_SAM_WRITE ( (STANDARD_RIGHTS_WRITE_ACCESS|SAMR_ACCESS_CREATE_DOMAIN|SAMR_ACCESS_INITIALIZE_SERVER|SAMR_ACCESS_SHUTDOWN_SERVER) )
-#define GENERIC_RIGHTS_SAM_EXECUTE ( (STANDARD_RIGHTS_EXECUTE_ACCESS|SAMR_ACCESS_OPEN_DOMAIN|SAMR_ACCESS_CONNECT_TO_SERVER) )
+#define GENERIC_RIGHTS_SAM_EXECUTE ( (STANDARD_RIGHTS_EXECUTE_ACCESS|SAMR_ACCESS_LOOKUP_DOMAIN|SAMR_ACCESS_CONNECT_TO_SERVER) )
#define SAMR_USER_ACCESS_ALL_ACCESS ( 0x000007FF )
#define GENERIC_RIGHTS_USER_ALL_ACCESS ( (STANDARD_RIGHTS_REQUIRED_ACCESS|SAMR_USER_ACCESS_ALL_ACCESS) )
#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) )
enum netr_SamDatabaseID
#ifndef USE_UINT_ENUMS
{
- SAM_DATABASE_DOMAIN=0,
- SAM_DATABASE_BUILTIN=1,
- SAM_DATABASE_PRIVS=2
+ SAM_DATABASE_DOMAIN=(int)(0),
+ SAM_DATABASE_BUILTIN=(int)(1),
+ SAM_DATABASE_PRIVS=(int)(2)
}
#else
{ __donnot_use_enum_netr_SamDatabaseID=0x7FFFFFFF}
#endif
;
-enum samr_RejectReason
-#ifndef USE_UINT_ENUMS
- {
- SAMR_REJECT_OTHER=0,
- SAMR_REJECT_TOO_SHORT=1,
- SAMR_REJECT_IN_HISTORY=2,
- SAMR_REJECT_COMPLEXITY=5
-}
-#else
- { __donnot_use_enum_samr_RejectReason=0x7FFFFFFF}
-#define SAMR_REJECT_OTHER ( 0 )
-#define SAMR_REJECT_TOO_SHORT ( 1 )
-#define SAMR_REJECT_IN_HISTORY ( 2 )
-#define SAMR_REJECT_COMPLEXITY ( 5 )
-#endif
-;
-
/* bitmap samr_AcctFlags */
#define ACB_DISABLED ( 0x00000001 )
#define ACB_HOMDIRREQ ( 0x00000002 )
#define SAMR_ACCESS_INITIALIZE_SERVER ( 0x00000004 )
#define SAMR_ACCESS_CREATE_DOMAIN ( 0x00000008 )
#define SAMR_ACCESS_ENUM_DOMAINS ( 0x00000010 )
-#define SAMR_ACCESS_OPEN_DOMAIN ( 0x00000020 )
+#define SAMR_ACCESS_LOOKUP_DOMAIN ( 0x00000020 )
/* bitmap samr_UserAccessMask */
#define SAMR_USER_ACCESS_GET_NAME_ETC ( 0x00000001 )
struct samr_SamEntry *entries;/* [unique,size_is(count)] */
};
+enum samr_DomainInfoClass
+#ifndef USE_UINT_ENUMS
+ {
+ DomainPasswordInformation=(int)(1),
+ DomainGeneralInformation=(int)(2),
+ DomainLogoffInformation=(int)(3),
+ DomainOemInformation=(int)(4),
+ DomainNameInformation=(int)(5),
+ DomainReplicationInformation=(int)(6),
+ DomainServerRoleInformation=(int)(7),
+ DomainModifiedInformation=(int)(8),
+ DomainStateInformation=(int)(9),
+ DomainUasInformation=(int)(10),
+ DomainGeneralInformation2=(int)(11),
+ DomainLockoutInformation=(int)(12),
+ DomainModifiedInformation2=(int)(13)
+}
+#else
+ { __donnot_use_enum_samr_DomainInfoClass=0x7FFFFFFF}
+#define DomainPasswordInformation ( 1 )
+#define DomainGeneralInformation ( 2 )
+#define DomainLogoffInformation ( 3 )
+#define DomainOemInformation ( 4 )
+#define DomainNameInformation ( 5 )
+#define DomainReplicationInformation ( 6 )
+#define DomainServerRoleInformation ( 7 )
+#define DomainModifiedInformation ( 8 )
+#define DomainStateInformation ( 9 )
+#define DomainUasInformation ( 10 )
+#define DomainGeneralInformation2 ( 11 )
+#define DomainLockoutInformation ( 12 )
+#define DomainModifiedInformation2 ( 13 )
+#endif
+;
+
enum samr_Role
#ifndef USE_UINT_ENUMS
{
- SAMR_ROLE_STANDALONE=0,
- SAMR_ROLE_DOMAIN_MEMBER=1,
- SAMR_ROLE_DOMAIN_BDC=2,
- SAMR_ROLE_DOMAIN_PDC=3
+ SAMR_ROLE_STANDALONE=(int)(0),
+ SAMR_ROLE_DOMAIN_MEMBER=(int)(1),
+ SAMR_ROLE_DOMAIN_BDC=(int)(2),
+ SAMR_ROLE_DOMAIN_PDC=(int)(3)
}
#else
{ __donnot_use_enum_samr_Role=0x7FFFFFFF}
enum samr_DomainServerState
#ifndef USE_UINT_ENUMS
{
- DOMAIN_SERVER_ENABLED=1,
- DOMAIN_SERVER_DISABLED=2
+ DOMAIN_SERVER_ENABLED=(int)(1),
+ DOMAIN_SERVER_DISABLED=(int)(2)
}
#else
{ __donnot_use_enum_samr_DomainServerState=0x7FFFFFFF}
enum samr_GroupInfoEnum
#ifndef USE_UINT_ENUMS
{
- GROUPINFOALL=1,
- GROUPINFONAME=2,
- GROUPINFOATTRIBUTES=3,
- GROUPINFODESCRIPTION=4,
- GROUPINFOALL2=5
+ GROUPINFOALL=(int)(1),
+ GROUPINFONAME=(int)(2),
+ GROUPINFOATTRIBUTES=(int)(3),
+ GROUPINFODESCRIPTION=(int)(4),
+ GROUPINFOALL2=(int)(5)
}
#else
{ __donnot_use_enum_samr_GroupInfoEnum=0x7FFFFFFF}
enum samr_AliasInfoEnum
#ifndef USE_UINT_ENUMS
{
- ALIASINFOALL=1,
- ALIASINFONAME=2,
- ALIASINFODESCRIPTION=3
+ ALIASINFOALL=(int)(1),
+ ALIASINFONAME=(int)(2),
+ ALIASINFODESCRIPTION=(int)(3)
}
#else
{ __donnot_use_enum_samr_AliasInfoEnum=0x7FFFFFFF}
struct lsa_String description;/* [case(ALIASINFODESCRIPTION)] */
}/* [switch_type(samr_AliasInfoEnum)] */;
+enum samr_UserInfoLevel
+#ifndef USE_UINT_ENUMS
+ {
+ UserGeneralInformation=(int)(1),
+ UserPreferencesInformation=(int)(2),
+ UserLogonInformation=(int)(3),
+ UserLogonHoursInformation=(int)(4),
+ UserAccountInformation=(int)(5),
+ UserNameInformation=(int)(6),
+ UserAccountNameInformation=(int)(7),
+ UserFullNameInformation=(int)(8),
+ UserPrimaryGroupInformation=(int)(9),
+ UserHomeInformation=(int)(10),
+ UserScriptInformation=(int)(11),
+ UserProfileInformation=(int)(12),
+ UserAdminCommentInformation=(int)(13),
+ UserWorkStationsInformation=(int)(14),
+ UserControlInformation=(int)(16),
+ UserExpiresInformation=(int)(17),
+ UserInternal1Information=(int)(18),
+ UserParametersInformation=(int)(20),
+ UserAllInformation=(int)(21),
+ UserInternal4Information=(int)(23),
+ UserInternal5Information=(int)(24),
+ UserInternal4InformationNew=(int)(25),
+ UserInternal5InformationNew=(int)(26)
+}
+#else
+ { __donnot_use_enum_samr_UserInfoLevel=0x7FFFFFFF}
+#define UserGeneralInformation ( 1 )
+#define UserPreferencesInformation ( 2 )
+#define UserLogonInformation ( 3 )
+#define UserLogonHoursInformation ( 4 )
+#define UserAccountInformation ( 5 )
+#define UserNameInformation ( 6 )
+#define UserAccountNameInformation ( 7 )
+#define UserFullNameInformation ( 8 )
+#define UserPrimaryGroupInformation ( 9 )
+#define UserHomeInformation ( 10 )
+#define UserScriptInformation ( 11 )
+#define UserProfileInformation ( 12 )
+#define UserAdminCommentInformation ( 13 )
+#define UserWorkStationsInformation ( 14 )
+#define UserControlInformation ( 16 )
+#define UserExpiresInformation ( 17 )
+#define UserInternal1Information ( 18 )
+#define UserParametersInformation ( 20 )
+#define UserAllInformation ( 21 )
+#define UserInternal4Information ( 23 )
+#define UserInternal5Information ( 24 )
+#define UserInternal4InformationNew ( 25 )
+#define UserInternal5InformationNew ( 26 )
+#endif
+;
+
struct samr_UserInfo1 {
struct lsa_String account_name;
struct lsa_String full_name;
enum samr_ConnectVersion
#ifndef USE_UINT_ENUMS
{
- SAMR_CONNECT_PRE_W2K=1,
- SAMR_CONNECT_W2K=2,
- SAMR_CONNECT_AFTER_W2K=3
+ SAMR_CONNECT_PRE_W2K=(int)(1),
+ SAMR_CONNECT_W2K=(int)(2),
+ SAMR_CONNECT_AFTER_W2K=(int)(3)
}
#else
{ __donnot_use_enum_samr_ConnectVersion=0x7FFFFFFF}
#endif
;
-struct samr_ChangeReject {
- enum samr_RejectReason reason;
- uint32_t unknown1;
- uint32_t unknown2;
+enum samPwdChangeReason
+#ifndef USE_UINT_ENUMS
+ {
+ SAM_PWD_CHANGE_NO_ERROR=(int)(0),
+ SAM_PWD_CHANGE_PASSWORD_TOO_SHORT=(int)(1),
+ SAM_PWD_CHANGE_PWD_IN_HISTORY=(int)(2),
+ SAM_PWD_CHANGE_USERNAME_IN_PASSWORD=(int)(3),
+ SAM_PWD_CHANGE_FULLNAME_IN_PASSWORD=(int)(4),
+ SAM_PWD_CHANGE_NOT_COMPLEX=(int)(5),
+ SAM_PWD_CHANGE_MACHINE_NOT_DEFAULT=(int)(6),
+ SAM_PWD_CHANGE_FAILED_BY_FILTER=(int)(7),
+ SAM_PWD_CHANGE_PASSWORD_TOO_LONG=(int)(8)
+}
+#else
+ { __donnot_use_enum_samPwdChangeReason=0x7FFFFFFF}
+#define SAM_PWD_CHANGE_NO_ERROR ( 0 )
+#define SAM_PWD_CHANGE_PASSWORD_TOO_SHORT ( 1 )
+#define SAM_PWD_CHANGE_PWD_IN_HISTORY ( 2 )
+#define SAM_PWD_CHANGE_USERNAME_IN_PASSWORD ( 3 )
+#define SAM_PWD_CHANGE_FULLNAME_IN_PASSWORD ( 4 )
+#define SAM_PWD_CHANGE_NOT_COMPLEX ( 5 )
+#define SAM_PWD_CHANGE_MACHINE_NOT_DEFAULT ( 6 )
+#define SAM_PWD_CHANGE_FAILED_BY_FILTER ( 7 )
+#define SAM_PWD_CHANGE_PASSWORD_TOO_LONG ( 8 )
+#endif
+;
+
+struct userPwdChangeFailureInformation {
+ enum samPwdChangeReason extendedFailureReason;
+ const char *filterModuleName;/* [unique,charset(UTF16)] */
};
struct samr_ConnectInfo1 {
enum samr_ValidatePasswordLevel
#ifndef USE_UINT_ENUMS
{
- NetValidateAuthentication=1,
- NetValidatePasswordChange=2,
- NetValidatePasswordReset=3
+ NetValidateAuthentication=(int)(1),
+ NetValidatePasswordChange=(int)(2),
+ NetValidatePasswordReset=(int)(3)
}
#else
{ __donnot_use_enum_samr_ValidatePasswordLevel=0x7FFFFFFF}
enum samr_ValidationStatus
#ifndef USE_UINT_ENUMS
{
- SAMR_VALIDATION_STATUS_SUCCESS=0,
- SAMR_VALIDATION_STATUS_PASSWORD_MUST_CHANGE=1,
- SAMR_VALIDATION_STATUS_ACCOUNT_LOCKED_OUT=2,
- SAMR_VALIDATION_STATUS_BAD_PASSWORD=4,
- SAMR_VALIDATION_STATUS_PWD_HISTORY_CONFLICT=5,
- SAMR_VALIDATION_STATUS_PWD_TOO_SHORT=6,
- SAMR_VALIDATION_STATUS_PWD_TOO_LONG=7,
- SAMR_VALIDATION_STATUS_NOT_COMPLEX_ENOUGH=8,
- SAMR_VALIDATION_STATUS_PASSWORD_TOO_RECENT=9
+ SAMR_VALIDATION_STATUS_SUCCESS=(int)(0),
+ SAMR_VALIDATION_STATUS_PASSWORD_MUST_CHANGE=(int)(1),
+ SAMR_VALIDATION_STATUS_ACCOUNT_LOCKED_OUT=(int)(2),
+ SAMR_VALIDATION_STATUS_PASSWORD_EXPIRED=(int)(3),
+ SAMR_VALIDATION_STATUS_BAD_PASSWORD=(int)(4),
+ SAMR_VALIDATION_STATUS_PWD_HISTORY_CONFLICT=(int)(5),
+ SAMR_VALIDATION_STATUS_PWD_TOO_SHORT=(int)(6),
+ SAMR_VALIDATION_STATUS_PWD_TOO_LONG=(int)(7),
+ SAMR_VALIDATION_STATUS_NOT_COMPLEX_ENOUGH=(int)(8),
+ SAMR_VALIDATION_STATUS_PASSWORD_TOO_RECENT=(int)(9),
+ SAMR_VALIDATION_STATUS_PASSWORD_FILTER_ERROR=(int)(10)
}
#else
{ __donnot_use_enum_samr_ValidationStatus=0x7FFFFFFF}
#define SAMR_VALIDATION_STATUS_SUCCESS ( 0 )
#define SAMR_VALIDATION_STATUS_PASSWORD_MUST_CHANGE ( 1 )
#define SAMR_VALIDATION_STATUS_ACCOUNT_LOCKED_OUT ( 2 )
+#define SAMR_VALIDATION_STATUS_PASSWORD_EXPIRED ( 3 )
#define SAMR_VALIDATION_STATUS_BAD_PASSWORD ( 4 )
#define SAMR_VALIDATION_STATUS_PWD_HISTORY_CONFLICT ( 5 )
#define SAMR_VALIDATION_STATUS_PWD_TOO_SHORT ( 6 )
#define SAMR_VALIDATION_STATUS_PWD_TOO_LONG ( 7 )
#define SAMR_VALIDATION_STATUS_NOT_COMPLEX_ENOUGH ( 8 )
#define SAMR_VALIDATION_STATUS_PASSWORD_TOO_RECENT ( 9 )
+#define SAMR_VALIDATION_STATUS_PASSWORD_FILTER_ERROR ( 10 )
#endif
;
struct samr_QueryDomainInfo {
struct {
struct policy_handle *domain_handle;/* [ref] */
- uint16_t level;
+ enum samr_DomainInfoClass level;
} in;
struct {
struct samr_SetDomainInfo {
struct {
struct policy_handle *domain_handle;/* [ref] */
- uint16_t level;
+ enum samr_DomainInfoClass level;
union samr_DomainInfo *info;/* [ref,switch_is(level)] */
} in;
struct samr_QueryUserInfo {
struct {
struct policy_handle *user_handle;/* [ref] */
- uint16_t level;
+ enum samr_UserInfoLevel level;
} in;
struct {
struct samr_SetUserInfo {
struct {
struct policy_handle *user_handle;/* [ref] */
- uint16_t level;
+ enum samr_UserInfoLevel level;
union samr_UserInfo *info;/* [ref,switch_is(level)] */
} in;
struct samr_QueryDomainInfo2 {
struct {
struct policy_handle *domain_handle;/* [ref] */
- uint16_t level;
+ enum samr_DomainInfoClass level;
} in;
struct {
struct samr_QueryUserInfo2 {
struct {
struct policy_handle *user_handle;/* [ref] */
- uint16_t level;
+ enum samr_UserInfoLevel level;
} in;
struct {
struct samr_SetUserInfo2 {
struct {
struct policy_handle *user_handle;/* [ref] */
- uint16_t level;
+ enum samr_UserInfoLevel level;
union samr_UserInfo *info;/* [ref,switch_is(level)] */
} in;
struct {
struct samr_DomInfo1 **dominfo;/* [ref] */
- struct samr_ChangeReject **reject;/* [ref] */
+ struct userPwdChangeFailureInformation **reject;/* [ref] */
NTSTATUS result;
} out;