ReactOS 0.4.15-dev-7961-gdcf9eb0
ntsam.h File Reference
#include "pshpack4.h"
#include "poppack.h"
Include dependency graph for ntsam.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  _SAM_RID_ENUMERATION
 
struct  _SAM_SID_ENUMERATION
 
struct  _ALIAS_GENERAL_INFORMATION
 
struct  _ALIAS_NAME_INFORMATION
 
struct  _ALIAS_ADM_COMMENT_INFORMATION
 
struct  _DOMAIN_DISPLAY_USER
 
struct  _DOMAIN_DISPLAY_MACHINE
 
struct  _DOMAIN_DISPLAY_GROUP
 
struct  _DOMAIN_PASSWORD_INFORMATION
 
struct  _DOMAIN_GENERAL_INFORMATION
 
struct  _DOMAIN_LOGOFF_INFORMATION
 
struct  _DOMAIN_OEM_INFORMATION
 
struct  _DOMAIN_NAME_INFORMATION
 
struct  _DOMAIN_REPLICATION_INFORMATION
 
struct  _DOMAIN_SERVER_ROLE_INFORMATION
 
struct  _DOMAIN_MODIFIED_INFORMATION
 
struct  _DOMAIN_STATE_INFORMATION
 
struct  _DOMAIN_UAS_INFORMATION
 
struct  _DOMAIN_GENERAL_INFORMATION2
 
struct  _DOMAIN_LOCKOUT_INFORMATION
 
struct  _DOMAIN_MODIFIED_INFORMATION2
 
struct  _GROUP_GENERAL_INFORMATION
 
struct  _GROUP_NAME_INFORMATION
 
struct  _GROUP_ATTRIBUTE_INFORMATION
 
struct  GROUP_ADM_COMMENT_INFORMATION
 
struct  _GROUP_MEMBERSHIP
 
struct  _LOGON_HOURS
 
struct  _SR_SECURITY_DESCRIPTOR
 
struct  _USER_GENERAL_INFORMATION
 
struct  _USER_PREFERENCES_INFORMATION
 
struct  _USER_LOGON_INFORMATION
 
struct  _USER_LOGON_HOURS_INFORMATION
 
struct  _USER_ACCOUNT_INFORMATION
 
struct  _USER_NAME_INFORMATION
 
struct  _USER_ACCOUNT_NAME_INFORMATION
 
struct  _USER_FULL_NAME_INFORMATION
 
struct  _USER_PRIMARY_GROUP_INFORMATION
 
struct  _USER_HOME_INFORMATION
 
struct  _USER_SCRIPT_INFORMATION
 
struct  _USER_PROFILE_INFORMATION
 
struct  _USER_ADMIN_COMMENT_INFORMATION
 
struct  _USER_WORKSTATIONS_INFORMATION
 
struct  _USER_SET_PASSWORD_INFORMATION
 
struct  _USER_CONTROL_INFORMATION
 
struct  _USER_EXPIRES_INFORMATION
 
struct  _USER_PARAMETERS_INFORMATION
 
struct  _USER_ALL_INFORMATION
 
struct  _USER_PWD_CHANGE_FAILURE_INFORMATION
 

Macros

#define ALIAS_ADD_MEMBER   0x00000001
 
#define ALIAS_REMOVE_MEMBER   0x00000002
 
#define ALIAS_LIST_MEMBERS   0x00000004
 
#define ALIAS_READ_INFORMATION   0x00000008
 
#define ALIAS_WRITE_ACCOUNT   0x00000010
 
#define ALIAS_READ
 
#define ALIAS_WRITE
 
#define ALIAS_EXECUTE
 
#define ALIAS_ALL_ACCESS
 
#define DOMAIN_READ_PASSWORD_PARAMETERS   0x00000001
 
#define DOMAIN_WRITE_PASSWORD_PARAMS   0x00000002
 
#define DOMAIN_READ_OTHER_PARAMETERS   0x00000004
 
#define DOMAIN_WRITE_OTHER_PARAMETERS   0x00000008
 
#define DOMAIN_CREATE_USER   0x00000010
 
#define DOMAIN_CREATE_GROUP   0x00000020
 
#define DOMAIN_CREATE_ALIAS   0x00000040
 
#define DOMAIN_GET_ALIAS_MEMBERSHIP   0x00000080
 
#define DOMAIN_LIST_ACCOUNTS   0x00000100
 
#define DOMAIN_LOOKUP   0x00000200
 
#define DOMAIN_ADMINISTER_SERVER   0x00000400
 
#define DOMAIN_READ
 
#define DOMAIN_WRITE
 
#define DOMAIN_EXECUTE
 
#define DOMAIN_ALL_ACCESS
 
#define GROUP_READ_INFORMATION   0x00000001
 
#define GROUP_WRITE_ACCOUNT   0x00000002
 
#define GROUP_ADD_MEMBER   0x00000004
 
#define GROUP_REMOVE_MEMBER   0x00000008
 
#define GROUP_LIST_MEMBERS   0x00000010
 
#define GROUP_READ
 
#define GROUP_WRITE
 
#define GROUP_EXECUTE
 
#define GROUP_ALL_ACCESS
 
#define SAM_SERVER_CONNECT   0x00000001
 
#define SAM_SERVER_SHUTDOWN   0x00000002
 
#define SAM_SERVER_INITIALIZE   0x00000004
 
#define SAM_SERVER_CREATE_DOMAIN   0x00000008
 
#define SAM_SERVER_ENUMERATE_DOMAINS   0x00000010
 
#define SAM_SERVER_LOOKUP_DOMAIN   0x00000020
 
#define SAM_SERVER_READ
 
#define SAM_SERVER_WRITE
 
#define SAM_SERVER_EXECUTE
 
#define SAM_SERVER_ALL_ACCESS
 
#define USER_READ_GENERAL   0x00000001
 
#define USER_READ_PREFERENCES   0x00000002
 
#define USER_WRITE_PREFERENCES   0x00000004
 
#define USER_READ_LOGON   0x00000008
 
#define USER_READ_ACCOUNT   0x00000010
 
#define USER_WRITE_ACCOUNT   0x00000020
 
#define USER_CHANGE_PASSWORD   0x00000040
 
#define USER_FORCE_PASSWORD_CHANGE   0x00000080
 
#define USER_LIST_GROUPS   0x00000100
 
#define USER_READ_GROUP_INFORMATION   0x00000200
 
#define USER_WRITE_GROUP_INFORMATION   0x00000400
 
#define USER_READ
 
#define USER_WRITE
 
#define USER_EXECUTE
 
#define USER_ALL_ACCESS
 
#define USER_ACCOUNT_DISABLED   0x00000001
 
#define USER_HOME_DIRECTORY_REQUIRED   0x00000002
 
#define USER_PASSWORD_NOT_REQUIRED   0x00000004
 
#define USER_TEMP_DUPLICATE_ACCOUNT   0x00000008
 
#define USER_NORMAL_ACCOUNT   0x00000010
 
#define USER_MNS_LOGON_ACCOUNT   0x00000020
 
#define USER_INTERDOMAIN_TRUST_ACCOUNT   0x00000040
 
#define USER_WORKSTATION_TRUST_ACCOUNT   0x00000080
 
#define USER_SERVER_TRUST_ACCOUNT   0x00000100
 
#define USER_DONT_EXPIRE_PASSWORD   0x00000200
 
#define USER_ACCOUNT_AUTO_LOCKED   0x00000400
 
#define USER_ENCRYPTED_TEXT_PASSWORD_ALLOWED   0x00000800
 
#define USER_SMARTCARD_REQUIRED   0x00001000
 
#define USER_TRUSTED_FOR_DELEGATION   0x00002000
 
#define USER_NOT_DELEGATED   0x00004000
 
#define USER_USE_DES_KEY_ONLY   0x00008000
 
#define USER_DONT_REQUIRE_PREAUTH   0x00010000
 
#define USER_PASSWORD_EXPIRED   0x00020000
 
#define USER_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION   0x00040000
 
#define USER_NO_AUTH_DATA_REQUIRED   0x00080000
 
#define USER_PARTIAL_SECRETS_ACCOUNT   0x00100000
 
#define USER_USE_AES_KEYS   0x00200000
 
#define SAM_DAYS_PER_WEEK   (7)
 
#define SAM_HOURS_PER_WEEK   (24 * SAM_DAYS_PER_WEEK)
 
#define SAM_MINUTES_PER_WEEK   (60 * SAM_HOURS_PER_WEEK)
 
#define USER_ALL_USERNAME   0x00000001
 
#define USER_ALL_FULLNAME   0x00000002
 
#define USER_ALL_USERID   0x00000004
 
#define USER_ALL_PRIMARYGROUPID   0x00000008
 
#define USER_ALL_ADMINCOMMENT   0x00000010
 
#define USER_ALL_USERCOMMENT   0x00000020
 
#define USER_ALL_HOMEDIRECTORY   0x00000040
 
#define USER_ALL_HOMEDIRECTORYDRIVE   0x00000080
 
#define USER_ALL_SCRIPTPATH   0x00000100
 
#define USER_ALL_PROFILEPATH   0x00000200
 
#define USER_ALL_WORKSTATIONS   0x00000400
 
#define USER_ALL_LASTLOGON   0x00000800
 
#define USER_ALL_LASTLOGOFF   0x00001000
 
#define USER_ALL_LOGONHOURS   0x00002000
 
#define USER_ALL_BADPASSWORDCOUNT   0x00004000
 
#define USER_ALL_LOGONCOUNT   0x00008000
 
#define USER_ALL_PASSWORDCANCHANGE   0x00010000
 
#define USER_ALL_PASSWORDMUSTCHANGE   0x00020000
 
#define USER_ALL_PASSWORDLASTSET   0x00040000
 
#define USER_ALL_ACCOUNTEXPIRES   0x00080000
 
#define USER_ALL_USERACCOUNTCONTROL   0x00100000
 
#define USER_ALL_PARAMETERS   0x00200000
 
#define USER_ALL_COUNTRYCODE   0x00400000
 
#define USER_ALL_CODEPAGE   0x00800000
 
#define USER_ALL_NTPASSWORDPRESENT   0x01000000
 
#define USER_ALL_LMPASSWORDPRESENT   0x02000000
 
#define USER_ALL_PRIVATEDATA   0x04000000
 
#define USER_ALL_PASSWORDEXPIRED   0x08000000
 
#define USER_ALL_SECURITYDESCRIPTOR   0x10000000
 
#define USER_ALL_OWFPASSWORD   0x20000000
 
#define USER_ALL_UNDEFINED_MASK   0xC0000000
 
#define USER_ALL_READ_GENERAL_MASK   0x0000003F
 
#define USER_ALL_READ_LOGON_MASK   0x0003FFC0
 
#define USER_ALL_READ_ACCOUNT_MASK   0x003C0000
 
#define USER_ALL_READ_PREFERENCES_MASK   0x00C00000
 
#define USER_ALL_READ_TRUSTED_MASK   0x1F000000
 
#define USER_ALL_READ_CANT_MASK   0xC0000000
 
#define USER_ALL_WRITE_ACCOUNT_MASK   0x003827DB
 
#define USER_ALL_WRITE_PREFERENCES_MASK   0x00C00020
 
#define USER_ALL_WRITE_FORCE_PASSWORD_CHANGE_MASK   0x0B000000
 
#define USER_ALL_WRITE_TRUSTED_MASK   0x1404D800
 
#define USER_ALL_WRITE_CANT_MASK   0xC0030004
 
#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_PASSWORD_NOT_DEFAULT   6
 
#define SAM_PWD_CHANGE_FAILED_BY_FILTER   7
 
#define SAM_PWD_CHANGE_PASSWORD_TOO_LONG   8
 
#define SAM_PWD_CHANGE_FAILURE_REASON_MAX   8
 
#define DOMAIN_PASSWORD_COMPLEX   0x00000001L
 
#define DOMAIN_PASSWORD_NO_ANON_CHANGE   0x00000002L
 
#define DOMAIN_PASSWORD_NO_CLEAR_CHANGE   0x00000004L
 
#define DOMAIN_LOCKOUT_ADMINS   0x00000008L
 
#define DOMAIN_PASSWORD_STORE_CLEARTEXT   0x00000010L
 
#define DOMAIN_REFUSE_PASSWORD_CHANGE   0x00000020L
 
#define DOMAIN_NO_LM_OWF_CHANGE   0x00000040L
 
#define _DOMAIN_PASSWORD_INFORMATION_DEFINED
 
#define SAM_SID_COMPATIBILITY_ALL   0
 
#define SAM_SID_COMPATIBILITY_LAX   1
 
#define SAM_SID_COMPATIBILITY_STRICT   2
 

Typedefs

typedef PVOID SAM_HANDLE
 
typedef PVOIDPSAM_HANDLE
 
typedef ULONG SAM_ENUMERATE_HANDLE
 
typedef ULONGPSAM_ENUMERATE_HANDLE
 
typedef struct _SAM_RID_ENUMERATION SAM_RID_ENUMERATION
 
typedef struct _SAM_RID_ENUMERATIONPSAM_RID_ENUMERATION
 
typedef struct _SAM_SID_ENUMERATION SAM_SID_ENUMERATION
 
typedef struct _SAM_SID_ENUMERATIONPSAM_SID_ENUMERATION
 
typedef enum _ALIAS_INFORMATION_CLASS ALIAS_INFORMATION_CLASS
 
typedef enum _ALIAS_INFORMATION_CLASSPALIAS_INFORMATION_CLASS
 
typedef struct _ALIAS_GENERAL_INFORMATION ALIAS_GENERAL_INFORMATION
 
typedef struct _ALIAS_GENERAL_INFORMATIONPALIAS_GENERAL_INFORMATION
 
typedef struct _ALIAS_NAME_INFORMATION ALIAS_NAME_INFORMATION
 
typedef struct _ALIAS_NAME_INFORMATIONPALIAS_NAME_INFORMATION
 
typedef struct _ALIAS_ADM_COMMENT_INFORMATION ALIAS_ADM_COMMENT_INFORMATION
 
typedef struct _ALIAS_ADM_COMMENT_INFORMATIONPALIAS_ADM_COMMENT_INFORMATION
 
typedef enum _DOMAIN_DISPLAY_INFORMATION DOMAIN_DISPLAY_INFORMATION
 
typedef enum _DOMAIN_DISPLAY_INFORMATIONPDOMAIN_DISPLAY_INFORMATION
 
typedef struct _DOMAIN_DISPLAY_USER DOMAIN_DISPLAY_USER
 
typedef struct _DOMAIN_DISPLAY_USERPDOMAIN_DISPLAY_USER
 
typedef struct _DOMAIN_DISPLAY_MACHINE DOMAIN_DISPLAY_MACHINE
 
typedef struct _DOMAIN_DISPLAY_MACHINEPDOMAIN_DISPLAY_MACHINE
 
typedef struct _DOMAIN_DISPLAY_GROUP DOMAIN_DISPLAY_GROUP
 
typedef struct _DOMAIN_DISPLAY_GROUPPDOMAIN_DISPLAY_GROUP
 
typedef enum _DOMAIN_INFORMATION_CLASS DOMAIN_INFORMATION_CLASS
 
typedef enum _DOMAIN_SERVER_ENABLE_STATE DOMAIN_SERVER_ENABLE_STATE
 
typedef enum _DOMAIN_SERVER_ENABLE_STATEPDOMAIN_SERVER_ENABLE_STATE
 
typedef enum _DOMAIN_SERVER_ROLE DOMAIN_SERVER_ROLE
 
typedef enum _DOMAIN_SERVER_ROLEPDOMAIN_SERVER_ROLE
 
typedef struct _DOMAIN_PASSWORD_INFORMATION DOMAIN_PASSWORD_INFORMATION
 
typedef struct _DOMAIN_PASSWORD_INFORMATIONPDOMAIN_PASSWORD_INFORMATION
 
typedef struct _DOMAIN_GENERAL_INFORMATION DOMAIN_GENERAL_INFORMATION
 
typedef struct _DOMAIN_GENERAL_INFORMATIONPDOMAIN_GENERAL_INFORMATION
 
typedef struct _DOMAIN_LOGOFF_INFORMATION DOMAIN_LOGOFF_INFORMATION
 
typedef struct _DOMAIN_LOGOFF_INFORMATIONPDOMAIN_LOGOFF_INFORMATION
 
typedef struct _DOMAIN_OEM_INFORMATION DOMAIN_OEM_INFORMATION
 
typedef struct _DOMAIN_OEM_INFORMATIONPDOMAIN_OEM_INFORMATION
 
typedef struct _DOMAIN_NAME_INFORMATION DOMAIN_NAME_INFORMATION
 
typedef struct _DOMAIN_NAME_INFORMATIONPDOMAIN_NAME_INFORMATION
 
typedef struct _DOMAIN_REPLICATION_INFORMATION DOMAIN_REPLICATION_INFORMATION
 
typedef struct _DOMAIN_REPLICATION_INFORMATIONPDOMAIN_REPLICATION_INFORMATION
 
typedef struct _DOMAIN_SERVER_ROLE_INFORMATION DOMAIN_SERVER_ROLE_INFORMATION
 
typedef struct _DOMAIN_SERVER_ROLE_INFORMATIONPDOMAIN_SERVER_ROLE_INFORMATION
 
typedef struct _DOMAIN_MODIFIED_INFORMATION DOMAIN_MODIFIED_INFORMATION
 
typedef struct _DOMAIN_MODIFIED_INFORMATIONPDOMAIN_MODIFIED_INFORMATION
 
typedef struct _DOMAIN_STATE_INFORMATION DOMAIN_STATE_INFORMATION
 
typedef struct _DOMAIN_STATE_INFORMATIONPDOMAIN_STATE_INFORMATION
 
typedef struct _DOMAIN_UAS_INFORMATION DOMAIN_UAS_INFORMATION
 
typedef struct _DOMAIN_GENERAL_INFORMATION2 DOMAIN_GENERAL_INFORMATION2
 
typedef struct _DOMAIN_GENERAL_INFORMATION2PDOMAIN_GENERAL_INFORMATION2
 
typedef struct _DOMAIN_LOCKOUT_INFORMATION DOMAIN_LOCKOUT_INFORMATION
 
typedef struct _DOMAIN_LOCKOUT_INFORMATIONPDOMAIN_LOCKOUT_INFORMATION
 
typedef struct _DOMAIN_MODIFIED_INFORMATION2 DOMAIN_MODIFIED_INFORMATION2
 
typedef struct _DOMAIN_MODIFIED_INFORMATION2PDOMAIN_MODIFIED_INFORMATION2
 
typedef enum _GROUP_INFORMATION_CLASS GROUP_INFORMATION_CLASS
 
typedef struct _GROUP_GENERAL_INFORMATION GROUP_GENERAL_INFORMATION
 
typedef struct _GROUP_GENERAL_INFORMATIONPGROUP_GENERAL_INFORMATION
 
typedef struct _GROUP_NAME_INFORMATION GROUP_NAME_INFORMATION
 
typedef struct _GROUP_NAME_INFORMATIONPGROUP_NAME_INFORMATION
 
typedef struct _GROUP_ATTRIBUTE_INFORMATION GROUP_ATTRIBUTE_INFORMATION
 
typedef struct _GROUP_ATTRIBUTE_INFORMATIONPGROUP_ATTRIBUTE_INFORMATION
 
typedef struct GROUP_ADM_COMMENT_INFORMATION GROUP_ADM_COMMENT_INFORMATION
 
typedef struct GROUP_ADM_COMMENT_INFORMATIONPGROUP_ADM_COMMENT_INFORMATION
 
typedef struct _GROUP_MEMBERSHIP GROUP_MEMBERSHIP
 
typedef struct _GROUP_MEMBERSHIPPGROUP_MEMBERSHIP
 
typedef struct _LOGON_HOURS LOGON_HOURS
 
typedef struct _LOGON_HOURSPLOGON_HOURS
 
typedef struct _SR_SECURITY_DESCRIPTOR SR_SECURITY_DESCRIPTOR
 
typedef struct _SR_SECURITY_DESCRIPTORPSR_SECURITY_DESCRIPTOR
 
typedef enum _USER_INFORMATION_CLASS USER_INFORMATION_CLASS
 
typedef enum _USER_INFORMATION_CLASSPUSER_INFORMATION_CLASS
 
typedef struct _USER_GENERAL_INFORMATION USER_GENERAL_INFORMATION
 
typedef struct _USER_GENERAL_INFORMATIONPUSER_GENERAL_INFORMATION
 
typedef struct _USER_PREFERENCES_INFORMATION USER_PREFERENCES_INFORMATION
 
typedef struct _USER_PREFERENCES_INFORMATIONPUSER_PREFERENCES_INFORMATION
 
typedef struct _USER_LOGON_INFORMATION USER_LOGON_INFORMATION
 
typedef struct _USER_LOGON_INFORMATIONPUSER_LOGON_INFORMATION
 
typedef struct _USER_LOGON_HOURS_INFORMATION USER_LOGON_HOURS_INFORMATION
 
typedef struct _USER_LOGON_HOURS_INFORMATIONPUSER_LOGON_HOURS_INFORMATION
 
typedef struct _USER_ACCOUNT_INFORMATION USER_ACCOUNT_INFORMATION
 
typedef struct _USER_ACCOUNT_INFORMATIONPUSER_ACCOUNT_INFORMATION
 
typedef struct _USER_NAME_INFORMATION USER_NAME_INFORMATION
 
typedef struct _USER_NAME_INFORMATIONPUSER_NAME_INFORMATION
 
typedef struct _USER_ACCOUNT_NAME_INFORMATION USER_ACCOUNT_NAME_INFORMATION
 
typedef struct _USER_ACCOUNT_NAME_INFORMATIONPUSER_ACCOUNT_NAME_INFORMATION
 
typedef struct _USER_FULL_NAME_INFORMATION USER_FULL_NAME_INFORMATION
 
typedef struct _USER_FULL_NAME_INFORMATIONPUSER_FULL_NAME_INFORMATION
 
typedef struct _USER_PRIMARY_GROUP_INFORMATION USER_PRIMARY_GROUP_INFORMATION
 
typedef struct _USER_PRIMARY_GROUP_INFORMATIONPUSER_PRIMARY_GROUP_INFORMATION
 
typedef struct _USER_HOME_INFORMATION USER_HOME_INFORMATION
 
typedef struct _USER_HOME_INFORMATIONPUSER_HOME_INFORMATION
 
typedef struct _USER_SCRIPT_INFORMATION USER_SCRIPT_INFORMATION
 
typedef struct _USER_SCRIPT_INFORMATIONPUSER_SCRIPT_INFORMATION
 
typedef struct _USER_PROFILE_INFORMATION USER_PROFILE_INFORMATION
 
typedef struct _USER_PROFILE_INFORMATIONPUSER_PROFILE_INFORMATION
 
typedef struct _USER_ADMIN_COMMENT_INFORMATION USER_ADMIN_COMMENT_INFORMATION
 
typedef struct _USER_ADMIN_COMMENT_INFORMATIONPUSER_ADMIN_COMMENT_INFORMATION
 
typedef struct _USER_WORKSTATIONS_INFORMATION USER_WORKSTATIONS_INFORMATION
 
typedef struct _USER_WORKSTATIONS_INFORMATIONPUSER_WORKSTATIONS_INFORMATION
 
typedef struct _USER_SET_PASSWORD_INFORMATION USER_SET_PASSWORD_INFORMATION
 
typedef struct _USER_SET_PASSWORD_INFORMATIONPUSER_SET_PASSWORD_INFORMATION
 
typedef struct _USER_CONTROL_INFORMATION USER_CONTROL_INFORMATION
 
typedef struct _USER_CONTROL_INFORMATIONPUSER_CONTROL_INFORMATION
 
typedef struct _USER_EXPIRES_INFORMATION USER_EXPIRES_INFORMATION
 
typedef struct _USER_EXPIRES_INFORMATIONPUSER_EXPIRES_INFORMATION
 
typedef struct _USER_PARAMETERS_INFORMATION USER_PARAMETERS_INFORMATION
 
typedef struct _USER_PARAMETERS_INFORMATIONPUSER_PARAMETERS_INFORMATION
 
typedef struct _USER_ALL_INFORMATION USER_ALL_INFORMATION
 
typedef struct _USER_ALL_INFORMATIONPUSER_ALL_INFORMATION
 
typedef struct _USER_PWD_CHANGE_FAILURE_INFORMATION USER_PWD_CHANGE_FAILURE_INFORMATION
 
typedef struct _USER_PWD_CHANGE_FAILURE_INFORMATIONPUSER_PWD_CHANGE_FAILURE_INFORMATION
 

Enumerations

enum  _ALIAS_INFORMATION_CLASS {
  AliasGeneralInformation = 1 , AliasNameInformation , AliasAdminCommentInformation , AliasGeneralInformation = 1 ,
  AliasNameInformation , AliasAdminCommentInformation
}
 
enum  _DOMAIN_DISPLAY_INFORMATION {
  DomainDisplayUser = 1 , DomainDisplayMachine , DomainDisplayGroup , DomainDisplayOemUser ,
  DomainDisplayOemGroup , DomainDisplayServer , DomainDisplayUser = 1 , DomainDisplayMachine ,
  DomainDisplayGroup , DomainDisplayOemUser , DomainDisplayOemGroup , DomainDisplayServer
}
 
enum  _DOMAIN_INFORMATION_CLASS {
  DomainPasswordInformation = 1 , DomainGeneralInformation , DomainLogoffInformation , DomainOemInformation ,
  DomainNameInformation , DomainReplicationInformation , DomainServerRoleInformation , DomainModifiedInformation ,
  DomainStateInformation , DomainUasInformation , DomainGeneralInformation2 , DomainLockoutInformation ,
  DomainModifiedInformation2 , DomainPasswordInformation = 1 , DomainGeneralInformation = 2 , DomainLogoffInformation = 3 ,
  DomainOemInformation = 4 , DomainNameInformation = 5 , DomainReplicationInformation = 6 , DomainServerRoleInformation = 7 ,
  DomainModifiedInformation = 8 , DomainStateInformation = 9 , DomainGeneralInformation2 = 11 , DomainLockoutInformation = 12 ,
  DomainModifiedInformation2 = 13
}
 
enum  _DOMAIN_SERVER_ENABLE_STATE { DomainServerEnabled = 1 , DomainServerDisabled , DomainServerEnabled = 1 , DomainServerDisabled }
 
enum  _DOMAIN_SERVER_ROLE { DomainServerRoleBackup = 2 , DomainServerRolePrimary , DomainServerRoleBackup = 2 , DomainServerRolePrimary = 3 }
 
enum  _GROUP_INFORMATION_CLASS {
  GroupGeneralInformation = 1 , GroupNameInformation , GroupAttributeInformation , GroupAdminCommentInformation ,
  GroupReplicationInformation , GroupGeneralInformation = 1 , GroupNameInformation , GroupAttributeInformation ,
  GroupAdminCommentInformation , GroupReplicationInformation
}
 
enum  _USER_INFORMATION_CLASS {
  UserGeneralInformation = 1 , UserPreferencesInformation , UserLogonInformation , UserLogonHoursInformation ,
  UserAccountInformation , UserNameInformation , UserAccountNameInformation , UserFullNameInformation ,
  UserPrimaryGroupInformation , UserHomeInformation , UserScriptInformation , UserProfileInformation ,
  UserAdminCommentInformation , UserWorkStationsInformation , UserSetPasswordInformation , UserControlInformation ,
  UserExpiresInformation , UserInternal1Information , UserInternal2Information , UserParametersInformation ,
  UserAllInformation , UserInternal3Information , UserInternal4Information , UserInternal5Information ,
  UserInternal4InformationNew , UserInternal5InformationNew , UserInternal6Information , UserExtendedInformation ,
  UserLogonUIInformation , UserGeneralInformation = 1 , UserPreferencesInformation = 2 , UserLogonInformation = 3 ,
  UserLogonHoursInformation = 4 , UserAccountInformation = 5 , UserNameInformation = 6 , UserAccountNameInformation = 7 ,
  UserFullNameInformation = 8 , UserPrimaryGroupInformation = 9 , UserHomeInformation = 10 , UserScriptInformation = 11 ,
  UserProfileInformation = 12 , UserAdminCommentInformation = 13 , UserWorkStationsInformation = 14 , UserSetPasswordInformation = 15 ,
  UserControlInformation = 16 , UserExpiresInformation = 17 , UserInternal1Information = 18 , UserInternal2Information = 19 ,
  UserParametersInformation = 20 , UserAllInformation = 21 , UserInternal3Information = 22 , UserInternal4Information = 23 ,
  UserInternal5Information = 24 , UserInternal4InformationNew = 25 , UserInternal5InformationNew = 26 , UserInternal6Information ,
  UserExtendedInformation , UserLogonUIInformation
}
 

Functions

NTSTATUS NTAPI SamAddMemberToAlias (IN SAM_HANDLE AliasHandle, IN PSID MemberId)
 
NTSTATUS NTAPI SamAddMemberToGroup (IN SAM_HANDLE GroupHandle, IN ULONG MemberId, IN ULONG Attributes)
 
NTSTATUS NTAPI SamAddMultipleMembersToAlias (IN SAM_HANDLE AliasHandle, IN PSID *MemberIds, IN ULONG MemberCount)
 
NTSTATUS NTAPI SamChangePasswordUser (IN SAM_HANDLE UserHandle, IN PUNICODE_STRING OldPassword, IN PUNICODE_STRING NewPassword)
 
NTSTATUS NTAPI SamChangePasswordUser2 (IN PUNICODE_STRING ServerName, IN PUNICODE_STRING UserName, IN PUNICODE_STRING OldPassword, IN PUNICODE_STRING NewPassword)
 
NTSTATUS NTAPI SamChangePasswordUser3 (IN PUNICODE_STRING ServerName, IN PUNICODE_STRING UserName, IN PUNICODE_STRING OldPassword, IN PUNICODE_STRING NewPassword, OUT PDOMAIN_PASSWORD_INFORMATION *EffectivePasswordPolicy, OUT PUSER_PWD_CHANGE_FAILURE_INFORMATION *PasswordChangeFailureInfo)
 
NTSTATUS NTAPI SamCloseHandle (IN SAM_HANDLE SamHandle)
 
NTSTATUS NTAPI SamConnect (IN OUT PUNICODE_STRING ServerName OPTIONAL, OUT PSAM_HANDLE ServerHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes)
 
NTSTATUS NTAPI SamCreateAliasInDomain (IN SAM_HANDLE DomainHandle, IN PUNICODE_STRING AccountName, IN ACCESS_MASK DesiredAccess, OUT PSAM_HANDLE AliasHandle, OUT PULONG RelativeId)
 
NTSTATUS NTAPI SamCreateGroupInDomain (IN SAM_HANDLE DomainHandle, IN PUNICODE_STRING AccountName, IN ACCESS_MASK DesiredAccess, OUT PSAM_HANDLE GroupHandle, OUT PULONG RelativeId)
 
NTSTATUS NTAPI SamCreateUser2InDomain (IN SAM_HANDLE DomainHandle, IN PUNICODE_STRING AccountName, IN ULONG AccountType, IN ACCESS_MASK DesiredAccess, OUT PSAM_HANDLE UserHandle, OUT PULONG GrantedAccess, OUT PULONG RelativeId)
 
NTSTATUS NTAPI SamCreateUserInDomain (IN SAM_HANDLE DomainHandle, IN PUNICODE_STRING AccountName, IN ACCESS_MASK DesiredAccess, OUT PSAM_HANDLE UserHandle, OUT PULONG RelativeId)
 
NTSTATUS NTAPI SamDeleteAlias (IN SAM_HANDLE AliasHandle)
 
NTSTATUS NTAPI SamDeleteGroup (IN SAM_HANDLE GroupHandle)
 
NTSTATUS NTAPI SamDeleteUser (IN SAM_HANDLE UserHandle)
 
NTSTATUS NTAPI SamEnumerateAliasesInDomain (IN SAM_HANDLE DomainHandle, IN OUT PSAM_ENUMERATE_HANDLE EnumerationContext, OUT PVOID *Buffer, IN ULONG PreferedMaximumLength, OUT PULONG CountReturned)
 
NTSTATUS NTAPI SamEnumerateDomainsInSamServer (IN SAM_HANDLE ServerHandle, IN OUT PSAM_ENUMERATE_HANDLE EnumerationContext, OUT PVOID *Buffer, IN ULONG PreferedMaximumLength, OUT PULONG CountReturned)
 
NTSTATUS NTAPI SamEnumerateGroupsInDomain (IN SAM_HANDLE DomainHandle, IN OUT PSAM_ENUMERATE_HANDLE EnumerationContext, IN PVOID *Buffer, IN ULONG PreferedMaximumLength, OUT PULONG CountReturned)
 
NTSTATUS NTAPI SamEnumerateUsersInDomain (IN SAM_HANDLE DomainHandle, IN OUT PSAM_ENUMERATE_HANDLE EnumerationContext, IN ULONG UserAccountControl, OUT PVOID *Buffer, IN ULONG PreferedMaximumLength, OUT PULONG CountReturned)
 
NTSTATUS NTAPI SamFreeMemory (IN PVOID Buffer)
 
NTSTATUS NTAPI SamGetAliasMembership (IN SAM_HANDLE DomainHandle, IN ULONG PassedCount, IN PSID *Sids, OUT PULONG MembershipCount, OUT PULONG *Aliases)
 
NTSTATUS NTAPI SamGetCompatibilityMode (IN SAM_HANDLE ObjectHandle, OUT PULONG Mode)
 
NTSTATUS NTAPI SamGetDisplayEnumerationIndex (IN SAM_HANDLE DomainHandle, IN DOMAIN_DISPLAY_INFORMATION DisplayInformation, IN PUNICODE_STRING Prefix, OUT PULONG Index)
 
NTSTATUS NTAPI SamGetGroupsForUser (IN SAM_HANDLE UserHandle, OUT PGROUP_MEMBERSHIP *Groups, OUT PULONG MembershipCount)
 
NTSTATUS NTAPI SamGetMembersInAlias (IN SAM_HANDLE AliasHandle, OUT PSID **MemberIds, OUT PULONG MemberCount)
 
NTSTATUS NTAPI SamGetMembersInGroup (IN SAM_HANDLE GroupHandle, OUT PULONG *MemberIds, OUT PULONG *Attributes, OUT PULONG MemberCount)
 
NTSTATUS NTAPI SamLookupDomainInSamServer (IN SAM_HANDLE ServerHandle, IN PUNICODE_STRING Name, OUT PSID *DomainId)
 
NTSTATUS NTAPI SamLookupIdsInDomain (IN SAM_HANDLE DomainHandle, IN ULONG Count, IN PULONG RelativeIds, OUT PUNICODE_STRING *Names, OUT PSID_NAME_USE *Use OPTIONAL)
 
NTSTATUS NTAPI SamLookupNamesInDomain (IN SAM_HANDLE DomainHandle, IN ULONG Count, IN PUNICODE_STRING Names, OUT PULONG *RelativeIds, OUT PSID_NAME_USE *Use)
 
NTSTATUS NTAPI SamOpenAlias (IN SAM_HANDLE DomainHandle, IN ACCESS_MASK DesiredAccess, IN ULONG AliasId, OUT PSAM_HANDLE AliasHandle)
 
NTSTATUS NTAPI SamOpenDomain (IN SAM_HANDLE ServerHandle, IN ACCESS_MASK DesiredAccess, IN PSID DomainId, OUT PSAM_HANDLE DomainHandle)
 
NTSTATUS NTAPI SamOpenGroup (IN SAM_HANDLE DomainHandle, IN ACCESS_MASK DesiredAccess, IN ULONG GroupId, OUT PSAM_HANDLE GroupHandle)
 
NTSTATUS NTAPI SamOpenUser (IN SAM_HANDLE DomainHandle, IN ACCESS_MASK DesiredAccess, IN ULONG UserId, OUT PSAM_HANDLE UserHandle)
 
NTSTATUS NTAPI SamQueryDisplayInformation (IN SAM_HANDLE DomainHandle, IN DOMAIN_DISPLAY_INFORMATION DisplayInformation, IN ULONG Index, IN ULONG EntryCount, IN ULONG PreferredMaximumLength, OUT PULONG TotalAvailable, OUT PULONG TotalReturned, OUT PULONG ReturnedEntryCount, OUT PVOID *SortedBuffer)
 
NTSTATUS NTAPI SamQueryInformationAlias (IN SAM_HANDLE AliasHandle, IN ALIAS_INFORMATION_CLASS AliasInformationClass, OUT PVOID *Buffer)
 
NTSTATUS NTAPI SamQueryInformationDomain (IN SAM_HANDLE DomainHandle, IN DOMAIN_INFORMATION_CLASS DomainInformationClass, OUT PVOID *Buffer)
 
NTSTATUS NTAPI SamQueryInformationGroup (IN SAM_HANDLE GroupHandle, IN GROUP_INFORMATION_CLASS GroupInformationClass, OUT PVOID *Buffer)
 
NTSTATUS NTAPI SamQueryInformationUser (IN SAM_HANDLE UserHandle, IN USER_INFORMATION_CLASS UserInformationClass, OUT PVOID *Buffer)
 
NTSTATUS NTAPI SamQuerySecurityObject (IN SAM_HANDLE ObjectHandle, IN SECURITY_INFORMATION SecurityInformation, OUT PSECURITY_DESCRIPTOR *SecurityDescriptor)
 
NTSTATUS NTAPI SamRemoveMemberFromAlias (IN SAM_HANDLE AliasHandle, IN PSID MemberId)
 
NTSTATUS NTAPI SamRemoveMemberFromForeignDomain (IN SAM_HANDLE DomainHandle, IN PSID MemberId)
 
NTSTATUS NTAPI SamRemoveMemberFromGroup (IN SAM_HANDLE GroupHandle, IN ULONG MemberId)
 
NTSTATUS NTAPI SamRemoveMultipleMembersFromAlias (IN SAM_HANDLE AliasHandle, IN PSID *MemberIds, IN ULONG MemberCount)
 
NTSTATUS NTAPI SamRidToSid (IN SAM_HANDLE ObjectHandle, IN ULONG Rid, OUT PSID *Sid)
 
NTSTATUS NTAPI SamSetInformationAlias (IN SAM_HANDLE AliasHandle, IN ALIAS_INFORMATION_CLASS AliasInformationClass, IN PVOID Buffer)
 
NTSTATUS NTAPI SamSetInformationDomain (IN SAM_HANDLE DomainHandle, IN DOMAIN_INFORMATION_CLASS DomainInformationClass, IN PVOID Buffer)
 
NTSTATUS NTAPI SamSetInformationGroup (IN SAM_HANDLE GroupHandle, IN GROUP_INFORMATION_CLASS GroupInformationClass, IN PVOID Buffer)
 
NTSTATUS NTAPI SamSetInformationUser (IN SAM_HANDLE UserHandle, IN USER_INFORMATION_CLASS UserInformationClass, IN PVOID Buffer)
 
NTSTATUS NTAPI SamSetMemberAttributesOfGroup (IN SAM_HANDLE GroupHandle, IN ULONG MemberId, IN ULONG Attributes)
 
NTSTATUS NTAPI SamSetSecurityObject (IN SAM_HANDLE ObjectHandle, IN SECURITY_INFORMATION SecurityInformation, IN PSECURITY_DESCRIPTOR SecurityDescriptor)
 
NTSTATUS NTAPI SamShutdownSamServer (IN SAM_HANDLE ServerHandle)
 

Macro Definition Documentation

◆ _DOMAIN_PASSWORD_INFORMATION_DEFINED

#define _DOMAIN_PASSWORD_INFORMATION_DEFINED

Definition at line 369 of file ntsam.h.

◆ ALIAS_ADD_MEMBER

#define ALIAS_ADD_MEMBER   0x00000001

Definition at line 9 of file ntsam.h.

◆ ALIAS_ALL_ACCESS

#define ALIAS_ALL_ACCESS
Value:
#define STANDARD_RIGHTS_REQUIRED
Definition: nt_native.h:63
#define ALIAS_WRITE_ACCOUNT
Definition: ntsam.h:13
#define ALIAS_LIST_MEMBERS
Definition: ntsam.h:11
#define ALIAS_READ_INFORMATION
Definition: ntsam.h:12
#define ALIAS_REMOVE_MEMBER
Definition: ntsam.h:10
#define ALIAS_ADD_MEMBER
Definition: ntsam.h:9

Definition at line 26 of file ntsam.h.

◆ ALIAS_EXECUTE

#define ALIAS_EXECUTE
Value:

Definition at line 23 of file ntsam.h.

◆ ALIAS_LIST_MEMBERS

#define ALIAS_LIST_MEMBERS   0x00000004

Definition at line 11 of file ntsam.h.

◆ ALIAS_READ

#define ALIAS_READ
Value:
#define STANDARD_RIGHTS_READ
Definition: nt_native.h:65

Definition at line 15 of file ntsam.h.

◆ ALIAS_READ_INFORMATION

#define ALIAS_READ_INFORMATION   0x00000008

Definition at line 12 of file ntsam.h.

◆ ALIAS_REMOVE_MEMBER

#define ALIAS_REMOVE_MEMBER   0x00000002

Definition at line 10 of file ntsam.h.

◆ ALIAS_WRITE

#define ALIAS_WRITE
Value:

Definition at line 18 of file ntsam.h.

◆ ALIAS_WRITE_ACCOUNT

#define ALIAS_WRITE_ACCOUNT   0x00000010

Definition at line 13 of file ntsam.h.

◆ DOMAIN_ADMINISTER_SERVER

#define DOMAIN_ADMINISTER_SERVER   0x00000400

Definition at line 43 of file ntsam.h.

◆ DOMAIN_ALL_ACCESS

#define DOMAIN_ALL_ACCESS
Value:
#define DOMAIN_WRITE_OTHER_PARAMETERS
Definition: ntsam.h:36
#define DOMAIN_CREATE_GROUP
Definition: ntsam.h:38
#define DOMAIN_LOOKUP
Definition: ntsam.h:42
#define DOMAIN_CREATE_ALIAS
Definition: ntsam.h:39
#define DOMAIN_WRITE_PASSWORD_PARAMS
Definition: ntsam.h:34
#define DOMAIN_READ_PASSWORD_PARAMETERS
Definition: ntsam.h:33
#define DOMAIN_CREATE_USER
Definition: ntsam.h:37
#define DOMAIN_GET_ALIAS_MEMBERSHIP
Definition: ntsam.h:40
#define DOMAIN_LIST_ACCOUNTS
Definition: ntsam.h:41
#define DOMAIN_ADMINISTER_SERVER
Definition: ntsam.h:43
#define DOMAIN_READ_OTHER_PARAMETERS
Definition: ntsam.h:35

Definition at line 62 of file ntsam.h.

◆ DOMAIN_CREATE_ALIAS

#define DOMAIN_CREATE_ALIAS   0x00000040

Definition at line 39 of file ntsam.h.

◆ DOMAIN_CREATE_GROUP

#define DOMAIN_CREATE_GROUP   0x00000020

Definition at line 38 of file ntsam.h.

◆ DOMAIN_CREATE_USER

#define DOMAIN_CREATE_USER   0x00000010

Definition at line 37 of file ntsam.h.

◆ DOMAIN_EXECUTE

#define DOMAIN_EXECUTE

◆ DOMAIN_GET_ALIAS_MEMBERSHIP

#define DOMAIN_GET_ALIAS_MEMBERSHIP   0x00000080

Definition at line 40 of file ntsam.h.

◆ DOMAIN_LIST_ACCOUNTS

#define DOMAIN_LIST_ACCOUNTS   0x00000100

Definition at line 41 of file ntsam.h.

◆ DOMAIN_LOCKOUT_ADMINS

#define DOMAIN_LOCKOUT_ADMINS   0x00000008L

Definition at line 257 of file ntsam.h.

◆ DOMAIN_LOOKUP

#define DOMAIN_LOOKUP   0x00000200

Definition at line 42 of file ntsam.h.

◆ DOMAIN_NO_LM_OWF_CHANGE

#define DOMAIN_NO_LM_OWF_CHANGE   0x00000040L

Definition at line 260 of file ntsam.h.

◆ DOMAIN_PASSWORD_COMPLEX

#define DOMAIN_PASSWORD_COMPLEX   0x00000001L

Definition at line 254 of file ntsam.h.

◆ DOMAIN_PASSWORD_NO_ANON_CHANGE

#define DOMAIN_PASSWORD_NO_ANON_CHANGE   0x00000002L

Definition at line 255 of file ntsam.h.

◆ DOMAIN_PASSWORD_NO_CLEAR_CHANGE

#define DOMAIN_PASSWORD_NO_CLEAR_CHANGE   0x00000004L

Definition at line 256 of file ntsam.h.

◆ DOMAIN_PASSWORD_STORE_CLEARTEXT

#define DOMAIN_PASSWORD_STORE_CLEARTEXT   0x00000010L

Definition at line 258 of file ntsam.h.

◆ DOMAIN_READ

#define DOMAIN_READ

◆ DOMAIN_READ_OTHER_PARAMETERS

#define DOMAIN_READ_OTHER_PARAMETERS   0x00000004

Definition at line 35 of file ntsam.h.

◆ DOMAIN_READ_PASSWORD_PARAMETERS

#define DOMAIN_READ_PASSWORD_PARAMETERS   0x00000001

Definition at line 33 of file ntsam.h.

◆ DOMAIN_REFUSE_PASSWORD_CHANGE

#define DOMAIN_REFUSE_PASSWORD_CHANGE   0x00000020L

Definition at line 259 of file ntsam.h.

◆ DOMAIN_WRITE

◆ DOMAIN_WRITE_OTHER_PARAMETERS

#define DOMAIN_WRITE_OTHER_PARAMETERS   0x00000008

Definition at line 36 of file ntsam.h.

◆ DOMAIN_WRITE_PASSWORD_PARAMS

#define DOMAIN_WRITE_PASSWORD_PARAMS   0x00000002

Definition at line 34 of file ntsam.h.

◆ GROUP_ADD_MEMBER

#define GROUP_ADD_MEMBER   0x00000004

Definition at line 77 of file ntsam.h.

◆ GROUP_ALL_ACCESS

#define GROUP_ALL_ACCESS
Value:
#define GROUP_READ_INFORMATION
Definition: ntsam.h:75
#define GROUP_ADD_MEMBER
Definition: ntsam.h:77
#define GROUP_LIST_MEMBERS
Definition: ntsam.h:79
#define GROUP_WRITE_ACCOUNT
Definition: ntsam.h:76
#define GROUP_REMOVE_MEMBER
Definition: ntsam.h:78

Definition at line 92 of file ntsam.h.

◆ GROUP_EXECUTE

#define GROUP_EXECUTE
Value:

Definition at line 89 of file ntsam.h.

◆ GROUP_LIST_MEMBERS

#define GROUP_LIST_MEMBERS   0x00000010

Definition at line 79 of file ntsam.h.

◆ GROUP_READ

#define GROUP_READ
Value:

Definition at line 81 of file ntsam.h.

◆ GROUP_READ_INFORMATION

#define GROUP_READ_INFORMATION   0x00000001

Definition at line 75 of file ntsam.h.

◆ GROUP_REMOVE_MEMBER

#define GROUP_REMOVE_MEMBER   0x00000008

Definition at line 78 of file ntsam.h.

◆ GROUP_WRITE

#define GROUP_WRITE

◆ GROUP_WRITE_ACCOUNT

#define GROUP_WRITE_ACCOUNT   0x00000002

Definition at line 76 of file ntsam.h.

◆ SAM_DAYS_PER_WEEK

#define SAM_DAYS_PER_WEEK   (7)

Definition at line 191 of file ntsam.h.

◆ SAM_HOURS_PER_WEEK

#define SAM_HOURS_PER_WEEK   (24 * SAM_DAYS_PER_WEEK)

Definition at line 192 of file ntsam.h.

◆ SAM_MINUTES_PER_WEEK

#define SAM_MINUTES_PER_WEEK   (60 * SAM_HOURS_PER_WEEK)

Definition at line 193 of file ntsam.h.

◆ SAM_PWD_CHANGE_FAILED_BY_FILTER

#define SAM_PWD_CHANGE_FAILED_BY_FILTER   7

Definition at line 249 of file ntsam.h.

◆ SAM_PWD_CHANGE_FAILURE_REASON_MAX

#define SAM_PWD_CHANGE_FAILURE_REASON_MAX   8

Definition at line 251 of file ntsam.h.

◆ SAM_PWD_CHANGE_FULLNAME_IN_PASSWORD

#define SAM_PWD_CHANGE_FULLNAME_IN_PASSWORD   4

Definition at line 246 of file ntsam.h.

◆ SAM_PWD_CHANGE_MACHINE_PASSWORD_NOT_DEFAULT

#define SAM_PWD_CHANGE_MACHINE_PASSWORD_NOT_DEFAULT   6

Definition at line 248 of file ntsam.h.

◆ SAM_PWD_CHANGE_NO_ERROR

#define SAM_PWD_CHANGE_NO_ERROR   0

Definition at line 242 of file ntsam.h.

◆ SAM_PWD_CHANGE_NOT_COMPLEX

#define SAM_PWD_CHANGE_NOT_COMPLEX   5

Definition at line 247 of file ntsam.h.

◆ SAM_PWD_CHANGE_PASSWORD_TOO_LONG

#define SAM_PWD_CHANGE_PASSWORD_TOO_LONG   8

Definition at line 250 of file ntsam.h.

◆ SAM_PWD_CHANGE_PASSWORD_TOO_SHORT

#define SAM_PWD_CHANGE_PASSWORD_TOO_SHORT   1

Definition at line 243 of file ntsam.h.

◆ SAM_PWD_CHANGE_PWD_IN_HISTORY

#define SAM_PWD_CHANGE_PWD_IN_HISTORY   2

Definition at line 244 of file ntsam.h.

◆ SAM_PWD_CHANGE_USERNAME_IN_PASSWORD

#define SAM_PWD_CHANGE_USERNAME_IN_PASSWORD   3

Definition at line 245 of file ntsam.h.

◆ SAM_SERVER_ALL_ACCESS

#define SAM_SERVER_ALL_ACCESS
Value:
#define SAM_SERVER_SHUTDOWN
Definition: ntsam.h:100
#define SAM_SERVER_LOOKUP_DOMAIN
Definition: ntsam.h:104
#define SAM_SERVER_CONNECT
Definition: ntsam.h:99
#define SAM_SERVER_ENUMERATE_DOMAINS
Definition: ntsam.h:103
#define SAM_SERVER_CREATE_DOMAIN
Definition: ntsam.h:102
#define SAM_SERVER_INITIALIZE
Definition: ntsam.h:101

Definition at line 118 of file ntsam.h.

◆ SAM_SERVER_CONNECT

#define SAM_SERVER_CONNECT   0x00000001

Definition at line 99 of file ntsam.h.

◆ SAM_SERVER_CREATE_DOMAIN

#define SAM_SERVER_CREATE_DOMAIN   0x00000008

Definition at line 102 of file ntsam.h.

◆ SAM_SERVER_ENUMERATE_DOMAINS

#define SAM_SERVER_ENUMERATE_DOMAINS   0x00000010

Definition at line 103 of file ntsam.h.

◆ SAM_SERVER_EXECUTE

#define SAM_SERVER_EXECUTE

◆ SAM_SERVER_INITIALIZE

#define SAM_SERVER_INITIALIZE   0x00000004

Definition at line 101 of file ntsam.h.

◆ SAM_SERVER_LOOKUP_DOMAIN

#define SAM_SERVER_LOOKUP_DOMAIN   0x00000020

Definition at line 104 of file ntsam.h.

◆ SAM_SERVER_READ

#define SAM_SERVER_READ
Value:

Definition at line 106 of file ntsam.h.

◆ SAM_SERVER_SHUTDOWN

#define SAM_SERVER_SHUTDOWN   0x00000002

Definition at line 100 of file ntsam.h.

◆ SAM_SERVER_WRITE

#define SAM_SERVER_WRITE

◆ SAM_SID_COMPATIBILITY_ALL

#define SAM_SID_COMPATIBILITY_ALL   0

Definition at line 728 of file ntsam.h.

◆ SAM_SID_COMPATIBILITY_LAX

#define SAM_SID_COMPATIBILITY_LAX   1

Definition at line 729 of file ntsam.h.

◆ SAM_SID_COMPATIBILITY_STRICT

#define SAM_SID_COMPATIBILITY_STRICT   2

Definition at line 730 of file ntsam.h.

◆ USER_ACCOUNT_AUTO_LOCKED

#define USER_ACCOUNT_AUTO_LOCKED   0x00000400

Definition at line 177 of file ntsam.h.

◆ USER_ACCOUNT_DISABLED

#define USER_ACCOUNT_DISABLED   0x00000001

Definition at line 167 of file ntsam.h.

◆ USER_ALL_ACCESS

#define USER_ALL_ACCESS
Value:
#define USER_READ_GENERAL
Definition: ntsam.h:126
#define USER_READ_LOGON
Definition: ntsam.h:129
#define USER_WRITE_GROUP_INFORMATION
Definition: ntsam.h:136
#define USER_FORCE_PASSWORD_CHANGE
Definition: ntsam.h:133
#define USER_READ_PREFERENCES
Definition: ntsam.h:127
#define USER_WRITE_ACCOUNT
Definition: ntsam.h:131
#define USER_READ_ACCOUNT
Definition: ntsam.h:130
#define USER_LIST_GROUPS
Definition: ntsam.h:134
#define USER_WRITE_PREFERENCES
Definition: ntsam.h:128
#define USER_CHANGE_PASSWORD
Definition: ntsam.h:132
#define USER_READ_GROUP_INFORMATION
Definition: ntsam.h:135

Definition at line 153 of file ntsam.h.

◆ USER_ALL_ACCOUNTEXPIRES

#define USER_ALL_ACCOUNTEXPIRES   0x00080000

Definition at line 215 of file ntsam.h.

◆ USER_ALL_ADMINCOMMENT

#define USER_ALL_ADMINCOMMENT   0x00000010

Definition at line 200 of file ntsam.h.

◆ USER_ALL_BADPASSWORDCOUNT

#define USER_ALL_BADPASSWORDCOUNT   0x00004000

Definition at line 210 of file ntsam.h.

◆ USER_ALL_CODEPAGE

#define USER_ALL_CODEPAGE   0x00800000

Definition at line 219 of file ntsam.h.

◆ USER_ALL_COUNTRYCODE

#define USER_ALL_COUNTRYCODE   0x00400000

Definition at line 218 of file ntsam.h.

◆ USER_ALL_FULLNAME

#define USER_ALL_FULLNAME   0x00000002

Definition at line 197 of file ntsam.h.

◆ USER_ALL_HOMEDIRECTORY

#define USER_ALL_HOMEDIRECTORY   0x00000040

Definition at line 202 of file ntsam.h.

◆ USER_ALL_HOMEDIRECTORYDRIVE

#define USER_ALL_HOMEDIRECTORYDRIVE   0x00000080

Definition at line 203 of file ntsam.h.

◆ USER_ALL_LASTLOGOFF

#define USER_ALL_LASTLOGOFF   0x00001000

Definition at line 208 of file ntsam.h.

◆ USER_ALL_LASTLOGON

#define USER_ALL_LASTLOGON   0x00000800

Definition at line 207 of file ntsam.h.

◆ USER_ALL_LMPASSWORDPRESENT

#define USER_ALL_LMPASSWORDPRESENT   0x02000000

Definition at line 221 of file ntsam.h.

◆ USER_ALL_LOGONCOUNT

#define USER_ALL_LOGONCOUNT   0x00008000

Definition at line 211 of file ntsam.h.

◆ USER_ALL_LOGONHOURS

#define USER_ALL_LOGONHOURS   0x00002000

Definition at line 209 of file ntsam.h.

◆ USER_ALL_NTPASSWORDPRESENT

#define USER_ALL_NTPASSWORDPRESENT   0x01000000

Definition at line 220 of file ntsam.h.

◆ USER_ALL_OWFPASSWORD

#define USER_ALL_OWFPASSWORD   0x20000000

Definition at line 225 of file ntsam.h.

◆ USER_ALL_PARAMETERS

#define USER_ALL_PARAMETERS   0x00200000

Definition at line 217 of file ntsam.h.

◆ USER_ALL_PASSWORDCANCHANGE

#define USER_ALL_PASSWORDCANCHANGE   0x00010000

Definition at line 212 of file ntsam.h.

◆ USER_ALL_PASSWORDEXPIRED

#define USER_ALL_PASSWORDEXPIRED   0x08000000

Definition at line 223 of file ntsam.h.

◆ USER_ALL_PASSWORDLASTSET

#define USER_ALL_PASSWORDLASTSET   0x00040000

Definition at line 214 of file ntsam.h.

◆ USER_ALL_PASSWORDMUSTCHANGE

#define USER_ALL_PASSWORDMUSTCHANGE   0x00020000

Definition at line 213 of file ntsam.h.

◆ USER_ALL_PRIMARYGROUPID

#define USER_ALL_PRIMARYGROUPID   0x00000008

Definition at line 199 of file ntsam.h.

◆ USER_ALL_PRIVATEDATA

#define USER_ALL_PRIVATEDATA   0x04000000

Definition at line 222 of file ntsam.h.

◆ USER_ALL_PROFILEPATH

#define USER_ALL_PROFILEPATH   0x00000200

Definition at line 205 of file ntsam.h.

◆ USER_ALL_READ_ACCOUNT_MASK

#define USER_ALL_READ_ACCOUNT_MASK   0x003C0000

Definition at line 230 of file ntsam.h.

◆ USER_ALL_READ_CANT_MASK

#define USER_ALL_READ_CANT_MASK   0xC0000000

Definition at line 233 of file ntsam.h.

◆ USER_ALL_READ_GENERAL_MASK

#define USER_ALL_READ_GENERAL_MASK   0x0000003F

Definition at line 228 of file ntsam.h.

◆ USER_ALL_READ_LOGON_MASK

#define USER_ALL_READ_LOGON_MASK   0x0003FFC0

Definition at line 229 of file ntsam.h.

◆ USER_ALL_READ_PREFERENCES_MASK

#define USER_ALL_READ_PREFERENCES_MASK   0x00C00000

Definition at line 231 of file ntsam.h.

◆ USER_ALL_READ_TRUSTED_MASK

#define USER_ALL_READ_TRUSTED_MASK   0x1F000000

Definition at line 232 of file ntsam.h.

◆ USER_ALL_SCRIPTPATH

#define USER_ALL_SCRIPTPATH   0x00000100

Definition at line 204 of file ntsam.h.

◆ USER_ALL_SECURITYDESCRIPTOR

#define USER_ALL_SECURITYDESCRIPTOR   0x10000000

Definition at line 224 of file ntsam.h.

◆ USER_ALL_UNDEFINED_MASK

#define USER_ALL_UNDEFINED_MASK   0xC0000000

Definition at line 226 of file ntsam.h.

◆ USER_ALL_USERACCOUNTCONTROL

#define USER_ALL_USERACCOUNTCONTROL   0x00100000

Definition at line 216 of file ntsam.h.

◆ USER_ALL_USERCOMMENT

#define USER_ALL_USERCOMMENT   0x00000020

Definition at line 201 of file ntsam.h.

◆ USER_ALL_USERID

#define USER_ALL_USERID   0x00000004

Definition at line 198 of file ntsam.h.

◆ USER_ALL_USERNAME

#define USER_ALL_USERNAME   0x00000001

Definition at line 196 of file ntsam.h.

◆ USER_ALL_WORKSTATIONS

#define USER_ALL_WORKSTATIONS   0x00000400

Definition at line 206 of file ntsam.h.

◆ USER_ALL_WRITE_ACCOUNT_MASK

#define USER_ALL_WRITE_ACCOUNT_MASK   0x003827DB

Definition at line 235 of file ntsam.h.

◆ USER_ALL_WRITE_CANT_MASK

#define USER_ALL_WRITE_CANT_MASK   0xC0030004

Definition at line 239 of file ntsam.h.

◆ USER_ALL_WRITE_FORCE_PASSWORD_CHANGE_MASK

#define USER_ALL_WRITE_FORCE_PASSWORD_CHANGE_MASK   0x0B000000

Definition at line 237 of file ntsam.h.

◆ USER_ALL_WRITE_PREFERENCES_MASK

#define USER_ALL_WRITE_PREFERENCES_MASK   0x00C00020

Definition at line 236 of file ntsam.h.

◆ USER_ALL_WRITE_TRUSTED_MASK

#define USER_ALL_WRITE_TRUSTED_MASK   0x1404D800

Definition at line 238 of file ntsam.h.

◆ USER_CHANGE_PASSWORD

#define USER_CHANGE_PASSWORD   0x00000040

Definition at line 132 of file ntsam.h.

◆ USER_DONT_EXPIRE_PASSWORD

#define USER_DONT_EXPIRE_PASSWORD   0x00000200

Definition at line 176 of file ntsam.h.

◆ USER_DONT_REQUIRE_PREAUTH

#define USER_DONT_REQUIRE_PREAUTH   0x00010000

Definition at line 183 of file ntsam.h.

◆ USER_ENCRYPTED_TEXT_PASSWORD_ALLOWED

#define USER_ENCRYPTED_TEXT_PASSWORD_ALLOWED   0x00000800

Definition at line 178 of file ntsam.h.

◆ USER_EXECUTE

#define USER_EXECUTE
Value:

Definition at line 149 of file ntsam.h.

◆ USER_FORCE_PASSWORD_CHANGE

#define USER_FORCE_PASSWORD_CHANGE   0x00000080

Definition at line 133 of file ntsam.h.

◆ USER_HOME_DIRECTORY_REQUIRED

#define USER_HOME_DIRECTORY_REQUIRED   0x00000002

Definition at line 168 of file ntsam.h.

◆ USER_INTERDOMAIN_TRUST_ACCOUNT

#define USER_INTERDOMAIN_TRUST_ACCOUNT   0x00000040

Definition at line 173 of file ntsam.h.

◆ USER_LIST_GROUPS

#define USER_LIST_GROUPS   0x00000100

Definition at line 134 of file ntsam.h.

◆ USER_MNS_LOGON_ACCOUNT

#define USER_MNS_LOGON_ACCOUNT   0x00000020

Definition at line 172 of file ntsam.h.

◆ USER_NO_AUTH_DATA_REQUIRED

#define USER_NO_AUTH_DATA_REQUIRED   0x00080000

Definition at line 186 of file ntsam.h.

◆ USER_NORMAL_ACCOUNT

#define USER_NORMAL_ACCOUNT   0x00000010

Definition at line 171 of file ntsam.h.

◆ USER_NOT_DELEGATED

#define USER_NOT_DELEGATED   0x00004000

Definition at line 181 of file ntsam.h.

◆ USER_PARTIAL_SECRETS_ACCOUNT

#define USER_PARTIAL_SECRETS_ACCOUNT   0x00100000

Definition at line 187 of file ntsam.h.

◆ USER_PASSWORD_EXPIRED

#define USER_PASSWORD_EXPIRED   0x00020000

Definition at line 184 of file ntsam.h.

◆ USER_PASSWORD_NOT_REQUIRED

#define USER_PASSWORD_NOT_REQUIRED   0x00000004

Definition at line 169 of file ntsam.h.

◆ USER_READ

◆ USER_READ_ACCOUNT

#define USER_READ_ACCOUNT   0x00000010

Definition at line 130 of file ntsam.h.

◆ USER_READ_GENERAL

#define USER_READ_GENERAL   0x00000001

Definition at line 126 of file ntsam.h.

◆ USER_READ_GROUP_INFORMATION

#define USER_READ_GROUP_INFORMATION   0x00000200

Definition at line 135 of file ntsam.h.

◆ USER_READ_LOGON

#define USER_READ_LOGON   0x00000008

Definition at line 129 of file ntsam.h.

◆ USER_READ_PREFERENCES

#define USER_READ_PREFERENCES   0x00000002

Definition at line 127 of file ntsam.h.

◆ USER_SERVER_TRUST_ACCOUNT

#define USER_SERVER_TRUST_ACCOUNT   0x00000100

Definition at line 175 of file ntsam.h.

◆ USER_SMARTCARD_REQUIRED

#define USER_SMARTCARD_REQUIRED   0x00001000

Definition at line 179 of file ntsam.h.

◆ USER_TEMP_DUPLICATE_ACCOUNT

#define USER_TEMP_DUPLICATE_ACCOUNT   0x00000008

Definition at line 170 of file ntsam.h.

◆ USER_TRUSTED_FOR_DELEGATION

#define USER_TRUSTED_FOR_DELEGATION   0x00002000

Definition at line 180 of file ntsam.h.

◆ USER_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION

#define USER_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION   0x00040000

Definition at line 185 of file ntsam.h.

◆ USER_USE_AES_KEYS

#define USER_USE_AES_KEYS   0x00200000

Definition at line 188 of file ntsam.h.

◆ USER_USE_DES_KEY_ONLY

#define USER_USE_DES_KEY_ONLY   0x00008000

Definition at line 182 of file ntsam.h.

◆ USER_WORKSTATION_TRUST_ACCOUNT

#define USER_WORKSTATION_TRUST_ACCOUNT   0x00000080

Definition at line 174 of file ntsam.h.

◆ USER_WRITE

#define USER_WRITE
Value:

Definition at line 145 of file ntsam.h.

◆ USER_WRITE_ACCOUNT

#define USER_WRITE_ACCOUNT   0x00000020

Definition at line 131 of file ntsam.h.

◆ USER_WRITE_GROUP_INFORMATION

#define USER_WRITE_GROUP_INFORMATION   0x00000400

Definition at line 136 of file ntsam.h.

◆ USER_WRITE_PREFERENCES

#define USER_WRITE_PREFERENCES   0x00000004

Definition at line 128 of file ntsam.h.

Typedef Documentation

◆ ALIAS_ADM_COMMENT_INFORMATION

◆ ALIAS_GENERAL_INFORMATION

◆ ALIAS_INFORMATION_CLASS

◆ ALIAS_NAME_INFORMATION

◆ DOMAIN_DISPLAY_GROUP

◆ DOMAIN_DISPLAY_INFORMATION

◆ DOMAIN_DISPLAY_MACHINE

◆ DOMAIN_DISPLAY_USER

◆ DOMAIN_GENERAL_INFORMATION

◆ DOMAIN_GENERAL_INFORMATION2

◆ DOMAIN_INFORMATION_CLASS

◆ DOMAIN_LOCKOUT_INFORMATION

◆ DOMAIN_LOGOFF_INFORMATION

◆ DOMAIN_MODIFIED_INFORMATION

◆ DOMAIN_MODIFIED_INFORMATION2

◆ DOMAIN_NAME_INFORMATION

◆ DOMAIN_OEM_INFORMATION

◆ DOMAIN_PASSWORD_INFORMATION

◆ DOMAIN_REPLICATION_INFORMATION

◆ DOMAIN_SERVER_ENABLE_STATE

◆ DOMAIN_SERVER_ROLE

◆ DOMAIN_SERVER_ROLE_INFORMATION

◆ DOMAIN_STATE_INFORMATION

◆ DOMAIN_UAS_INFORMATION

◆ GROUP_ADM_COMMENT_INFORMATION

◆ GROUP_ATTRIBUTE_INFORMATION

◆ GROUP_GENERAL_INFORMATION

◆ GROUP_INFORMATION_CLASS

◆ GROUP_MEMBERSHIP

◆ GROUP_NAME_INFORMATION

◆ LOGON_HOURS

◆ PALIAS_ADM_COMMENT_INFORMATION

◆ PALIAS_GENERAL_INFORMATION

◆ PALIAS_INFORMATION_CLASS

◆ PALIAS_NAME_INFORMATION

◆ PDOMAIN_DISPLAY_GROUP

◆ PDOMAIN_DISPLAY_INFORMATION

◆ PDOMAIN_DISPLAY_MACHINE

◆ PDOMAIN_DISPLAY_USER

◆ PDOMAIN_GENERAL_INFORMATION

◆ PDOMAIN_GENERAL_INFORMATION2

◆ PDOMAIN_LOCKOUT_INFORMATION

◆ PDOMAIN_LOGOFF_INFORMATION

◆ PDOMAIN_MODIFIED_INFORMATION

◆ PDOMAIN_MODIFIED_INFORMATION2

◆ PDOMAIN_NAME_INFORMATION

◆ PDOMAIN_OEM_INFORMATION

◆ PDOMAIN_PASSWORD_INFORMATION

◆ PDOMAIN_REPLICATION_INFORMATION

◆ PDOMAIN_SERVER_ENABLE_STATE

◆ PDOMAIN_SERVER_ROLE

◆ PDOMAIN_SERVER_ROLE_INFORMATION

◆ PDOMAIN_STATE_INFORMATION

◆ PGROUP_ADM_COMMENT_INFORMATION

◆ PGROUP_ATTRIBUTE_INFORMATION

◆ PGROUP_GENERAL_INFORMATION

◆ PGROUP_MEMBERSHIP

◆ PGROUP_NAME_INFORMATION

◆ PLOGON_HOURS

◆ PSAM_ENUMERATE_HANDLE

Definition at line 263 of file ntsam.h.

◆ PSAM_HANDLE

typedef PVOID * PSAM_HANDLE

Definition at line 262 of file ntsam.h.

◆ PSAM_RID_ENUMERATION

◆ PSAM_SID_ENUMERATION

◆ PSR_SECURITY_DESCRIPTOR

◆ PUSER_ACCOUNT_INFORMATION

◆ PUSER_ACCOUNT_NAME_INFORMATION

◆ PUSER_ADMIN_COMMENT_INFORMATION

◆ PUSER_ALL_INFORMATION

◆ PUSER_CONTROL_INFORMATION

◆ PUSER_EXPIRES_INFORMATION

◆ PUSER_FULL_NAME_INFORMATION

◆ PUSER_GENERAL_INFORMATION

◆ PUSER_HOME_INFORMATION

◆ PUSER_INFORMATION_CLASS

◆ PUSER_LOGON_HOURS_INFORMATION

◆ PUSER_LOGON_INFORMATION

◆ PUSER_NAME_INFORMATION

◆ PUSER_PARAMETERS_INFORMATION

◆ PUSER_PREFERENCES_INFORMATION

◆ PUSER_PRIMARY_GROUP_INFORMATION

◆ PUSER_PROFILE_INFORMATION

◆ PUSER_PWD_CHANGE_FAILURE_INFORMATION

◆ PUSER_SCRIPT_INFORMATION

◆ PUSER_SET_PASSWORD_INFORMATION

◆ PUSER_WORKSTATIONS_INFORMATION

◆ SAM_ENUMERATE_HANDLE

Definition at line 263 of file ntsam.h.

◆ SAM_HANDLE

typedef PVOID SAM_HANDLE

Definition at line 262 of file ntsam.h.

◆ SAM_RID_ENUMERATION

◆ SAM_SID_ENUMERATION

◆ SR_SECURITY_DESCRIPTOR

◆ USER_ACCOUNT_INFORMATION

◆ USER_ACCOUNT_NAME_INFORMATION

◆ USER_ADMIN_COMMENT_INFORMATION

◆ USER_ALL_INFORMATION

◆ USER_CONTROL_INFORMATION

◆ USER_EXPIRES_INFORMATION

◆ USER_FULL_NAME_INFORMATION

◆ USER_GENERAL_INFORMATION

◆ USER_HOME_INFORMATION

◆ USER_INFORMATION_CLASS

◆ USER_LOGON_HOURS_INFORMATION

◆ USER_LOGON_INFORMATION

◆ USER_NAME_INFORMATION

◆ USER_PARAMETERS_INFORMATION

◆ USER_PREFERENCES_INFORMATION

◆ USER_PRIMARY_GROUP_INFORMATION

◆ USER_PROFILE_INFORMATION

◆ USER_PWD_CHANGE_FAILURE_INFORMATION

◆ USER_SCRIPT_INFORMATION

◆ USER_SET_PASSWORD_INFORMATION

◆ USER_WORKSTATIONS_INFORMATION

Enumeration Type Documentation

◆ _ALIAS_INFORMATION_CLASS

Enumerator
AliasGeneralInformation 
AliasNameInformation 
AliasAdminCommentInformation 
AliasGeneralInformation 
AliasNameInformation 
AliasAdminCommentInformation 

Definition at line 277 of file ntsam.h.

278{
@ AliasGeneralInformation
Definition: ntsam.h:279
@ AliasAdminCommentInformation
Definition: ntsam.h:281
@ AliasNameInformation
Definition: ntsam.h:280
enum _ALIAS_INFORMATION_CLASS * PALIAS_INFORMATION_CLASS
enum _ALIAS_INFORMATION_CLASS ALIAS_INFORMATION_CLASS

◆ _DOMAIN_DISPLAY_INFORMATION

Enumerator
DomainDisplayUser 
DomainDisplayMachine 
DomainDisplayGroup 
DomainDisplayOemUser 
DomainDisplayOemGroup 
DomainDisplayServer 
DomainDisplayUser 
DomainDisplayMachine 
DomainDisplayGroup 
DomainDisplayOemUser 
DomainDisplayOemGroup 
DomainDisplayServer 

Definition at line 301 of file ntsam.h.

302{
enum _DOMAIN_DISPLAY_INFORMATION DOMAIN_DISPLAY_INFORMATION
@ DomainDisplayUser
Definition: ntsam.h:303
@ DomainDisplayMachine
Definition: ntsam.h:304
@ DomainDisplayGroup
Definition: ntsam.h:305
@ DomainDisplayServer
Definition: ntsam.h:308
@ DomainDisplayOemUser
Definition: ntsam.h:306
@ DomainDisplayOemGroup
Definition: ntsam.h:307
enum _DOMAIN_DISPLAY_INFORMATION * PDOMAIN_DISPLAY_INFORMATION

◆ _DOMAIN_INFORMATION_CLASS

Enumerator
DomainPasswordInformation 
DomainGeneralInformation 
DomainLogoffInformation 
DomainOemInformation 
DomainNameInformation 
DomainReplicationInformation 
DomainServerRoleInformation 
DomainModifiedInformation 
DomainStateInformation 
DomainUasInformation 
DomainGeneralInformation2 
DomainLockoutInformation 
DomainModifiedInformation2 
DomainPasswordInformation 
DomainGeneralInformation 
DomainLogoffInformation 
DomainOemInformation 
DomainNameInformation 
DomainReplicationInformation 
DomainServerRoleInformation 
DomainModifiedInformation 
DomainStateInformation 
DomainGeneralInformation2 
DomainLockoutInformation 
DomainModifiedInformation2 

Definition at line 339 of file ntsam.h.

340{
@ DomainLogoffInformation
Definition: ntsam.h:343
@ DomainReplicationInformation
Definition: ntsam.h:346
@ DomainOemInformation
Definition: ntsam.h:344
@ DomainNameInformation
Definition: ntsam.h:345
@ DomainServerRoleInformation
Definition: ntsam.h:347
@ DomainUasInformation
Definition: ntsam.h:350
@ DomainPasswordInformation
Definition: ntsam.h:341
@ DomainLockoutInformation
Definition: ntsam.h:352
@ DomainModifiedInformation2
Definition: ntsam.h:353
@ DomainGeneralInformation
Definition: ntsam.h:342
@ DomainGeneralInformation2
Definition: ntsam.h:351
@ DomainStateInformation
Definition: ntsam.h:349
@ DomainModifiedInformation
Definition: ntsam.h:348
enum _DOMAIN_INFORMATION_CLASS DOMAIN_INFORMATION_CLASS

◆ _DOMAIN_SERVER_ENABLE_STATE

Enumerator
DomainServerEnabled 
DomainServerDisabled 
DomainServerEnabled 
DomainServerDisabled 

Definition at line 356 of file ntsam.h.

357{
@ DomainServerEnabled
Definition: ntsam.h:358
@ DomainServerDisabled
Definition: ntsam.h:359
enum _DOMAIN_SERVER_ENABLE_STATE DOMAIN_SERVER_ENABLE_STATE
enum _DOMAIN_SERVER_ENABLE_STATE * PDOMAIN_SERVER_ENABLE_STATE

◆ _DOMAIN_SERVER_ROLE

Enumerator
DomainServerRoleBackup 
DomainServerRolePrimary 
DomainServerRoleBackup 
DomainServerRolePrimary 

Definition at line 362 of file ntsam.h.

363{
enum _DOMAIN_SERVER_ROLE DOMAIN_SERVER_ROLE
enum _DOMAIN_SERVER_ROLE * PDOMAIN_SERVER_ROLE
@ DomainServerRolePrimary
Definition: ntsam.h:365
@ DomainServerRoleBackup
Definition: ntsam.h:364

◆ _GROUP_INFORMATION_CLASS

Enumerator
GroupGeneralInformation 
GroupNameInformation 
GroupAttributeInformation 
GroupAdminCommentInformation 
GroupReplicationInformation 
GroupGeneralInformation 
GroupNameInformation 
GroupAttributeInformation 
GroupAdminCommentInformation 
GroupReplicationInformation 

Definition at line 462 of file ntsam.h.

463{
enum _GROUP_INFORMATION_CLASS GROUP_INFORMATION_CLASS
@ GroupAttributeInformation
Definition: ntsam.h:466
@ GroupGeneralInformation
Definition: ntsam.h:464
@ GroupReplicationInformation
Definition: ntsam.h:468
@ GroupNameInformation
Definition: ntsam.h:465
@ GroupAdminCommentInformation
Definition: ntsam.h:467

◆ _USER_INFORMATION_CLASS

Enumerator
UserGeneralInformation 
UserPreferencesInformation 
UserLogonInformation 
UserLogonHoursInformation 
UserAccountInformation 
UserNameInformation 
UserAccountNameInformation 
UserFullNameInformation 
UserPrimaryGroupInformation 
UserHomeInformation 
UserScriptInformation 
UserProfileInformation 
UserAdminCommentInformation 
UserWorkStationsInformation 
UserSetPasswordInformation 
UserControlInformation 
UserExpiresInformation 
UserInternal1Information 
UserInternal2Information 
UserParametersInformation 
UserAllInformation 
UserInternal3Information 
UserInternal4Information 
UserInternal5Information 
UserInternal4InformationNew 
UserInternal5InformationNew 
UserInternal6Information 
UserExtendedInformation 
UserLogonUIInformation 
UserGeneralInformation 
UserPreferencesInformation 
UserLogonInformation 
UserLogonHoursInformation 
UserAccountInformation 
UserNameInformation 
UserAccountNameInformation 
UserFullNameInformation 
UserPrimaryGroupInformation 
UserHomeInformation 
UserScriptInformation 
UserProfileInformation 
UserAdminCommentInformation 
UserWorkStationsInformation 
UserSetPasswordInformation 
UserControlInformation 
UserExpiresInformation 
UserInternal1Information 
UserInternal2Information 
UserParametersInformation 
UserAllInformation 
UserInternal3Information 
UserInternal4Information 
UserInternal5Information 
UserInternal4InformationNew 
UserInternal5InformationNew 
UserInternal6Information 
UserExtendedInformation 
UserLogonUIInformation 

Definition at line 512 of file ntsam.h.

513{
enum _USER_INFORMATION_CLASS * PUSER_INFORMATION_CLASS
@ UserInternal3Information
Definition: ntsam.h:535
@ UserScriptInformation
Definition: ntsam.h:524
@ UserAccountNameInformation
Definition: ntsam.h:520
@ UserExtendedInformation
Definition: ntsam.h:541
@ UserPrimaryGroupInformation
Definition: ntsam.h:522
@ UserAccountInformation
Definition: ntsam.h:518
@ UserInternal1Information
Definition: ntsam.h:531
@ UserInternal6Information
Definition: ntsam.h:540
@ UserParametersInformation
Definition: ntsam.h:533
@ UserWorkStationsInformation
Definition: ntsam.h:527
@ UserInternal5InformationNew
Definition: ntsam.h:539
@ UserNameInformation
Definition: ntsam.h:519
@ UserLogonHoursInformation
Definition: ntsam.h:517
@ UserInternal4Information
Definition: ntsam.h:536
@ UserLogonInformation
Definition: ntsam.h:516
@ UserSetPasswordInformation
Definition: ntsam.h:528
@ UserGeneralInformation
Definition: ntsam.h:514
@ UserFullNameInformation
Definition: ntsam.h:521
@ UserInternal2Information
Definition: ntsam.h:532
@ UserInternal4InformationNew
Definition: ntsam.h:538
@ UserControlInformation
Definition: ntsam.h:529
@ UserAdminCommentInformation
Definition: ntsam.h:526
@ UserProfileInformation
Definition: ntsam.h:525
@ UserLogonUIInformation
Definition: ntsam.h:542
@ UserAllInformation
Definition: ntsam.h:534
@ UserExpiresInformation
Definition: ntsam.h:530
@ UserInternal5Information
Definition: ntsam.h:537
@ UserPreferencesInformation
Definition: ntsam.h:515
@ UserHomeInformation
Definition: ntsam.h:523
enum _USER_INFORMATION_CLASS USER_INFORMATION_CLASS

Function Documentation

◆ SamAddMemberToAlias()

NTSTATUS NTAPI SamAddMemberToAlias ( IN SAM_HANDLE  AliasHandle,
IN PSID  MemberId 
)

Definition at line 235 of file samlib.c.

237{
239
240 TRACE("SamAddMemberToAlias(%p %p)\n",
241 AliasHandle, MemberId);
242
244 {
246 (PRPC_SID)MemberId);
247 }
249 {
251 }
253
254 return Status;
255}
LONG NTSTATUS
Definition: precomp.h:26
Status
Definition: gdiplustypes.h:25
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
Definition: rpcrt4_main.c:740
NTSTATUS NTAPI SamrAddMemberToAlias(IN SAMPR_HANDLE AliasHandle, IN PRPC_SID MemberId)
Definition: samrpc.c:5280
#define RpcEndExcept
Definition: rpc.h:128
#define RpcTryExcept
Definition: rpc.h:126
#define RpcExcept(expr)
Definition: rpc.h:127
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4

Referenced by NetLocalGroupAddMembers().

◆ SamAddMemberToGroup()

NTSTATUS NTAPI SamAddMemberToGroup ( IN SAM_HANDLE  GroupHandle,
IN ULONG  MemberId,
IN ULONG  Attributes 
)

Definition at line 260 of file samlib.c.

263{
265
266 TRACE("SamAddMemberToGroup(%p %lu %lx)\n",
267 GroupHandle, MemberId, Attributes);
268
270 {
272 MemberId,
273 Attributes);
274 }
276 {
278 }
280
281 return Status;
282}
NTSTATUS NTAPI SamrAddMemberToGroup(IN SAMPR_HANDLE GroupHandle, IN unsigned long MemberId, IN unsigned long Attributes)
Definition: samrpc.c:4470
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes

Referenced by NetGroupAddUser(), and NetGroupSetUsers().

◆ SamAddMultipleMembersToAlias()

NTSTATUS NTAPI SamAddMultipleMembersToAlias ( IN SAM_HANDLE  AliasHandle,
IN PSID MemberIds,
IN ULONG  MemberCount 
)

Definition at line 287 of file samlib.c.

290{
293
294 TRACE("SamAddMultipleMembersToAlias(%p %p %lu)\n",
295 AliasHandle, MemberIds, MemberCount);
296
297 if (MemberIds == NULL)
299
300 Buffer.Count = MemberCount;
301 Buffer.Sids = (PSAMPR_SID_INFORMATION)MemberIds;
302
304 {
306 &Buffer);
307 }
309 {
311 }
313
314 return Status;
315}
struct _SAMPR_SID_INFORMATION * PSAMPR_SID_INFORMATION
Definition: bufpool.h:45
#define NULL
Definition: types.h:112
#define STATUS_INVALID_PARAMETER_2
Definition: ntstatus.h:476
NTSTATUS NTAPI SamrAddMultipleMembersToAlias(IN SAMPR_HANDLE AliasHandle, IN PSAMPR_PSID_ARRAY MembersBuffer)
Definition: samrpc.c:9292

◆ SamChangePasswordUser()

NTSTATUS NTAPI SamChangePasswordUser ( IN SAM_HANDLE  UserHandle,
IN PUNICODE_STRING  OldPassword,
IN PUNICODE_STRING  NewPassword 
)

Definition at line 320 of file samlib.c.

323{
324 NT_OWF_PASSWORD OldNtPassword;
325 NT_OWF_PASSWORD NewNtPassword;
326 LM_OWF_PASSWORD OldLmPassword;
327 LM_OWF_PASSWORD NewLmPassword;
328 OEM_STRING LmPwdString;
329 CHAR LmPwdBuffer[15];
330 BOOLEAN OldLmPasswordPresent = FALSE;
331 BOOLEAN NewLmPasswordPresent = FALSE;
333
334 ENCRYPTED_LM_OWF_PASSWORD OldLmEncryptedWithNewLm;
335 ENCRYPTED_LM_OWF_PASSWORD NewLmEncryptedWithOldLm;
336 ENCRYPTED_NT_OWF_PASSWORD OldNtEncryptedWithNewNt;
337 ENCRYPTED_NT_OWF_PASSWORD NewNtEncryptedWithOldNt;
338 PENCRYPTED_LM_OWF_PASSWORD pOldLmEncryptedWithNewLm = NULL;
339 PENCRYPTED_LM_OWF_PASSWORD pNewLmEncryptedWithOldLm = NULL;
340
341 /* Calculate the NT hash for the old password */
342 Status = SystemFunction007(OldPassword,
343 (LPBYTE)&OldNtPassword);
344 if (!NT_SUCCESS(Status))
345 {
346 TRACE("SystemFunction007 failed (Status 0x%08lx)\n", Status);
347 return Status;
348 }
349
350 /* Calculate the NT hash for the new password */
351 Status = SystemFunction007(NewPassword,
352 (LPBYTE)&NewNtPassword);
353 if (!NT_SUCCESS(Status))
354 {
355 TRACE("SystemFunction007 failed (Status 0x%08lx)\n", Status);
356 return Status;
357 }
358
359 /* Calculate the LM password and hash for the old password */
360 LmPwdString.Length = 15;
361 LmPwdString.MaximumLength = 15;
362 LmPwdString.Buffer = LmPwdBuffer;
363 ZeroMemory(LmPwdString.Buffer, LmPwdString.MaximumLength);
364
366 OldPassword,
367 FALSE);
368 if (NT_SUCCESS(Status))
369 {
370 /* Calculate the LM hash value of the password */
371 Status = SystemFunction006(LmPwdString.Buffer,
372 (LPSTR)&OldLmPassword);
373 if (NT_SUCCESS(Status))
374 {
375 OldLmPasswordPresent = TRUE;
376 }
377 }
378
379 /* Calculate the LM password and hash for the new password */
380 LmPwdString.Length = 15;
381 LmPwdString.MaximumLength = 15;
382 LmPwdString.Buffer = LmPwdBuffer;
383 ZeroMemory(LmPwdString.Buffer, LmPwdString.MaximumLength);
384
386 NewPassword,
387 FALSE);
388 if (NT_SUCCESS(Status))
389 {
390 /* Calculate the LM hash value of the password */
391 Status = SystemFunction006(LmPwdString.Buffer,
392 (LPSTR)&NewLmPassword);
393 if (NT_SUCCESS(Status))
394 {
395 NewLmPasswordPresent = TRUE;
396 }
397 }
398
399 if (OldLmPasswordPresent && NewLmPasswordPresent)
400 {
401 /* Encrypt the old LM hash with the new LM hash */
402 Status = SystemFunction012((const BYTE *)&OldLmPassword,
403 (const BYTE *)&NewLmPassword,
404 (LPBYTE)&OldLmEncryptedWithNewLm);
405 if (!NT_SUCCESS(Status))
406 {
407 TRACE("SystemFunction012 failed (Status 0x%08lx)\n", Status);
408 return Status;
409 }
410
411 /* Encrypt the new LM hash with the old LM hash */
412 Status = SystemFunction012((const BYTE *)&NewLmPassword,
413 (const BYTE *)&OldLmPassword,
414 (LPBYTE)&NewLmEncryptedWithOldLm);
415 if (!NT_SUCCESS(Status))
416 {
417 TRACE("SystemFunction012 failed (Status 0x%08lx)\n", Status);
418 return Status;
419 }
420
421 pOldLmEncryptedWithNewLm = &OldLmEncryptedWithNewLm;
422 pNewLmEncryptedWithOldLm = &NewLmEncryptedWithOldLm;
423 }
424
425 /* Encrypt the old NT hash with the new NT hash */
426 Status = SystemFunction012((const BYTE *)&OldNtPassword,
427 (const BYTE *)&NewNtPassword,
428 (LPBYTE)&OldNtEncryptedWithNewNt);
429 if (!NT_SUCCESS(Status))
430 {
431 TRACE("SystemFunction012 failed (Status 0x%08lx)\n", Status);
432 return Status;
433 }
434
435 /* Encrypt the new NT hash with the old NT hash */
436 Status = SystemFunction012((const BYTE *)&NewNtPassword,
437 (const BYTE *)&OldNtPassword,
438 (LPBYTE)&NewNtEncryptedWithOldNt);
439 if (!NT_SUCCESS(Status))
440 {
441 TRACE("SystemFunction012 failed (Status 0x%08lx)\n", Status);
442 return Status;
443 }
444
446 {
448 OldLmPasswordPresent && NewLmPasswordPresent,
449 pOldLmEncryptedWithNewLm,
450 pNewLmEncryptedWithOldLm,
451 TRUE,
452 &OldNtEncryptedWithNewNt,
453 &NewNtEncryptedWithOldNt,
454 FALSE,
455 NULL,
456 FALSE,
457 NULL);
458 }
460 {
462 }
464
465 return Status;
466}
unsigned char BOOLEAN
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
NTSTATUS NTAPI SamrChangePasswordUser(IN SAMPR_HANDLE UserHandle, IN unsigned char LmPresent, IN PENCRYPTED_LM_OWF_PASSWORD OldLmEncryptedWithNewLm, IN PENCRYPTED_LM_OWF_PASSWORD NewLmEncryptedWithOldLm, IN unsigned char NtPresent, IN PENCRYPTED_NT_OWF_PASSWORD OldNtEncryptedWithNewNt, IN PENCRYPTED_NT_OWF_PASSWORD NewNtEncryptedWithOldNt, IN unsigned char NtCrossEncryptionPresent, IN PENCRYPTED_NT_OWF_PASSWORD NewNtEncryptedWithNewLm, IN unsigned char LmCrossEncryptionPresent, IN PENCRYPTED_LM_OWF_PASSWORD NewLmEncryptedWithNewNt)
Definition: samrpc.c:7864
NTSYSAPI NTSTATUS NTAPI RtlUpcaseUnicodeStringToOemString(POEM_STRING DestinationString, PCUNICODE_STRING SourceString, BOOLEAN AllocateDestinationString)
NTSTATUS WINAPI SystemFunction012(const BYTE *in, const BYTE *key, LPBYTE out)
Definition: sysfunc.c:353
NTSTATUS WINAPI SystemFunction006(LPCSTR password, LPSTR hash)
Definition: crypt_lmhash.c:53
NTSTATUS WINAPI SystemFunction007(PUNICODE_STRING string, LPBYTE hash)
unsigned char * LPBYTE
Definition: typedefs.h:53
STRING OEM_STRING
Definition: umtypes.h:203
#define ZeroMemory
Definition: winbase.h:1712
char * LPSTR
Definition: xmlstorage.h:182
char CHAR
Definition: xmlstorage.h:175
unsigned char BYTE
Definition: xxhash.c:193

◆ SamChangePasswordUser2()

NTSTATUS NTAPI SamChangePasswordUser2 ( IN PUNICODE_STRING  ServerName,
IN PUNICODE_STRING  UserName,
IN PUNICODE_STRING  OldPassword,
IN PUNICODE_STRING  NewPassword 
)

Definition at line 471 of file samlib.c.

475{
478}
#define UNIMPLEMENTED
Definition: debug.h:115
#define STATUS_NOT_IMPLEMENTED
Definition: ntstatus.h:239

◆ SamChangePasswordUser3()

NTSTATUS NTAPI SamChangePasswordUser3 ( IN PUNICODE_STRING  ServerName,
IN PUNICODE_STRING  UserName,
IN PUNICODE_STRING  OldPassword,
IN PUNICODE_STRING  NewPassword,
OUT PDOMAIN_PASSWORD_INFORMATION EffectivePasswordPolicy,
OUT PUSER_PWD_CHANGE_FAILURE_INFORMATION PasswordChangeFailureInfo 
)

Definition at line 483 of file samlib.c.

489{
492}

◆ SamCloseHandle()

◆ SamConnect()

NTSTATUS NTAPI SamConnect ( IN OUT PUNICODE_STRING ServerName  OPTIONAL,
OUT PSAM_HANDLE  ServerHandle,
IN ACCESS_MASK  DesiredAccess,
IN POBJECT_ATTRIBUTES  ObjectAttributes 
)

Definition at line 519 of file samlib.c.

523{
524 PSAMPR_SERVER_NAME pServerName = NULL;
526
527 TRACE("SamConnect(%p %p 0x%08x %p)\n",
528 ServerName, ServerHandle, DesiredAccess, ObjectAttributes);
529
530 if (ServerName != NULL && ServerName->Length > 0 && ServerName->Buffer != NULL)
531 {
532 /* Create a zero-terminated server name */
533 pServerName = midl_user_allocate(ServerName->Length + sizeof(WCHAR));
534 if (pServerName == NULL)
536
537 CopyMemory(pServerName, ServerName->Buffer, ServerName->Length);
538 pServerName[ServerName->Length / sizeof(WCHAR)] = UNICODE_NULL;
539 }
540
542 {
543 Status = SamrConnect(pServerName,
544 (SAMPR_HANDLE *)ServerHandle,
546 }
548 {
550 }
552
553 if (pServerName)
554 midl_user_free(pServerName);
555
556 return Status;
557}
wchar_t * PSAMPR_SERVER_NAME
Definition: authpackage.c:112
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
Definition: conport.c:36
NTSTATUS NTAPI SamrConnect(IN PSAMPR_SERVER_NAME ServerName, OUT SAMPR_HANDLE *ServerHandle, IN ACCESS_MASK DesiredAccess)
Definition: samrpc.c:135
#define UNICODE_NULL
#define midl_user_free
Definition: rpc.h:45
#define midl_user_allocate
Definition: rpc.h:44
#define STATUS_INSUFFICIENT_RESOURCES
Definition: udferr_usr.h:158
_Must_inspect_result_ _In_ WDFDEVICE _In_ ULONG _In_ ACCESS_MASK DesiredAccess
Definition: wdfdevice.h:2658
#define CopyMemory
Definition: winbase.h:1710
__wchar_t WCHAR
Definition: xmlstorage.h:180

Referenced by ApplyAccountSettings(), ApplyLockoutSettings(), ApplyPasswordSettings(), NetGetDisplayInformationIndex(), NetGroupAdd(), NetGroupAddUser(), NetGroupDel(), NetGroupDelUser(), NetGroupEnum(), NetGroupGetInfo(), NetGroupGetUsers(), NetGroupSetInfo(), NetGroupSetUsers(), NetLocalGroupAdd(), NetLocalGroupAddMembers(), NetLocalGroupDel(), NetLocalGroupDelMembers(), NetLocalGroupEnum(), NetLocalGroupGetInfo(), NetLocalGroupGetMembers(), NetLocalGroupSetInfo(), NetQueryDisplayInformation(), NetUserAdd(), NetUserDel(), NetUserEnum(), NetUserGetGroups(), NetUserGetInfo(), NetUserGetLocalGroups(), NetUserModalsGet(), NetUserSetInfo(), SetAccountsDomainSid(), and SetAdministratorPassword().

◆ SamCreateAliasInDomain()

NTSTATUS NTAPI SamCreateAliasInDomain ( IN SAM_HANDLE  DomainHandle,
IN PUNICODE_STRING  AccountName,
IN ACCESS_MASK  DesiredAccess,
OUT PSAM_HANDLE  AliasHandle,
OUT PULONG  RelativeId 
)

Definition at line 562 of file samlib.c.

567{
569
570 TRACE("SamCreateAliasInDomain(%p %p 0x%08x %p %p)\n",
571 DomainHandle, AccountName, DesiredAccess, AliasHandle, RelativeId);
572
573 *AliasHandle = NULL;
574 *RelativeId = 0;
575
577 {
579 (PRPC_UNICODE_STRING)AccountName,
581 (SAMPR_HANDLE *)AliasHandle,
582 RelativeId);
583 }
585 {
587 }
589
590 return Status;
591}
NTSTATUS NTAPI SamrCreateAliasInDomain(IN SAMPR_HANDLE DomainHandle, IN PRPC_UNICODE_STRING AccountName, IN ACCESS_MASK DesiredAccess, OUT SAMPR_HANDLE *AliasHandle, OUT unsigned long *RelativeId)
Definition: samrpc.c:2909

Referenced by NetLocalGroupAdd().

◆ SamCreateGroupInDomain()

NTSTATUS NTAPI SamCreateGroupInDomain ( IN SAM_HANDLE  DomainHandle,
IN PUNICODE_STRING  AccountName,
IN ACCESS_MASK  DesiredAccess,
OUT PSAM_HANDLE  GroupHandle,
OUT PULONG  RelativeId 
)

Definition at line 596 of file samlib.c.

601{
603
604 TRACE("SamCreateGroupInDomain(%p %p 0x%08x %p %p)\n",
605 DomainHandle, AccountName, DesiredAccess, GroupHandle, RelativeId);
606
607 *GroupHandle = NULL;
608 *RelativeId = 0;
609
611 {
613 (PRPC_UNICODE_STRING)AccountName,
615 (SAMPR_HANDLE *)GroupHandle,
616 RelativeId);
617 }
619 {
621 }
623
624 return Status;
625}
NTSTATUS NTAPI SamrCreateGroupInDomain(IN SAMPR_HANDLE DomainHandle, IN PRPC_UNICODE_STRING Name, IN ACCESS_MASK DesiredAccess, OUT SAMPR_HANDLE *GroupHandle, OUT unsigned long *RelativeId)
Definition: samrpc.c:1894

Referenced by NetGroupAdd().

◆ SamCreateUser2InDomain()

NTSTATUS NTAPI SamCreateUser2InDomain ( IN SAM_HANDLE  DomainHandle,
IN PUNICODE_STRING  AccountName,
IN ULONG  AccountType,
IN ACCESS_MASK  DesiredAccess,
OUT PSAM_HANDLE  UserHandle,
OUT PULONG  GrantedAccess,
OUT PULONG  RelativeId 
)

Definition at line 630 of file samlib.c.

637{
639
640 TRACE("SamCreateUser2InDomain(%p %p %lu 0x%08x %p %p %p)\n",
641 DomainHandle, AccountName, AccountType, DesiredAccess,
642 UserHandle, GrantedAccess, RelativeId);
643
644 *UserHandle = NULL;
645 *RelativeId = 0;
646
648 {
650 (PRPC_UNICODE_STRING)AccountName,
651 AccountType,
653 (SAMPR_HANDLE *)UserHandle,
655 RelativeId);
656
657 }
659 {
661 }
663
664 return Status;
665}
NTSTATUS NTAPI SamrCreateUser2InDomain(IN SAMPR_HANDLE DomainHandle, IN PRPC_UNICODE_STRING Name, IN unsigned long AccountType, IN ACCESS_MASK DesiredAccess, OUT SAMPR_HANDLE *UserHandle, OUT unsigned long *GrantedAccess, OUT unsigned long *RelativeId)
Definition: samrpc.c:8825
_In_ PSECURITY_SUBJECT_CONTEXT _In_ BOOLEAN _In_ ACCESS_MASK _In_ ACCESS_MASK _Outptr_opt_ PPRIVILEGE_SET _In_ PGENERIC_MAPPING _In_ KPROCESSOR_MODE _Out_ PACCESS_MASK GrantedAccess
Definition: sefuncs.h:20

Referenced by NetUserAdd().

◆ SamCreateUserInDomain()

NTSTATUS NTAPI SamCreateUserInDomain ( IN SAM_HANDLE  DomainHandle,
IN PUNICODE_STRING  AccountName,
IN ACCESS_MASK  DesiredAccess,
OUT PSAM_HANDLE  UserHandle,
OUT PULONG  RelativeId 
)

Definition at line 670 of file samlib.c.

675{
677
678 TRACE("SamCreateUserInDomain(%p %p 0x%08x %p %p)\n",
679 DomainHandle, AccountName, DesiredAccess, UserHandle, RelativeId);
680
681 *UserHandle = NULL;
682 *RelativeId = 0;
683
685 {
687 (PRPC_UNICODE_STRING)AccountName,
689 (SAMPR_HANDLE *)UserHandle,
690 RelativeId);
691 }
693 {
695 }
697
698 return Status;
699}
NTSTATUS NTAPI SamrCreateUserInDomain(IN SAMPR_HANDLE DomainHandle, IN PRPC_UNICODE_STRING Name, IN ACCESS_MASK DesiredAccess, OUT SAMPR_HANDLE *UserHandle, OUT unsigned long *RelativeId)
Definition: samrpc.c:2296

◆ SamDeleteAlias()

NTSTATUS NTAPI SamDeleteAlias ( IN SAM_HANDLE  AliasHandle)

Definition at line 704 of file samlib.c.

705{
706 SAMPR_HANDLE LocalAliasHandle;
708
709 TRACE("SamDeleteAlias(%p)\n", AliasHandle);
710
711 LocalAliasHandle = (SAMPR_HANDLE)AliasHandle;
712
713 if (LocalAliasHandle == NULL)
715
717 {
718 Status = SamrDeleteAlias(&LocalAliasHandle);
719 }
721 {
723 }
725
726 return Status;
727}
void * SAMPR_HANDLE
Definition: authpackage.c:113
#define STATUS_INVALID_HANDLE
Definition: ntstatus.h:245
NTSTATUS NTAPI SamrDeleteAlias(IN OUT SAMPR_HANDLE *AliasHandle)
Definition: samrpc.c:5222

Referenced by NetLocalGroupAdd(), and NetLocalGroupDel().

◆ SamDeleteGroup()

NTSTATUS NTAPI SamDeleteGroup ( IN SAM_HANDLE  GroupHandle)

Definition at line 732 of file samlib.c.

733{
734 SAMPR_HANDLE LocalGroupHandle;
736
737 TRACE("SamDeleteGroup(%p)\n", GroupHandle);
738
739 LocalGroupHandle = (SAMPR_HANDLE)GroupHandle;
740
741 if (LocalGroupHandle == NULL)
743
745 {
746 Status = SamrDeleteGroup(&LocalGroupHandle);
747 }
749 {
751 }
753
754 return Status;
755}
NTSTATUS NTAPI SamrDeleteGroup(IN OUT SAMPR_HANDLE *GroupHandle)
Definition: samrpc.c:4534

Referenced by NetGroupAdd(), and NetGroupDel().

◆ SamDeleteUser()

NTSTATUS NTAPI SamDeleteUser ( IN SAM_HANDLE  UserHandle)

Definition at line 760 of file samlib.c.

761{
762 SAMPR_HANDLE LocalUserHandle;
764
765 TRACE("SamDeleteUser(%p)\n", UserHandle);
766
767 LocalUserHandle = (SAMPR_HANDLE)UserHandle;
768
769 if (LocalUserHandle == NULL)
771
773 {
774 Status = SamrDeleteUser(&LocalUserHandle);
775 }
777 {
779 }
781
782 return Status;
783}
NTSTATUS NTAPI SamrDeleteUser(IN OUT SAMPR_HANDLE *UserHandle)
Definition: samrpc.c:5482

Referenced by NetUserAdd(), and NetUserDel().

◆ SamEnumerateAliasesInDomain()

NTSTATUS NTAPI SamEnumerateAliasesInDomain ( IN SAM_HANDLE  DomainHandle,
IN OUT PSAM_ENUMERATE_HANDLE  EnumerationContext,
OUT PVOID Buffer,
IN ULONG  PreferedMaximumLength,
OUT PULONG  CountReturned 
)

Definition at line 788 of file samlib.c.

793{
794 PSAMPR_ENUMERATION_BUFFER EnumBuffer = NULL;
796
797 TRACE("SamEnumerateAliasesInDomain(%p %p %p %lu %p)\n",
798 DomainHandle, EnumerationContext, Buffer, PreferedMaximumLength,
799 CountReturned);
800
801 if ((EnumerationContext == NULL) ||
802 (Buffer == NULL) ||
803 (CountReturned == NULL))
805
806 *Buffer = NULL;
807
809 {
811 EnumerationContext,
812 &EnumBuffer,
813 PreferedMaximumLength,
814 CountReturned);
815
816 if (EnumBuffer != NULL)
817 {
818 if (EnumBuffer->Buffer != NULL)
819 {
820 *Buffer = EnumBuffer->Buffer;
821 }
822
823 midl_user_free(EnumBuffer);
824 }
825 }
827 {
829 }
831
832 return Status;
833}
NTSTATUS NTAPI SamrEnumerateAliasesInDomain(IN SAMPR_HANDLE DomainHandle, IN OUT unsigned long *EnumerationContext, OUT PSAMPR_ENUMERATION_BUFFER *Buffer, IN unsigned long PreferedMaximumLength, OUT unsigned long *CountReturned)
Definition: samrpc.c:3085
PSAMPR_RID_ENUMERATION Buffer
Definition: sam.idl:96
#define STATUS_INVALID_PARAMETER
Definition: udferr_usr.h:135

Referenced by NetLocalGroupEnum().

◆ SamEnumerateDomainsInSamServer()

NTSTATUS NTAPI SamEnumerateDomainsInSamServer ( IN SAM_HANDLE  ServerHandle,
IN OUT PSAM_ENUMERATE_HANDLE  EnumerationContext,
OUT PVOID Buffer,
IN ULONG  PreferedMaximumLength,
OUT PULONG  CountReturned 
)

Definition at line 838 of file samlib.c.

843{
844 PSAMPR_ENUMERATION_BUFFER EnumBuffer = NULL;
846
847 TRACE("SamEnumerateDomainsInSamServer(%p %p %p %lu %p)\n",
848 ServerHandle, EnumerationContext, Buffer, PreferedMaximumLength,
849 CountReturned);
850
851 if ((EnumerationContext == NULL) ||
852 (Buffer == NULL) ||
853 (CountReturned == NULL))
855
856 *Buffer = NULL;
857
859 {
861 EnumerationContext,
862 &EnumBuffer,
863 PreferedMaximumLength,
864 CountReturned);
865
866 if (EnumBuffer != NULL)
867 {
868 if (EnumBuffer->Buffer != NULL)
869 {
870 *Buffer = EnumBuffer->Buffer;
871 }
872
873 midl_user_free(EnumBuffer);
874 }
875 }
877 {
879 }
881
882 return Status;
883}
NTSTATUS NTAPI SamrEnumerateDomainsInSamServer(IN SAMPR_HANDLE ServerHandle, IN OUT unsigned long *EnumerationContext, OUT PSAMPR_ENUMERATION_BUFFER *Buffer, IN ULONG PreferedMaximumLength, OUT PULONG CountReturned)
Definition: samrpc.c:621

◆ SamEnumerateGroupsInDomain()

NTSTATUS NTAPI SamEnumerateGroupsInDomain ( IN SAM_HANDLE  DomainHandle,
IN OUT PSAM_ENUMERATE_HANDLE  EnumerationContext,
IN PVOID Buffer,
IN ULONG  PreferedMaximumLength,
OUT PULONG  CountReturned 
)

Definition at line 888 of file samlib.c.

893{
894 PSAMPR_ENUMERATION_BUFFER EnumBuffer = NULL;
896
897 TRACE("SamEnumerateGroupsInDomain(%p %p %p %lu %p)\n",
898 DomainHandle, EnumerationContext, Buffer,
899 PreferedMaximumLength, CountReturned);
900
901 if (EnumerationContext == NULL || Buffer == NULL || CountReturned == NULL)
903
904 *Buffer = NULL;
905
907 {
909 EnumerationContext,
910 &EnumBuffer,
911 PreferedMaximumLength,
912 CountReturned);
913 if (EnumBuffer != NULL)
914 {
915 if (EnumBuffer->Buffer != NULL)
916 *Buffer = EnumBuffer->Buffer;
917
918 midl_user_free(EnumBuffer);
919 }
920 }
922 {
924 }
926
927 return Status;
928}
NTSTATUS NTAPI SamrEnumerateGroupsInDomain(IN SAMPR_HANDLE DomainHandle, IN OUT unsigned long *EnumerationContext, OUT PSAMPR_ENUMERATION_BUFFER *Buffer, IN unsigned long PreferedMaximumLength, OUT unsigned long *CountReturned)
Definition: samrpc.c:2088

Referenced by NetGroupEnum().

◆ SamEnumerateUsersInDomain()

NTSTATUS NTAPI SamEnumerateUsersInDomain ( IN SAM_HANDLE  DomainHandle,
IN OUT PSAM_ENUMERATE_HANDLE  EnumerationContext,
IN ULONG  UserAccountControl,
OUT PVOID Buffer,
IN ULONG  PreferedMaximumLength,
OUT PULONG  CountReturned 
)

Definition at line 933 of file samlib.c.

939{
940 PSAMPR_ENUMERATION_BUFFER EnumBuffer = NULL;
942
943 TRACE("SamEnumerateUsersInDomain(%p %p %lx %p %lu %p)\n",
944 DomainHandle, EnumerationContext, UserAccountControl, Buffer,
945 PreferedMaximumLength, CountReturned);
946
947 if (EnumerationContext == NULL || Buffer == NULL || CountReturned == NULL)
949
950 *Buffer = NULL;
951
953 {
955 EnumerationContext,
956 UserAccountControl,
957 &EnumBuffer,
958 PreferedMaximumLength,
959 CountReturned);
960 if (EnumBuffer != NULL)
961 {
962 if (EnumBuffer->Buffer != NULL)
963 {
964 *Buffer = EnumBuffer->Buffer;
965 }
966
967 midl_user_free(EnumBuffer);
968 }
969
970 }
972 {
974 }
976
977 return Status;
978}
NTSTATUS NTAPI SamrEnumerateUsersInDomain(IN SAMPR_HANDLE DomainHandle, IN OUT unsigned long *EnumerationContext, IN unsigned long UserAccountControl, OUT PSAMPR_ENUMERATION_BUFFER *Buffer, IN unsigned long PreferedMaximumLength, OUT unsigned long *CountReturned)
Definition: samrpc.c:2700

Referenced by NetUserEnum().

◆ SamFreeMemory()

◆ SamGetAliasMembership()

NTSTATUS NTAPI SamGetAliasMembership ( IN SAM_HANDLE  DomainHandle,
IN ULONG  PassedCount,
IN PSID Sids,
OUT PULONG  MembershipCount,
OUT PULONG Aliases 
)

Definition at line 994 of file samlib.c.

999{
1000 SAMPR_PSID_ARRAY SidArray;
1001 SAMPR_ULONG_ARRAY Membership;
1003
1004 TRACE("SamAliasMembership(%p %lu %p %p %p)\n",
1005 DomainHandle, PassedCount, Sids, MembershipCount, Aliases);
1006
1007 if (Sids == NULL ||
1008 MembershipCount == NULL ||
1009 Aliases == NULL)
1011
1012 Membership.Element = NULL;
1013
1015 {
1016 SidArray.Count = PassedCount;
1017 SidArray.Sids = (PSAMPR_SID_INFORMATION)Sids;
1018
1020 &SidArray,
1021 &Membership);
1022 if (NT_SUCCESS(Status))
1023 {
1024 *MembershipCount = Membership.Count;
1025 *Aliases = Membership.Element;
1026 }
1027 else
1028 {
1029 if (Membership.Element != NULL)
1030 midl_user_free(Membership.Element);
1031 }
1032 }
1034 {
1036 }
1038
1039 return Status;
1040}
NTSTATUS __stdcall SamrGetAliasMembership(SAMPR_HANDLE DomainHandle, PSAMPR_PSID_ARRAY SidArray, PSAMPR_ULONG_ARRAY Membership)
unsigned long Count
Definition: authpackage.c:122
PSAMPR_SID_INFORMATION Sids
Definition: authpackage.c:123
unsigned long * Element
Definition: lsasrv.h:88
unsigned long Count
Definition: lsasrv.h:87

Referenced by GetUserPrivileges(), and NetUserGetLocalGroups().

◆ SamGetCompatibilityMode()

NTSTATUS NTAPI SamGetCompatibilityMode ( IN SAM_HANDLE  ObjectHandle,
OUT PULONG  Mode 
)

Definition at line 1045 of file samlib.c.

1047{
1048 TRACE("SamGetCompatibilityMode(%p %p)\n", ObjectHandle, Mode);
1049
1050 if (Mode == NULL)
1052
1054
1055 return STATUS_SUCCESS;
1056}
_In_ ULONG Mode
Definition: hubbusif.h:303
#define SAM_SID_COMPATIBILITY_ALL
Definition: ntsam.h:728

◆ SamGetDisplayEnumerationIndex()

NTSTATUS NTAPI SamGetDisplayEnumerationIndex ( IN SAM_HANDLE  DomainHandle,
IN DOMAIN_DISPLAY_INFORMATION  DisplayInformation,
IN PUNICODE_STRING  Prefix,
OUT PULONG  Index 
)

Definition at line 1061 of file samlib.c.

1065{
1067
1068 TRACE("SamGetDisplayEnumerationIndex(%p %lu %wZ %p)\n",
1069 DomainHandle, DisplayInformation, Prefix, Index);
1070
1071 if ((Prefix == NULL) ||
1072 (Index == NULL))
1074
1076 {
1078 DisplayInformation,
1080 Index);
1081 }
1083 {
1085 }
1087
1088 return Status;
1089}
NTSTATUS NTAPI SamrGetDisplayEnumerationIndex2(IN SAMPR_HANDLE DomainHandle, IN DOMAIN_DISPLAY_INFORMATION DisplayInformationClass, IN PRPC_UNICODE_STRING Prefix, OUT unsigned long *Index)
Definition: samrpc.c:8809
_In_ WDFCOLLECTION _In_ ULONG Index
_In_ __drv_aliasesMem PSTRING Prefix
Definition: rtlfuncs.h:1630

Referenced by NetGetDisplayInformationIndex().

◆ SamGetGroupsForUser()

NTSTATUS NTAPI SamGetGroupsForUser ( IN SAM_HANDLE  UserHandle,
OUT PGROUP_MEMBERSHIP Groups,
OUT PULONG  MembershipCount 
)

Definition at line 1094 of file samlib.c.

1097{
1098 PSAMPR_GET_GROUPS_BUFFER GroupsBuffer = NULL;
1100
1101 TRACE("SamGetGroupsForUser(%p %p %p)\n",
1102 UserHandle, Groups, MembershipCount);
1103
1105 {
1107 &GroupsBuffer);
1108 if (NT_SUCCESS(Status))
1109 {
1110 *Groups = GroupsBuffer->Groups;
1111 *MembershipCount = GroupsBuffer->MembershipCount;
1112
1113 MIDL_user_free(GroupsBuffer);
1114 }
1115 else
1116 {
1117 if (GroupsBuffer != NULL)
1118 {
1119 if (GroupsBuffer->Groups != NULL)
1120 MIDL_user_free(GroupsBuffer->Groups);
1121
1122 MIDL_user_free(GroupsBuffer);
1123 }
1124 }
1125 }
1127 {
1129 }
1131
1132 return Status;
1133}
void __RPC_USER MIDL_user_free(void *p)
Definition: irotp.c:376
NTSTATUS NTAPI SamrGetGroupsForUser(IN SAMPR_HANDLE UserHandle, OUT PSAMPR_GET_GROUPS_BUFFER *Groups)
Definition: samrpc.c:8145
unsigned long MembershipCount
Definition: sam.idl:115
PGROUP_MEMBERSHIP Groups
Definition: sam.idl:116

Referenced by GetUserPrivileges(), and NetUserGetGroups().

◆ SamGetMembersInAlias()

NTSTATUS NTAPI SamGetMembersInAlias ( IN SAM_HANDLE  AliasHandle,
OUT PSID **  MemberIds,
OUT PULONG  MemberCount 
)

Definition at line 1138 of file samlib.c.

1141{
1142 SAMPR_PSID_ARRAY_OUT SidArray;
1144
1145 TRACE("SamGetMembersInAlias(%p %p %p)\n",
1146 AliasHandle, MemberIds, MemberCount);
1147
1148 if ((MemberIds == NULL) ||
1149 (MemberCount == NULL))
1151
1152 *MemberIds = NULL;
1153 *MemberCount = 0;
1154
1155 SidArray.Sids = NULL;
1156
1158 {
1160 &SidArray);
1161 if (NT_SUCCESS(Status))
1162 {
1163 *MemberCount = SidArray.Count;
1164 *MemberIds = (PSID *)SidArray.Sids;
1165 }
1166
1167 }
1169 {
1171 }
1173
1174 return Status;
1175}
NTSTATUS NTAPI SamrGetMembersInAlias(IN SAMPR_HANDLE AliasHandle, OUT PSAMPR_PSID_ARRAY_OUT Members)
Definition: samrpc.c:5360
PSAMPR_SID_INFORMATION Sids
Definition: sam.idl:56
unsigned long Count
Definition: sam.idl:55

Referenced by NetLocalGroupGetMembers().

◆ SamGetMembersInGroup()

NTSTATUS NTAPI SamGetMembersInGroup ( IN SAM_HANDLE  GroupHandle,
OUT PULONG MemberIds,
OUT PULONG Attributes,
OUT PULONG  MemberCount 
)

Definition at line 1180 of file samlib.c.

1184{
1185 PSAMPR_GET_MEMBERS_BUFFER MembersBuffer = NULL;
1187
1188 TRACE("SamGetMembersInGroup(%p %p %p %p)\n",
1189 GroupHandle, MemberIds, Attributes, MemberCount);
1190
1192 {
1194 &MembersBuffer);
1195 if (NT_SUCCESS(Status))
1196 {
1197 *MemberIds = MembersBuffer->Members;
1198 *Attributes = MembersBuffer->Attributes;
1199 *MemberCount = MembersBuffer->MemberCount;
1200
1201 MIDL_user_free(MembersBuffer);
1202 }
1203 else
1204 {
1205 if (MembersBuffer != NULL)
1206 {
1207 if (MembersBuffer->Members != NULL)
1208 MIDL_user_free(MembersBuffer->Members);
1209
1210 if (MembersBuffer->Attributes != NULL)
1211 MIDL_user_free(MembersBuffer->Attributes);
1212
1213 MIDL_user_free(MembersBuffer);
1214 }
1215 }
1216 }
1218 {
1220 }
1222
1223 return Status;
1224}
NTSTATUS NTAPI SamrGetMembersInGroup(IN SAMPR_HANDLE GroupHandle, OUT PSAMPR_GET_MEMBERS_BUFFER *Members)
Definition: samrpc.c:4664
unsigned long * Members
Definition: sam.idl:122
unsigned long MemberCount
Definition: sam.idl:121
unsigned long * Attributes
Definition: sam.idl:123

Referenced by NetGroupGetUsers(), and NetGroupSetUsers().

◆ SamLookupDomainInSamServer()

NTSTATUS NTAPI SamLookupDomainInSamServer ( IN SAM_HANDLE  ServerHandle,
IN PUNICODE_STRING  Name,
OUT PSID DomainId 
)

Definition at line 1229 of file samlib.c.

1232{
1234
1235 TRACE("SamLookupDomainInSamServer(%p %p %p)\n",
1236 ServerHandle, Name, DomainId);
1237
1239 {
1242 (PRPC_SID *)DomainId);
1243 }
1245 {
1247 }
1249
1250 return Status;
1251}
NTSTATUS NTAPI SamrLookupDomainInSamServer(IN SAMPR_HANDLE ServerHandle, IN PRPC_UNICODE_STRING Name, OUT PRPC_SID *DomainId)
Definition: samrpc.c:504

◆ SamLookupIdsInDomain()

NTSTATUS NTAPI SamLookupIdsInDomain ( IN SAM_HANDLE  DomainHandle,
IN ULONG  Count,
IN PULONG  RelativeIds,
OUT PUNICODE_STRING Names,
OUT PSID_NAME_USE *Use  OPTIONAL 
)

Definition at line 1256 of file samlib.c.

1261{
1262 SAMPR_RETURNED_USTRING_ARRAY NamesBuffer = {0, NULL};
1263 SAMPR_ULONG_ARRAY UseBuffer = {0, NULL};
1264 ULONG i;
1266
1267 TRACE("SamLookupIdsInDomain(%p %lu %p %p %p)\n",
1268 DomainHandle, Count, RelativeIds, Names, Use);
1269
1270 *Names = NULL;
1271
1272 if (Use != NULL)
1273 *Use = NULL;
1274
1276 {
1278 Count,
1279 RelativeIds,
1280 &NamesBuffer,
1281 &UseBuffer);
1282 }
1284 {
1286 }
1288
1289 if (NT_SUCCESS(Status))
1290 {
1292 if (*Names == NULL)
1293 {
1295 goto done;
1296 }
1297
1298 for (i = 0; i < Count; i++)
1299 {
1300 (*Names)[i].Buffer = midl_user_allocate(NamesBuffer.Element[i].MaximumLength);
1301 if ((*Names)[i].Buffer == NULL)
1302 {
1304 goto done;
1305 }
1306 }
1307
1308 for (i = 0; i < Count; i++)
1309 {
1310 (*Names)[i].Length = NamesBuffer.Element[i].Length;
1311 (*Names)[i].MaximumLength = NamesBuffer.Element[i].MaximumLength;
1312
1314 NamesBuffer.Element[i].Buffer,
1315 NamesBuffer.Element[i].Length);
1316 }
1317
1318 if (Use != NULL)
1319 {
1320 *Use = midl_user_allocate(Count * sizeof(SID_NAME_USE));
1321 if (*Use == NULL)
1322 {
1324 goto done;
1325 }
1326
1327 RtlCopyMemory(*Use,
1328 UseBuffer.Element,
1329 Count * sizeof(SID_NAME_USE));
1330 }
1331 }
1332
1333done:
1334 if (!NT_SUCCESS(Status))
1335 {
1336 if (*Names != NULL)
1337 {
1338 for (i = 0; i < Count; i++)
1339 {
1340 if ((*Names)[i].Buffer != NULL)
1342 }
1343
1345 }
1346
1347 if (Use != NULL && *Use != NULL)
1348 midl_user_free(*Use);
1349 }
1350
1351 if (NamesBuffer.Element != NULL)
1352 {
1353 for (i = 0; i < NamesBuffer.Count; i++)
1354 {
1355 if (NamesBuffer.Element[i].Buffer != NULL)
1356 midl_user_free(NamesBuffer.Element[i].Buffer);
1357 }
1358
1359 midl_user_free(NamesBuffer.Element);
1360 }
1361
1362 if (UseBuffer.Element != NULL)
1363 midl_user_free(UseBuffer.Element);
1364
1365 return 0;
1366}
PWSTR Names[]
NTSTATUS NTAPI SamrLookupIdsInDomain(IN SAMPR_HANDLE DomainHandle, IN ULONG Count, IN ULONG *RelativeIds, OUT PSAMPR_RETURNED_USTRING_ARRAY Names, OUT PSAMPR_ULONG_ARRAY Use)
Definition: samrpc.c:3693
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
enum _SID_NAME_USE SID_NAME_USE
int Count
Definition: noreturn.cpp:7
unsigned short Length
Definition: msv1_0.h:22
unsigned short MaximumLength
Definition: msv1_0.h:23
wchar_t * Buffer
Definition: msv1_0.h:24
PRPC_UNICODE_STRING Element
Definition: lookup.c:22
#define RtlCopyMemory(Destination, Source, Length)
Definition: typedefs.h:263
uint32_t ULONG
Definition: typedefs.h:59

Referenced by NetGroupGetUsers(), and NetUserGetLocalGroups().

◆ SamLookupNamesInDomain()

NTSTATUS NTAPI SamLookupNamesInDomain ( IN SAM_HANDLE  DomainHandle,
IN ULONG  Count,
IN PUNICODE_STRING  Names,
OUT PULONG RelativeIds,
OUT PSID_NAME_USE Use 
)

Definition at line 1371 of file samlib.c.

1376{
1377 SAMPR_ULONG_ARRAY RidBuffer = {0, NULL};
1378 SAMPR_ULONG_ARRAY UseBuffer = {0, NULL};
1380
1381 TRACE("SamLookupNamesInDomain(%p %lu %p %p %p)\n",
1382 DomainHandle, Count, Names, RelativeIds, Use);
1383
1384 *RelativeIds = NULL;
1385 *Use = NULL;
1386
1388 {
1390 Count,
1392 &RidBuffer,
1393 &UseBuffer);
1394 }
1396 {
1398 }
1400
1401 if (NT_SUCCESS(Status))
1402 {
1403 *RelativeIds = midl_user_allocate(Count * sizeof(ULONG));
1404 if (*RelativeIds == NULL)
1405 {
1407 goto done;
1408 }
1409
1410 *Use = midl_user_allocate(Count * sizeof(SID_NAME_USE));
1411 if (*Use == NULL)
1412 {
1414 goto done;
1415 }
1416
1417 RtlCopyMemory(*RelativeIds,
1418 RidBuffer.Element,
1419 Count * sizeof(ULONG));
1420
1421 RtlCopyMemory(*Use,
1422 UseBuffer.Element,
1423 Count * sizeof(SID_NAME_USE));
1424 }
1425
1426done:
1427 if (!NT_SUCCESS(Status))
1428 {
1429 if (*RelativeIds != NULL)
1430 midl_user_free(*RelativeIds);
1431
1432 if (*Use != NULL)
1433 midl_user_free(*Use);
1434 }
1435
1436 if (RidBuffer.Element != NULL)
1437 midl_user_free(RidBuffer.Element);
1438
1439 if (UseBuffer.Element != NULL)
1440 midl_user_free(UseBuffer.Element);
1441
1442 return Status;
1443}
NTSTATUS NTAPI SamrLookupNamesInDomain(IN SAMPR_HANDLE DomainHandle, IN ULONG Count, IN RPC_UNICODE_STRING Names[], OUT PSAMPR_ULONG_ARRAY RelativeIds, OUT PSAMPR_ULONG_ARRAY Use)
Definition: samrpc.c:3464

Referenced by NetGroupAddUser(), NetGroupDelUser(), NetGroupSetUsers(), NetUserGetGroups(), NetUserGetInfo(), NetUserGetLocalGroups(), OpenAliasByName(), OpenGroupByName(), and OpenUserByName().

◆ SamOpenAlias()

NTSTATUS NTAPI SamOpenAlias ( IN SAM_HANDLE  DomainHandle,
IN ACCESS_MASK  DesiredAccess,
IN ULONG  AliasId,
OUT PSAM_HANDLE  AliasHandle 
)

Definition at line 1448 of file samlib.c.

1452{
1454
1455 TRACE("SamOpenAlias(%p 0x%08x %lx %p)\n",
1456 DomainHandle, DesiredAccess, AliasId, AliasHandle);
1457
1459 {
1460 Status = SamrOpenAlias((SAMPR_HANDLE)DomainHandle,
1462 AliasId,
1463 (SAMPR_HANDLE *)AliasHandle);
1464 }
1466 {
1468 }
1470
1471 return Status;
1472}
NTSTATUS NTAPI SamrOpenAlias(IN SAMPR_HANDLE DomainHandle, IN ACCESS_MASK DesiredAccess, IN ULONG AliasId, OUT SAMPR_HANDLE *AliasHandle)
Definition: samrpc.c:4821

Referenced by NetLocalGroupEnum(), and OpenAliasByName().

◆ SamOpenDomain()

NTSTATUS NTAPI SamOpenDomain ( IN SAM_HANDLE  ServerHandle,
IN ACCESS_MASK  DesiredAccess,
IN PSID  DomainId,
OUT PSAM_HANDLE  DomainHandle 
)

Definition at line 1477 of file samlib.c.

1481{
1483
1484 TRACE("SamOpenDomain(%p 0x%08x %p %p)\n",
1485 ServerHandle, DesiredAccess, DomainId, DomainHandle);
1486
1488 {
1489 Status = SamrOpenDomain((SAMPR_HANDLE)ServerHandle,
1491 (PRPC_SID)DomainId,
1492 (SAMPR_HANDLE *)DomainHandle);
1493 }
1495 {
1497 }
1499
1500 return Status;
1501}
NTSTATUS __stdcall SamrOpenDomain(SAMPR_HANDLE ServerHandle, ACCESS_MASK DesiredAccess, PRPC_SID DomainId, SAMPR_HANDLE *DomainHandle)

Referenced by ApplyAccountSettings(), ApplyLockoutSettings(), ApplyPasswordSettings(), NetUserEnum(), NetUserGetGroups(), NetUserGetInfo(), NetUserGetLocalGroups(), NetUserModalsGet(), OpenAccountDomain(), OpenBuiltinDomain(), SetAccountsDomainSid(), and SetAdministratorPassword().

◆ SamOpenGroup()

NTSTATUS NTAPI SamOpenGroup ( IN SAM_HANDLE  DomainHandle,
IN ACCESS_MASK  DesiredAccess,
IN ULONG  GroupId,
OUT PSAM_HANDLE  GroupHandle 
)

Definition at line 1506 of file samlib.c.

1510{
1512
1513 TRACE("SamOpenGroup(%p 0x%08x %p %p)\n",
1514 DomainHandle, DesiredAccess, GroupId, GroupHandle);
1515
1517 {
1518 Status = SamrOpenGroup((SAMPR_HANDLE)DomainHandle,
1520 GroupId,
1521 (SAMPR_HANDLE *)GroupHandle);
1522 }
1524 {
1526 }
1528
1529 return Status;
1530}
NTSTATUS NTAPI SamrOpenGroup(IN SAMPR_HANDLE DomainHandle, IN ACCESS_MASK DesiredAccess, IN unsigned long GroupId, OUT SAMPR_HANDLE *GroupHandle)
Definition: samrpc.c:3978

Referenced by NetGroupEnum(), and OpenGroupByName().

◆ SamOpenUser()

NTSTATUS NTAPI SamOpenUser ( IN SAM_HANDLE  DomainHandle,
IN ACCESS_MASK  DesiredAccess,
IN ULONG  UserId,
OUT PSAM_HANDLE  UserHandle 
)

Definition at line 1535 of file samlib.c.

1539{
1541
1542 TRACE("SamOpenUser(%p 0x%08x %lx %p)\n",
1543 DomainHandle, DesiredAccess, UserId, UserHandle);
1544
1546 {
1547 Status = SamrOpenUser((SAMPR_HANDLE)DomainHandle,
1549 UserId,
1550 (SAMPR_HANDLE *)UserHandle);
1551 }
1553 {
1555 }
1557
1558 return Status;
1559}
NTSTATUS NTAPI SamrOpenUser(IN SAMPR_HANDLE DomainHandle, IN ACCESS_MASK DesiredAccess, IN ULONG UserId, OUT SAMPR_HANDLE *UserHandle)

Referenced by EnableAccount(), NetUserEnum(), NetUserGetGroups(), NetUserGetInfo(), OpenUserByName(), SetAdministratorPassword(), and SetNewAccountName().

◆ SamQueryDisplayInformation()

NTSTATUS NTAPI SamQueryDisplayInformation ( IN SAM_HANDLE  DomainHandle,
IN DOMAIN_DISPLAY_INFORMATION  DisplayInformation,
IN ULONG  Index,
IN ULONG  EntryCount,
IN ULONG  PreferredMaximumLength,
OUT PULONG  TotalAvailable,
OUT PULONG  TotalReturned,
OUT PULONG  ReturnedEntryCount,
OUT PVOID SortedBuffer 
)

Definition at line 1564 of file samlib.c.

1573{
1574 SAMPR_DISPLAY_INFO_BUFFER LocalBuffer;
1576
1577 TRACE("SamQueryDisplayInformation(%p %lu %lu %lu %lu %p %p %p %p)\n",
1578 DomainHandle, DisplayInformation, Index, EntryCount,
1579 PreferredMaximumLength, TotalAvailable, TotalReturned,
1580 ReturnedEntryCount, SortedBuffer);
1581
1582 if ((TotalAvailable == NULL) ||
1583 (TotalReturned == NULL) ||
1584 (ReturnedEntryCount == NULL) ||
1585 (SortedBuffer == NULL))
1587
1589 {
1591 DisplayInformation,
1592 Index,
1593 EntryCount,
1594 PreferredMaximumLength,
1595 TotalAvailable,
1596 TotalReturned,
1597 &LocalBuffer);
1598 if (NT_SUCCESS(Status))
1599 {
1600 switch (DisplayInformation)
1601 {
1602 case DomainDisplayUser:
1603 *ReturnedEntryCount = LocalBuffer.UserInformation.EntriesRead;
1604 *SortedBuffer = LocalBuffer.UserInformation.Buffer;
1605 break;
1606
1608 *ReturnedEntryCount = LocalBuffer.MachineInformation.EntriesRead;
1609 *SortedBuffer = LocalBuffer.MachineInformation.Buffer;
1610 break;
1611
1612 case DomainDisplayGroup:
1613 *ReturnedEntryCount = LocalBuffer.GroupInformation.EntriesRead;
1614 *SortedBuffer = LocalBuffer.GroupInformation.Buffer;
1615 break;
1616
1618 *ReturnedEntryCount = LocalBuffer.OemUserInformation.EntriesRead;
1619 *SortedBuffer = LocalBuffer.OemUserInformation.Buffer;
1620 break;
1621
1623 *ReturnedEntryCount = LocalBuffer.OemGroupInformation.EntriesRead;
1624 *SortedBuffer = LocalBuffer.OemGroupInformation.Buffer;
1625 break;
1626
1628 /* FIXME */
1629 break;
1630 }
1631 }
1632 else
1633 {
1634 *ReturnedEntryCount = 0;
1635 *SortedBuffer = NULL;
1636 }
1637 }
1639 {
1641 }
1643
1644 return Status;
1645}
NTSTATUS NTAPI SamrQueryDisplayInformation3(IN SAMPR_HANDLE DomainHandle, IN DOMAIN_DISPLAY_INFORMATION DisplayInformationClass, IN unsigned long Index, IN unsigned long EntryCount, IN unsigned long PreferredMaximumLength, OUT unsigned long *TotalAvailable, OUT unsigned long *TotalReturned, OUT PSAMPR_DISPLAY_INFO_BUFFER Buffer)
Definition: samrpc.c:9240
PSAMPR_DOMAIN_DISPLAY_GROUP Buffer
Definition: sam.idl:348
PSAMPR_DOMAIN_DISPLAY_MACHINE Buffer
Definition: sam.idl:342
PSAMPR_DOMAIN_DISPLAY_OEM_GROUP Buffer
Definition: sam.idl:360
PSAMPR_DOMAIN_DISPLAY_OEM_USER Buffer
Definition: sam.idl:354
PSAMPR_DOMAIN_DISPLAY_USER Buffer
Definition: sam.idl:336
SAMPR_DOMAIN_DISPLAY_OEM_GROUP_BUFFER OemGroupInformation
Definition: sam.idl:369
SAMPR_DOMAIN_DISPLAY_OEM_USER_BUFFER OemUserInformation
Definition: sam.idl:368
SAMPR_DOMAIN_DISPLAY_USER_BUFFER UserInformation
Definition: sam.idl:365
SAMPR_DOMAIN_DISPLAY_MACHINE_BUFFER MachineInformation
Definition: sam.idl:366
SAMPR_DOMAIN_DISPLAY_GROUP_BUFFER GroupInformation
Definition: sam.idl:367

Referenced by NetQueryDisplayInformation().

◆ SamQueryInformationAlias()

NTSTATUS NTAPI SamQueryInformationAlias ( IN SAM_HANDLE  AliasHandle,
IN ALIAS_INFORMATION_CLASS  AliasInformationClass,
OUT PVOID Buffer 
)

Definition at line 1650 of file samlib.c.

1653{
1655
1656 TRACE("SamQueryInformationAlias(%p %lu %p)\n",
1657 AliasHandle, AliasInformationClass, Buffer);
1658
1660 {
1662 AliasInformationClass,
1664 }
1666 {
1668 }
1670
1671 return Status;
1672}
NTSTATUS NTAPI SamrQueryInformationAlias(IN SAMPR_HANDLE AliasHandle, IN ALIAS_INFORMATION_CLASS AliasInformationClass, OUT PSAMPR_ALIAS_INFO_BUFFER *Buffer)
Definition: samrpc.c:5044

Referenced by NetLocalGroupEnum(), and NetLocalGroupGetInfo().

◆ SamQueryInformationDomain()

NTSTATUS NTAPI SamQueryInformationDomain ( IN SAM_HANDLE  DomainHandle,
IN DOMAIN_INFORMATION_CLASS  DomainInformationClass,
OUT PVOID Buffer 
)

Definition at line 1677 of file samlib.c.

1680{
1682
1683 TRACE("SamQueryInformationDomain(%p %lu %p)\n",
1684 DomainHandle, DomainInformationClass, Buffer);
1685
1687 {
1689 DomainInformationClass,
1691 }
1693 {
1695 }
1697
1698 return Status;
1699}
NTSTATUS NTAPI SamrQueryInformationDomain(IN SAMPR_HANDLE DomainHandle, IN DOMAIN_INFORMATION_CLASS DomainInformationClass, OUT PSAMPR_DOMAIN_INFO_BUFFER *Buffer)
Definition: samrpc.c:1615

Referenced by ApplyLockoutSettings(), ApplyPasswordSettings(), and NetUserModalsGet().

◆ SamQueryInformationGroup()

NTSTATUS NTAPI SamQueryInformationGroup ( IN SAM_HANDLE  GroupHandle,
IN GROUP_INFORMATION_CLASS  GroupInformationClass,
OUT PVOID Buffer 
)

Definition at line 1704 of file samlib.c.

1707{
1709
1710 TRACE("SamQueryInformationGroup(%p %lu %p)\n",
1711 GroupHandle, GroupInformationClass, Buffer);
1712
1714 {
1716 GroupInformationClass,
1718 }
1720 {
1722 }
1724
1725 return Status;
1726}
NTSTATUS NTAPI SamrQueryInformationGroup(IN SAMPR_HANDLE GroupHandle, IN GROUP_INFORMATION_CLASS GroupInformationClass, OUT PSAMPR_GROUP_INFO_BUFFER *Buffer)
Definition: samrpc.c:4252

Referenced by NetGroupEnum(), and NetGroupGetInfo().

◆ SamQueryInformationUser()

NTSTATUS NTAPI SamQueryInformationUser ( IN SAM_HANDLE  UserHandle,
IN USER_INFORMATION_CLASS  UserInformationClass,
OUT PVOID Buffer 
)

Definition at line 1731 of file samlib.c.

1734{
1736
1737 TRACE("SamQueryInformationUser(%p %lu %p)\n",
1738 UserHandle, UserInformationClass, Buffer);
1739
1741 {
1743 UserInformationClass,
1745 }
1747 {
1749 }
1751
1752 return Status;
1753}
NTSTATUS NTAPI SamrQueryInformationUser(IN SAMPR_HANDLE UserHandle, IN USER_INFORMATION_CLASS UserInformationClass, OUT PSAMPR_USER_INFO_BUFFER *Buffer)
Definition: samrpc.c:7234

Referenced by BuildUserInfoBuffer(), EnableAccount(), and SetAdministratorPassword().

◆ SamQuerySecurityObject()

NTSTATUS NTAPI SamQuerySecurityObject ( IN SAM_HANDLE  ObjectHandle,
IN SECURITY_INFORMATION  SecurityInformation,
OUT PSECURITY_DESCRIPTOR SecurityDescriptor 
)

Definition at line 1758 of file samlib.c.

1761{
1762 PSAMPR_SR_SECURITY_DESCRIPTOR SamSecurityDescriptor = NULL;
1764
1765 TRACE("SamQuerySecurityObject(%p %lu %p)\n",
1767
1769
1771 {
1774 &SamSecurityDescriptor);
1775 }
1777 {
1779 }
1781
1782 TRACE("SamSecurityDescriptor: %p\n", SamSecurityDescriptor);
1783
1784 if (SamSecurityDescriptor != NULL)
1785 {
1786 TRACE("SamSecurityDescriptor->Length: %lu\n", SamSecurityDescriptor->Length);
1787 TRACE("SamSecurityDescriptor->SecurityDescriptor: %p\n", SamSecurityDescriptor->SecurityDescriptor);
1788
1789 *SecurityDescriptor = SamSecurityDescriptor->SecurityDescriptor;
1790
1791 midl_user_free(SamSecurityDescriptor);
1792 }
1793
1794 return Status;
1795}
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ SECURITY_INFORMATION SecurityInformation
Definition: fltkernel.h:1340
NTSTATUS NTAPI SamrQuerySecurityObject(IN SAMPR_HANDLE ObjectHandle, IN SECURITY_INFORMATION SecurityInformation, OUT PSAMPR_SR_SECURITY_DESCRIPTOR *SecurityDescriptor)
Definition: samrpc.c:329
unsigned long Length
Definition: msv1_0.h:45
unsigned char * SecurityDescriptor
Definition: msv1_0.h:46
_In_ USHORT _In_ ULONG _In_ PSOCKADDR _In_ PSOCKADDR _Reserved_ ULONG _In_opt_ PVOID _In_opt_ const WSK_CLIENT_CONNECTION_DISPATCH _In_opt_ PEPROCESS _In_opt_ PETHREAD _In_opt_ PSECURITY_DESCRIPTOR SecurityDescriptor
Definition: wsk.h:191

Referenced by GetUserDacl().

◆ SamRemoveMemberFromAlias()

NTSTATUS NTAPI SamRemoveMemberFromAlias ( IN SAM_HANDLE  AliasHandle,
IN PSID  MemberId 
)

Definition at line 1800 of file samlib.c.

1802{
1804
1805 TRACE("SamRemoveMemberFromAlias(%p %ul)\n",
1806 AliasHandle, MemberId);
1807
1809 {
1811 MemberId);
1812 }
1814 {
1816 }
1818
1819 return Status;
1820}
NTSTATUS NTAPI SamrRemoveMemberFromAlias(IN SAMPR_HANDLE AliasHandle, IN PRPC_SID MemberId)
Definition: samrpc.c:5320

Referenced by NetLocalGroupDelMembers().

◆ SamRemoveMemberFromForeignDomain()

NTSTATUS NTAPI SamRemoveMemberFromForeignDomain ( IN SAM_HANDLE  DomainHandle,
IN PSID  MemberId 
)

Definition at line 1825 of file samlib.c.

1827{
1829
1830 TRACE("SamRemoveMemberFromForeignDomain(%p %ul)\n",
1831 DomainHandle, MemberId);
1832
1834 {
1836 MemberId);
1837 }
1839 {
1841 }
1843
1844 return Status;
1845}
NTSTATUS NTAPI SamrRemoveMemberFromForeignDomain(IN SAMPR_HANDLE DomainHandle, IN PRPC_SID MemberSid)
Definition: samrpc.c:8402

◆ SamRemoveMemberFromGroup()

NTSTATUS NTAPI SamRemoveMemberFromGroup ( IN SAM_HANDLE  GroupHandle,
IN ULONG  MemberId 
)

Definition at line 1850 of file samlib.c.

1852{
1854
1855 TRACE("SamRemoveMemberFromGroup(%p %ul)\n",
1856 GroupHandle, MemberId);
1857
1859 {
1861 MemberId);
1862 }
1864 {
1866 }
1868
1869 return Status;
1870}
NTSTATUS NTAPI SamrRemoveMemberFromGroup(IN SAMPR_HANDLE GroupHandle, IN unsigned long MemberId)
Definition: samrpc.c:4602

Referenced by NetGroupDelUser(), and NetGroupSetUsers().

◆ SamRemoveMultipleMembersFromAlias()

NTSTATUS NTAPI SamRemoveMultipleMembersFromAlias ( IN SAM_HANDLE  AliasHandle,
IN PSID MemberIds,
IN ULONG  MemberCount 
)

Definition at line 1875 of file samlib.c.

1878{
1881
1882 TRACE("SamRemoveMultipleMembersFromAlias(%p %p %lu)\n",
1883 AliasHandle, MemberIds, MemberCount);
1884
1885 if (MemberIds == NULL)
1887
1888 Buffer.Count = MemberCount;
1889 Buffer.Sids = (PSAMPR_SID_INFORMATION)MemberIds;
1890
1892 {
1894 &Buffer);
1895 }
1897 {
1899 }
1901
1902 return Status;
1903}
NTSTATUS NTAPI SamrRemoveMultipleMembersFromAlias(IN SAMPR_HANDLE AliasHandle, IN PSAMPR_PSID_ARRAY MembersBuffer)
Definition: samrpc.c:9320

◆ SamRidToSid()

NTSTATUS NTAPI SamRidToSid ( IN SAM_HANDLE  ObjectHandle,
IN ULONG  Rid,
OUT PSID Sid 
)

Definition at line 1908 of file samlib.c.

1911{
1914}

◆ SamSetInformationAlias()

NTSTATUS NTAPI SamSetInformationAlias ( IN SAM_HANDLE  AliasHandle,
IN ALIAS_INFORMATION_CLASS  AliasInformationClass,
IN PVOID  Buffer 
)

Definition at line 1919 of file samlib.c.

1922{
1924
1925 TRACE("SamSetInformationAlias(%p %lu %p)\n",
1926 AliasHandle, AliasInformationClass, Buffer);
1927
1929 {
1931 AliasInformationClass,
1932 Buffer);
1933 }
1935 {
1937 }
1939
1940 return Status;
1941}
NTSTATUS NTAPI SamrSetInformationAlias(IN SAMPR_HANDLE AliasHandle, IN ALIAS_INFORMATION_CLASS AliasInformationClass, IN PSAMPR_ALIAS_INFO_BUFFER Buffer)
Definition: samrpc.c:5173

Referenced by NetLocalGroupAdd(), and NetLocalGroupSetInfo().

◆ SamSetInformationDomain()

NTSTATUS NTAPI SamSetInformationDomain ( IN SAM_HANDLE  DomainHandle,
IN DOMAIN_INFORMATION_CLASS  DomainInformationClass,
IN PVOID  Buffer 
)

Definition at line 1946 of file samlib.c.

1949{
1951
1952 TRACE("SamSetInformationDomain(%p %lu %p)\n",
1953 DomainHandle, DomainInformationClass, Buffer);
1954
1956 {
1958 DomainInformationClass,
1959 Buffer);
1960 }
1962 {
1964 }
1966
1967 return Status;
1968}
NTSTATUS NTAPI SamrSetInformationDomain(IN SAMPR_HANDLE DomainHandle, IN DOMAIN_INFORMATION_CLASS DomainInformationClass, IN PSAMPR_DOMAIN_INFO_BUFFER DomainInformation)
Definition: samrpc.c:1790

Referenced by ApplyLockoutSettings(), ApplyPasswordSettings(), and SetAccountsDomainSid().

◆ SamSetInformationGroup()

NTSTATUS NTAPI SamSetInformationGroup ( IN SAM_HANDLE  GroupHandle,
IN GROUP_INFORMATION_CLASS  GroupInformationClass,
IN PVOID  Buffer 
)

Definition at line 1973 of file samlib.c.

1976{
1978
1979 TRACE("SamSetInformationGroup(%p %lu %p)\n",
1980 GroupHandle, GroupInformationClass, Buffer);
1981
1983 {
1985 GroupInformationClass,
1986 Buffer);
1987 }
1989 {
1991 }
1993
1994 return Status;
1995}
NTSTATUS NTAPI SamrSetInformationGroup(IN SAMPR_HANDLE GroupHandle, IN GROUP_INFORMATION_CLASS GroupInformationClass, IN PSAMPR_GROUP_INFO_BUFFER Buffer)
Definition: samrpc.c:4416

Referenced by NetGroupAdd(), and NetGroupSetInfo().

◆ SamSetInformationUser()

NTSTATUS NTAPI SamSetInformationUser ( IN SAM_HANDLE  UserHandle,
IN USER_INFORMATION_CLASS  UserInformationClass,
IN PVOID  Buffer 
)

Definition at line 2000 of file samlib.c.

2003{
2005 SAMPR_USER_INTERNAL1_INFORMATION Internal1Buffer;
2006 USER_ALL_INFORMATION InternalAllBuffer;
2007 OEM_STRING LmPwdString;
2008 CHAR LmPwdBuffer[15];
2010
2011 TRACE("SamSetInformationUser(%p %lu %p)\n",
2012 UserHandle, UserInformationClass, Buffer);
2013
2014 if (UserInformationClass == UserSetPasswordInformation)
2015 {
2017
2018 Status = SampCheckPassword(UserHandle,
2019 (PUNICODE_STRING)&PasswordBuffer->Password);
2020 if (!NT_SUCCESS(Status))
2021 {
2022 TRACE("SampCheckPassword failed (Status 0x%08lx)\n", Status);
2023 return Status;
2024 }
2025
2026 /* Calculate the NT hash value of the password */
2028 (LPBYTE)&Internal1Buffer.EncryptedNtOwfPassword);
2029 if (!NT_SUCCESS(Status))
2030 {
2031 TRACE("SystemFunction007 failed (Status 0x%08lx)\n", Status);
2032 return Status;
2033 }
2034
2035 Internal1Buffer.NtPasswordPresent = TRUE;
2036 Internal1Buffer.LmPasswordPresent = FALSE;
2037
2038 /* Build the LM password */
2039 LmPwdString.Length = 15;
2040 LmPwdString.MaximumLength = 15;
2041 LmPwdString.Buffer = LmPwdBuffer;
2042 ZeroMemory(LmPwdString.Buffer, LmPwdString.MaximumLength);
2043
2045 (PUNICODE_STRING)&PasswordBuffer->Password,
2046 FALSE);
2047 if (NT_SUCCESS(Status))
2048 {
2049 /* Calculate the LM hash value of the password */
2050 Status = SystemFunction006(LmPwdString.Buffer,
2051 (LPSTR)&Internal1Buffer.EncryptedLmOwfPassword);
2052 if (NT_SUCCESS(Status))
2053 Internal1Buffer.LmPasswordPresent = TRUE;
2054 }
2055
2056 Internal1Buffer.PasswordExpired = PasswordBuffer->PasswordExpired;
2057
2059 {
2062 (PVOID)&Internal1Buffer);
2063 }
2065 {
2067 }
2069
2070 if (!NT_SUCCESS(Status))
2071 {
2072 TRACE("SamrSetInformation() failed (Status 0x%08lx)\n", Status);
2073 }
2074
2075 return Status;
2076 }
2077 else if (UserInformationClass == UserAllInformation)
2078 {
2079 RtlCopyMemory(&InternalAllBuffer,
2080 Buffer,
2081 sizeof(USER_ALL_INFORMATION));
2082
2084 {
2085 if (InternalAllBuffer.WhichFields & USER_ALL_OWFPASSWORD)
2086 {
2087 /* Check NT password hash */
2088 if (InternalAllBuffer.WhichFields & USER_ALL_NTPASSWORDPRESENT)
2089 {
2090 if (InternalAllBuffer.NtPassword.Length != sizeof(ENCRYPTED_NT_OWF_PASSWORD))
2092 }
2093
2094 /* Check LM password hash */
2095 if (InternalAllBuffer.WhichFields & USER_ALL_LMPASSWORDPRESENT)
2096 {
2097 if (InternalAllBuffer.LmPassword.Length != sizeof(ENCRYPTED_LM_OWF_PASSWORD))
2099 }
2100 }
2101 else
2102 {
2103 /*
2104 * Only allow the NT password to be set.
2105 * The LM password will be created here.
2106 */
2107 if (InternalAllBuffer.WhichFields & USER_ALL_LMPASSWORDPRESENT)
2108 {
2109 TRACE("Do not try to set a clear text LM password!\n");
2111 }
2112
2113 if (InternalAllBuffer.WhichFields & USER_ALL_NTPASSWORDPRESENT)
2114 {
2115 Status = SampCheckPassword(UserHandle,
2116 &InternalAllBuffer.NtPassword);
2117 if (!NT_SUCCESS(Status))
2118 {
2119 TRACE("SampCheckPassword failed (Status 0x%08lx)\n", Status);
2120 return Status;
2121 }
2122
2123 /* Calculate the NT password hash */
2124 Status = SystemFunction007((PUNICODE_STRING)&InternalAllBuffer.NtPassword,
2125 (LPBYTE)&Internal1Buffer.EncryptedNtOwfPassword);
2126 if (!NT_SUCCESS(Status))
2127 {
2128 TRACE("SystemFunction007 failed (Status 0x%08lx)\n", Status);
2129 return Status;
2130 }
2131
2132 InternalAllBuffer.NtPasswordPresent = TRUE;
2133 InternalAllBuffer.LmPasswordPresent = FALSE;
2134
2135 InternalAllBuffer.NtPassword.Length = sizeof(ENCRYPTED_NT_OWF_PASSWORD);
2136 InternalAllBuffer.NtPassword.MaximumLength = sizeof(ENCRYPTED_NT_OWF_PASSWORD);
2137 InternalAllBuffer.NtPassword.Buffer = (LPWSTR)&Internal1Buffer.EncryptedNtOwfPassword;
2138
2139 /* Build the LM password */
2140 LmPwdString.Length = 15;
2141 LmPwdString.MaximumLength = 15;
2142 LmPwdString.Buffer = LmPwdBuffer;
2143 ZeroMemory(LmPwdString.Buffer, LmPwdString.MaximumLength);
2144
2146 (PUNICODE_STRING)&InternalAllBuffer.NtPassword,
2147 FALSE);
2148 if (NT_SUCCESS(Status))
2149 {
2150 /* Calculate the LM password hash */
2151 Status = SystemFunction006(LmPwdString.Buffer,
2152 (LPSTR)&Internal1Buffer.EncryptedLmOwfPassword);
2153 if (NT_SUCCESS(Status))
2154 {
2155 InternalAllBuffer.WhichFields |= USER_ALL_LMPASSWORDPRESENT;
2156 InternalAllBuffer.LmPasswordPresent = TRUE;
2157
2158 InternalAllBuffer.LmPassword.Length = sizeof(ENCRYPTED_LM_OWF_PASSWORD);
2159 InternalAllBuffer.LmPassword.MaximumLength = sizeof(ENCRYPTED_LM_OWF_PASSWORD);
2160 InternalAllBuffer.LmPassword.Buffer = (LPWSTR)&Internal1Buffer.EncryptedLmOwfPassword;
2161 }
2162 }
2163 }
2164 }
2165 }
2166
2168 {
2171 (PVOID)&InternalAllBuffer);
2172 }
2174 {
2176 }
2178
2179 if (!NT_SUCCESS(Status))
2180 {
2181 TRACE("SamrSetInformation() failed (Status 0x%08lx)\n", Status);
2182 }
2183
2184 return Status;
2185 }
2186
2188 {
2190 UserInformationClass,
2191 Buffer);
2192 }
2194 {
2196 }
2198
2199 return Status;
2200}
NTSTATUS NTAPI SamrSetInformationUser(IN SAMPR_HANDLE UserHandle, IN USER_INFORMATION_CLASS UserInformationClass, IN PSAMPR_USER_INFO_BUFFER Buffer)
Definition: samrpc.c:7848
struct _ENCRYPTED_LM_OWF_PASSWORD ENCRYPTED_NT_OWF_PASSWORD
struct _ENCRYPTED_LM_OWF_PASSWORD ENCRYPTED_LM_OWF_PASSWORD
#define USER_ALL_OWFPASSWORD
Definition: ntsam.h:225
#define USER_ALL_LMPASSWORDPRESENT
Definition: ntsam.h:221
#define USER_ALL_NTPASSWORDPRESENT
Definition: ntsam.h:220
struct _SAMPR_USER_SET_PASSWORD_INFORMATION * PSAMPR_USER_SET_PASSWORD_INFORMATION
NTSTATUS SampCheckPassword(IN SAMPR_HANDLE UserHandle, IN PUNICODE_STRING Password)
Definition: samlib.c:148
ENCRYPTED_NT_OWF_PASSWORD EncryptedNtOwfPassword
Definition: sam.idl:640
ENCRYPTED_LM_OWF_PASSWORD EncryptedLmOwfPassword
Definition: sam.idl:641
RPC_UNICODE_STRING Password
Definition: sam.idl:629
USHORT MaximumLength
Definition: env_spec_w32.h:370
BOOLEAN LmPasswordPresent
Definition: ntsam.h:715
UNICODE_STRING LmPassword
Definition: ntsam.h:702
UNICODE_STRING NtPassword
Definition: ntsam.h:703
BOOLEAN NtPasswordPresent
Definition: ntsam.h:716
WCHAR * LPWSTR
Definition: xmlstorage.h:184

Referenced by EnableAccount(), SetAdministratorPassword(), SetNewAccountName(), and SetUserInfo().

◆ SamSetMemberAttributesOfGroup()

NTSTATUS NTAPI SamSetMemberAttributesOfGroup ( IN SAM_HANDLE  GroupHandle,
IN ULONG  MemberId,
IN ULONG  Attributes 
)

Definition at line 2205 of file samlib.c.

2208{
2210
2211 TRACE("SamSetMemberAttributesOfGroup(%p %lu 0x%lx)\n",
2212 GroupHandle, MemberId, Attributes);
2213
2215 {
2217 MemberId,
2218 Attributes);
2219 }
2221 {
2223 }
2225
2226 return Status;
2227}
NTSTATUS NTAPI SamrSetMemberAttributesOfGroup(IN SAMPR_HANDLE GroupHandle, IN unsigned long MemberId, IN unsigned long Attributes)
Definition: samrpc.c:4778

Referenced by NetGroupSetUsers().

◆ SamSetSecurityObject()

NTSTATUS NTAPI SamSetSecurityObject ( IN SAM_HANDLE  ObjectHandle,
IN SECURITY_INFORMATION  SecurityInformation,
IN PSECURITY_DESCRIPTOR  SecurityDescriptor 
)

Definition at line 2232 of file samlib.c.

2235{
2236 SAMPR_SR_SECURITY_DESCRIPTOR DescriptorToPass;
2237 ULONG Length;
2239
2240 TRACE("SamSetSecurityObject(%p %lu %p)\n",
2242
2243 /* Retrieve the length of the relative security descriptor */
2244 Length = 0;
2246 NULL,
2247 &Length);
2250
2251
2252 /* Allocate a buffer for the security descriptor */
2253 DescriptorToPass.Length = Length;
2254 DescriptorToPass.SecurityDescriptor = MIDL_user_allocate(Length);
2255 if (DescriptorToPass.SecurityDescriptor == NULL)
2257
2258 /* Convert the given security descriptor to a relative security descriptor */
2260 (PSECURITY_DESCRIPTOR)DescriptorToPass.SecurityDescriptor,
2261 &Length);
2262 if (!NT_SUCCESS(Status))
2263 goto done;
2264
2266 {
2269 &DescriptorToPass);
2270 }
2272 {
2274 }
2276
2277done:
2278 if (DescriptorToPass.SecurityDescriptor != NULL)
2279 MIDL_user_free(DescriptorToPass.SecurityDescriptor);
2280
2281 return Status;
2282}
void *__RPC_USER MIDL_user_allocate(SIZE_T size)
Definition: irotp.c:371
NTSYSAPI NTSTATUS NTAPI RtlMakeSelfRelativeSD(_In_ PSECURITY_DESCRIPTOR AbsoluteSD, _Out_ PSECURITY_DESCRIPTOR SelfRelativeSD, _Inout_ PULONG BufferLength)
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:102
NTSTATUS NTAPI SamrSetSecurityObject(IN SAMPR_HANDLE ObjectHandle, IN SECURITY_INFORMATION SecurityInformation, IN PSAMPR_SR_SECURITY_DESCRIPTOR SecurityDescriptor)
Definition: samrpc.c:192
#define STATUS_BUFFER_TOO_SMALL
Definition: shellext.h:69

◆ SamShutdownSamServer()

NTSTATUS NTAPI SamShutdownSamServer ( IN SAM_HANDLE  ServerHandle)

Definition at line 2287 of file samlib.c.

2288{
2290
2291 TRACE("SamShutdownSamServer(%p)\n", ServerHandle);
2292
2294 {
2295 Status = SamrShutdownSamServer((SAMPR_HANDLE)ServerHandle);
2296 }
2298 {
2300 }
2302
2303 return Status;
2304}
NTSTATUS NTAPI SamrShutdownSamServer(IN SAMPR_HANDLE ServerHandle)
Definition: samrpc.c:466