Something went wrong. Try again.
Reactos
Something went wrong. Try again.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069
#ifndef _NTSAM_#define _NTSAM_
#ifdef __cplusplusextern "C" {#endif
#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 (STANDARD_RIGHTS_READ |\ ALIAS_LIST_MEMBERS)
#define ALIAS_WRITE (STANDARD_RIGHTS_WRITE |\ ALIAS_ADD_MEMBER |\ ALIAS_REMOVE_MEMBER |\ ALIAS_WRITE_ACCOUNT)
#define ALIAS_EXECUTE (STANDARD_RIGHTS_EXECUTE |\ ALIAS_READ_INFORMATION)
#define ALIAS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\ ALIAS_ADD_MEMBER |\ ALIAS_REMOVE_MEMBER |\ ALIAS_LIST_MEMBERS |\ ALIAS_READ_INFORMATION |\ ALIAS_WRITE_ACCOUNT)
#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 (STANDARD_RIGHTS_READ |\ DOMAIN_READ_OTHER_PARAMETERS |\ DOMAIN_GET_ALIAS_MEMBERSHIP)
#define DOMAIN_WRITE (STANDARD_RIGHTS_WRITE |\ DOMAIN_WRITE_PASSWORD_PARAMS |\ DOMAIN_WRITE_OTHER_PARAMETERS |\ DOMAIN_CREATE_USER |\ DOMAIN_CREATE_GROUP |\ DOMAIN_CREATE_ALIAS |\ DOMAIN_ADMINISTER_SERVER)
#define DOMAIN_EXECUTE (STANDARD_RIGHTS_EXECUTE |\ DOMAIN_READ_PASSWORD_PARAMETERS |\ DOMAIN_LIST_ACCOUNTS |\ DOMAIN_LOOKUP)
#define DOMAIN_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\ DOMAIN_READ_PASSWORD_PARAMETERS |\ DOMAIN_WRITE_PASSWORD_PARAMS |\ DOMAIN_READ_OTHER_PARAMETERS |\ DOMAIN_WRITE_OTHER_PARAMETERS |\ DOMAIN_CREATE_USER |\ DOMAIN_CREATE_GROUP |\ DOMAIN_CREATE_ALIAS |\ DOMAIN_GET_ALIAS_MEMBERSHIP |\ DOMAIN_LIST_ACCOUNTS |\ DOMAIN_LOOKUP |\ DOMAIN_ADMINISTER_SERVER)
#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 (STANDARD_RIGHTS_READ |\ GROUP_LIST_MEMBERS)
#define GROUP_WRITE (STANDARD_RIGHTS_WRITE |\ GROUP_WRITE_ACCOUNT |\ GROUP_ADD_MEMBER |\ GROUP_REMOVE_MEMBER)
#define GROUP_EXECUTE (STANDARD_RIGHTS_EXECUTE |\ GROUP_READ_INFORMATION)
#define GROUP_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\ GROUP_READ_INFORMATION |\ GROUP_WRITE_ACCOUNT |\ GROUP_ADD_MEMBER |\ GROUP_REMOVE_MEMBER |\ GROUP_LIST_MEMBERS)
#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 (STANDARD_RIGHTS_READ |\ SAM_SERVER_ENUMERATE_DOMAINS)
#define SAM_SERVER_WRITE (STANDARD_RIGHTS_WRITE |\ SAM_SERVER_SHUTDOWN |\ SAM_SERVER_INITIALIZE |\ SAM_SERVER_CREATE_DOMAIN)
#define SAM_SERVER_EXECUTE (STANDARD_RIGHTS_EXECUTE |\ SAM_SERVER_CONNECT |\ SAM_SERVER_LOOKUP_DOMAIN)
#define SAM_SERVER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\ SAM_SERVER_CONNECT |\ SAM_SERVER_SHUTDOWN |\ SAM_SERVER_INITIALIZE |\ SAM_SERVER_CREATE_DOMAIN |\ SAM_SERVER_ENUMERATE_DOMAINS |\ SAM_SERVER_LOOKUP_DOMAIN)
#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 (STANDARD_RIGHTS_READ |\ USER_READ_PREFERENCES |\ USER_READ_LOGON |\ USER_READ_ACCOUNT |\ USER_LIST_GROUPS |\ USER_READ_GROUP_INFORMATION)
#define USER_WRITE (STANDARD_RIGHTS_WRITE |\ USER_WRITE_PREFERENCES |\ USER_CHANGE_PASSWORD)
#define USER_EXECUTE (STANDARD_RIGHTS_EXECUTE |\ USER_READ_GENERAL |\ USER_CHANGE_PASSWORD)
#define USER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\ USER_READ_GENERAL |\ USER_READ_PREFERENCES |\ USER_WRITE_PREFERENCES |\ USER_READ_LOGON |\ USER_READ_ACCOUNT |\ USER_WRITE_ACCOUNT |\ USER_CHANGE_PASSWORD |\ USER_FORCE_PASSWORD_CHANGE |\ USER_LIST_GROUPS |\ USER_READ_GROUP_INFORMATION |\ USER_WRITE_GROUP_INFORMATION)
/* User account control bits */#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
/* Constants used by LOGON_HOURS.UnitsPerWeek */#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)
/* Flags used by USER_ALL_INFORMATION.WhichField */#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
/* Values used by USER_PWD_CHANGE_FAILURE_INFORMATION.ExtendedFailureReason */#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
/* Flags used by DOMAIN_PASSWORD_INFORMATION.PasswordProperties */#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
typedef PVOID SAM_HANDLE, *PSAM_HANDLE;typedef ULONG SAM_ENUMERATE_HANDLE, *PSAM_ENUMERATE_HANDLE;
typedef struct _SAM_RID_ENUMERATION{ ULONG RelativeId; UNICODE_STRING Name;} SAM_RID_ENUMERATION, *PSAM_RID_ENUMERATION;
typedef struct _SAM_SID_ENUMERATION{ PSID Sid; UNICODE_STRING Name;} SAM_SID_ENUMERATION, *PSAM_SID_ENUMERATION;
typedef enum _ALIAS_INFORMATION_CLASS{ AliasGeneralInformation = 1, AliasNameInformation, AliasAdminCommentInformation} ALIAS_INFORMATION_CLASS, *PALIAS_INFORMATION_CLASS;
typedef struct _ALIAS_GENERAL_INFORMATION{ UNICODE_STRING Name; ULONG MemberCount; UNICODE_STRING AdminComment;} ALIAS_GENERAL_INFORMATION, *PALIAS_GENERAL_INFORMATION;
typedef struct _ALIAS_NAME_INFORMATION{ UNICODE_STRING Name;} ALIAS_NAME_INFORMATION, *PALIAS_NAME_INFORMATION;
typedef struct _ALIAS_ADM_COMMENT_INFORMATION{ UNICODE_STRING AdminComment;} ALIAS_ADM_COMMENT_INFORMATION, *PALIAS_ADM_COMMENT_INFORMATION;
typedef enum _DOMAIN_DISPLAY_INFORMATION{ DomainDisplayUser = 1, DomainDisplayMachine, DomainDisplayGroup, DomainDisplayOemUser, DomainDisplayOemGroup, DomainDisplayServer} DOMAIN_DISPLAY_INFORMATION, *PDOMAIN_DISPLAY_INFORMATION;
typedef struct _DOMAIN_DISPLAY_USER{ ULONG Index; ULONG Rid; ULONG AccountControl; UNICODE_STRING LogonName; UNICODE_STRING AdminComment; UNICODE_STRING FullName;} DOMAIN_DISPLAY_USER, *PDOMAIN_DISPLAY_USER;
typedef struct _DOMAIN_DISPLAY_MACHINE{ ULONG Index; ULONG Rid; ULONG AccountControl; UNICODE_STRING Machine; UNICODE_STRING Comment;} DOMAIN_DISPLAY_MACHINE, *PDOMAIN_DISPLAY_MACHINE;
typedef struct _DOMAIN_DISPLAY_GROUP{ ULONG Index; ULONG Rid; ULONG Attributes; UNICODE_STRING Group; UNICODE_STRING Comment;} DOMAIN_DISPLAY_GROUP, *PDOMAIN_DISPLAY_GROUP;
typedef enum _DOMAIN_INFORMATION_CLASS{ DomainPasswordInformation = 1, DomainGeneralInformation, DomainLogoffInformation, DomainOemInformation, DomainNameInformation, DomainReplicationInformation, DomainServerRoleInformation, DomainModifiedInformation, DomainStateInformation, DomainUasInformation, DomainGeneralInformation2, DomainLockoutInformation, DomainModifiedInformation2} DOMAIN_INFORMATION_CLASS;
typedef enum _DOMAIN_SERVER_ENABLE_STATE{ DomainServerEnabled = 1, DomainServerDisabled} DOMAIN_SERVER_ENABLE_STATE, *PDOMAIN_SERVER_ENABLE_STATE;
typedef enum _DOMAIN_SERVER_ROLE{ DomainServerRoleBackup = 2, DomainServerRolePrimary} DOMAIN_SERVER_ROLE, *PDOMAIN_SERVER_ROLE;
#ifndef _DOMAIN_PASSWORD_INFORMATION_DEFINED#define _DOMAIN_PASSWORD_INFORMATION_DEFINEDtypedef struct _DOMAIN_PASSWORD_INFORMATION{ USHORT MinPasswordLength; USHORT PasswordHistoryLength; ULONG PasswordProperties; LARGE_INTEGER MaxPasswordAge; LARGE_INTEGER MinPasswordAge;} DOMAIN_PASSWORD_INFORMATION, *PDOMAIN_PASSWORD_INFORMATION;#endif
#include "pshpack4.h"typedef struct _DOMAIN_GENERAL_INFORMATION{ LARGE_INTEGER ForceLogoff; UNICODE_STRING OemInformation; UNICODE_STRING DomainName; UNICODE_STRING ReplicaSourceNodeName; LARGE_INTEGER DomainModifiedCount; DOMAIN_SERVER_ENABLE_STATE DomainServerState; DOMAIN_SERVER_ROLE DomainServerRole; BOOLEAN UasCompatibilityRequired; ULONG UserCount; ULONG GroupCount; ULONG AliasCount;} DOMAIN_GENERAL_INFORMATION, *PDOMAIN_GENERAL_INFORMATION;#include "poppack.h"
typedef struct _DOMAIN_LOGOFF_INFORMATION{ LARGE_INTEGER ForceLogoff;} DOMAIN_LOGOFF_INFORMATION, *PDOMAIN_LOGOFF_INFORMATION;
typedef struct _DOMAIN_OEM_INFORMATION{ UNICODE_STRING OemInformation;} DOMAIN_OEM_INFORMATION, *PDOMAIN_OEM_INFORMATION;
typedef struct _DOMAIN_NAME_INFORMATION{ UNICODE_STRING DomainName;} DOMAIN_NAME_INFORMATION, *PDOMAIN_NAME_INFORMATION;
typedef struct _DOMAIN_REPLICATION_INFORMATION{ UNICODE_STRING ReplicaSourceNodeName;} DOMAIN_REPLICATION_INFORMATION, *PDOMAIN_REPLICATION_INFORMATION;
typedef struct _DOMAIN_SERVER_ROLE_INFORMATION{ DOMAIN_SERVER_ROLE DomainServerRole;} DOMAIN_SERVER_ROLE_INFORMATION, *PDOMAIN_SERVER_ROLE_INFORMATION;
typedef struct _DOMAIN_MODIFIED_INFORMATION{ LARGE_INTEGER DomainModifiedCount; LARGE_INTEGER CreationTime;} DOMAIN_MODIFIED_INFORMATION, *PDOMAIN_MODIFIED_INFORMATION;
typedef struct _DOMAIN_STATE_INFORMATION{ DOMAIN_SERVER_ENABLE_STATE DomainServerState;} DOMAIN_STATE_INFORMATION, *PDOMAIN_STATE_INFORMATION;
typedef struct _DOMAIN_UAS_INFORMATION{ BOOLEAN UasCompatibilityRequired;} DOMAIN_UAS_INFORMATION;
#include "pshpack4.h"typedef struct _DOMAIN_GENERAL_INFORMATION2{ DOMAIN_GENERAL_INFORMATION I1; LARGE_INTEGER LockoutDuration; LARGE_INTEGER LockoutObservationWindow; USHORT LockoutThreshold;} DOMAIN_GENERAL_INFORMATION2, *PDOMAIN_GENERAL_INFORMATION2;#include "poppack.h"
typedef struct _DOMAIN_LOCKOUT_INFORMATION{ LARGE_INTEGER LockoutDuration; LARGE_INTEGER LockoutObservationWindow; USHORT LockoutThreshold;} DOMAIN_LOCKOUT_INFORMATION, *PDOMAIN_LOCKOUT_INFORMATION;
typedef struct _DOMAIN_MODIFIED_INFORMATION2{ LARGE_INTEGER DomainModifiedCount; LARGE_INTEGER CreationTime; LARGE_INTEGER ModifiedCountAtLastPromotion;} DOMAIN_MODIFIED_INFORMATION2, *PDOMAIN_MODIFIED_INFORMATION2;
typedef enum _GROUP_INFORMATION_CLASS{ GroupGeneralInformation = 1, GroupNameInformation, GroupAttributeInformation, GroupAdminCommentInformation, GroupReplicationInformation} GROUP_INFORMATION_CLASS;
typedef struct _GROUP_GENERAL_INFORMATION{ UNICODE_STRING Name; ULONG Attributes; ULONG MemberCount; UNICODE_STRING AdminComment;} GROUP_GENERAL_INFORMATION, *PGROUP_GENERAL_INFORMATION;
typedef struct _GROUP_NAME_INFORMATION{ UNICODE_STRING Name;} GROUP_NAME_INFORMATION, *PGROUP_NAME_INFORMATION;
typedef struct _GROUP_ATTRIBUTE_INFORMATION{ ULONG Attributes;} GROUP_ATTRIBUTE_INFORMATION, *PGROUP_ATTRIBUTE_INFORMATION;
typedef struct GROUP_ADM_COMMENT_INFORMATION{ UNICODE_STRING AdminComment;} GROUP_ADM_COMMENT_INFORMATION, *PGROUP_ADM_COMMENT_INFORMATION;
typedef struct _GROUP_MEMBERSHIP{ ULONG RelativeId; ULONG Attributes;} GROUP_MEMBERSHIP, *PGROUP_MEMBERSHIP;
typedef struct _LOGON_HOURS{ USHORT UnitsPerWeek; PUCHAR LogonHours;} LOGON_HOURS, *PLOGON_HOURS;
typedef struct _SR_SECURITY_DESCRIPTOR{ ULONG Length; PUCHAR SecurityDescriptor;} SR_SECURITY_DESCRIPTOR, *PSR_SECURITY_DESCRIPTOR;
typedef 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,} USER_INFORMATION_CLASS, *PUSER_INFORMATION_CLASS;
typedef struct _USER_GENERAL_INFORMATION{ UNICODE_STRING UserName; UNICODE_STRING FullName; ULONG PrimaryGroupId; UNICODE_STRING AdminComment; UNICODE_STRING UserComment;} USER_GENERAL_INFORMATION, *PUSER_GENERAL_INFORMATION;
typedef struct _USER_PREFERENCES_INFORMATION{ UNICODE_STRING UserComment; UNICODE_STRING Reserved1; USHORT CountryCode; USHORT CodePage;} USER_PREFERENCES_INFORMATION, *PUSER_PREFERENCES_INFORMATION;
#include "pshpack4.h"typedef struct _USER_LOGON_INFORMATION{ UNICODE_STRING UserName; UNICODE_STRING FullName; ULONG UserId; ULONG PrimaryGroupId; UNICODE_STRING HomeDirectory; UNICODE_STRING HomeDirectoryDrive; UNICODE_STRING ScriptPath; UNICODE_STRING ProfilePath; UNICODE_STRING WorkStations; LARGE_INTEGER LastLogon; LARGE_INTEGER LastLogoff; LARGE_INTEGER PasswordLastSet; LARGE_INTEGER PasswordCanChange; LARGE_INTEGER PasswordMustChange; LOGON_HOURS LogonHours; USHORT BadPasswordCount; USHORT LogonCount; ULONG UserAccountControl;} USER_LOGON_INFORMATION, *PUSER_LOGON_INFORMATION;#include "poppack.h"
typedef struct _USER_LOGON_HOURS_INFORMATION{ LOGON_HOURS LogonHours;} USER_LOGON_HOURS_INFORMATION, *PUSER_LOGON_HOURS_INFORMATION;
#include "pshpack4.h"typedef struct _USER_ACCOUNT_INFORMATION{ UNICODE_STRING UserName; UNICODE_STRING FullName; ULONG UserId; ULONG PrimaryGroupId; UNICODE_STRING HomeDirectory; UNICODE_STRING HomeDirectoryDrive; UNICODE_STRING ScriptPath; UNICODE_STRING ProfilePath; UNICODE_STRING AdminComment; UNICODE_STRING WorkStations; LARGE_INTEGER LastLogon; LARGE_INTEGER LastLogoff; LOGON_HOURS LogonHours; USHORT BadPasswordCount; USHORT LogonCount; LARGE_INTEGER PasswordLastSet; LARGE_INTEGER AccountExpires; ULONG UserAccountControl;} USER_ACCOUNT_INFORMATION, *PUSER_ACCOUNT_INFORMATION;#include "poppack.h"
typedef struct _USER_NAME_INFORMATION{ UNICODE_STRING UserName; UNICODE_STRING FullName;} USER_NAME_INFORMATION, *PUSER_NAME_INFORMATION;
typedef struct _USER_ACCOUNT_NAME_INFORMATION{ UNICODE_STRING UserName;} USER_ACCOUNT_NAME_INFORMATION, *PUSER_ACCOUNT_NAME_INFORMATION;
typedef struct _USER_FULL_NAME_INFORMATION{ UNICODE_STRING FullName;} USER_FULL_NAME_INFORMATION, *PUSER_FULL_NAME_INFORMATION;
typedef struct _USER_PRIMARY_GROUP_INFORMATION{ ULONG PrimaryGroupId;} USER_PRIMARY_GROUP_INFORMATION, *PUSER_PRIMARY_GROUP_INFORMATION;
typedef struct _USER_HOME_INFORMATION{ UNICODE_STRING HomeDirectory; UNICODE_STRING HomeDirectoryDrive;} USER_HOME_INFORMATION, *PUSER_HOME_INFORMATION;
typedef struct _USER_SCRIPT_INFORMATION{ UNICODE_STRING ScriptPath;} USER_SCRIPT_INFORMATION, *PUSER_SCRIPT_INFORMATION;
typedef struct _USER_PROFILE_INFORMATION{ UNICODE_STRING ProfilePath;} USER_PROFILE_INFORMATION, *PUSER_PROFILE_INFORMATION;
typedef struct _USER_ADMIN_COMMENT_INFORMATION{ UNICODE_STRING AdminComment;} USER_ADMIN_COMMENT_INFORMATION, *PUSER_ADMIN_COMMENT_INFORMATION;
typedef struct _USER_WORKSTATIONS_INFORMATION{ UNICODE_STRING WorkStations;} USER_WORKSTATIONS_INFORMATION, *PUSER_WORKSTATIONS_INFORMATION;
typedef struct _USER_SET_PASSWORD_INFORMATION{ UNICODE_STRING Password; BOOLEAN PasswordExpired;} USER_SET_PASSWORD_INFORMATION, *PUSER_SET_PASSWORD_INFORMATION;
typedef struct _USER_CONTROL_INFORMATION{ ULONG UserAccountControl;} USER_CONTROL_INFORMATION, *PUSER_CONTROL_INFORMATION;
typedef struct _USER_EXPIRES_INFORMATION{ LARGE_INTEGER AccountExpires;} USER_EXPIRES_INFORMATION, *PUSER_EXPIRES_INFORMATION;
typedef struct _USER_PARAMETERS_INFORMATION{ UNICODE_STRING Parameters;} USER_PARAMETERS_INFORMATION, *PUSER_PARAMETERS_INFORMATION;
#include "pshpack4.h"typedef struct _USER_ALL_INFORMATION{ LARGE_INTEGER LastLogon; LARGE_INTEGER LastLogoff; LARGE_INTEGER PasswordLastSet; LARGE_INTEGER AccountExpires; LARGE_INTEGER PasswordCanChange; LARGE_INTEGER PasswordMustChange; UNICODE_STRING UserName; UNICODE_STRING FullName; UNICODE_STRING HomeDirectory; UNICODE_STRING HomeDirectoryDrive; UNICODE_STRING ScriptPath; UNICODE_STRING ProfilePath; UNICODE_STRING AdminComment; UNICODE_STRING WorkStations; UNICODE_STRING UserComment; UNICODE_STRING Parameters; UNICODE_STRING LmPassword; UNICODE_STRING NtPassword; UNICODE_STRING PrivateData; SR_SECURITY_DESCRIPTOR SecurityDescriptor; ULONG UserId; ULONG PrimaryGroupId; ULONG UserAccountControl; ULONG WhichFields; LOGON_HOURS LogonHours; USHORT BadPasswordCount; USHORT LogonCount; USHORT CountryCode; USHORT CodePage; BOOLEAN LmPasswordPresent; BOOLEAN NtPasswordPresent; BOOLEAN PasswordExpired; BOOLEAN PrivateDataSensitive;} USER_ALL_INFORMATION, *PUSER_ALL_INFORMATION;#include "poppack.h"
typedef struct _USER_PWD_CHANGE_FAILURE_INFORMATION{ ULONG ExtendedFailureReason; UNICODE_STRING FilterModuleName;} USER_PWD_CHANGE_FAILURE_INFORMATION, *PUSER_PWD_CHANGE_FAILURE_INFORMATION;
#define SAM_SID_COMPATIBILITY_ALL 0#define SAM_SID_COMPATIBILITY_LAX 1#define SAM_SID_COMPATIBILITY_STRICT 2
NTSTATUSNTAPISamAddMemberToAlias(IN SAM_HANDLE AliasHandle, IN PSID MemberId);
NTSTATUSNTAPISamAddMemberToGroup(IN SAM_HANDLE GroupHandle, IN ULONG MemberId, IN ULONG Attributes);
NTSTATUSNTAPISamAddMultipleMembersToAlias(IN SAM_HANDLE AliasHandle, IN PSID *MemberIds, IN ULONG MemberCount);
NTSTATUSNTAPISamChangePasswordUser(IN SAM_HANDLE UserHandle, IN PUNICODE_STRING OldPassword, IN PUNICODE_STRING NewPassword);
NTSTATUSNTAPISamChangePasswordUser2(IN PUNICODE_STRING ServerName, IN PUNICODE_STRING UserName, IN PUNICODE_STRING OldPassword, IN PUNICODE_STRING NewPassword);
NTSTATUSNTAPISamChangePasswordUser3(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);
NTSTATUSNTAPISamCloseHandle(IN SAM_HANDLE SamHandle);
NTSTATUSNTAPISamConnect(IN OUT PUNICODE_STRING ServerName OPTIONAL, OUT PSAM_HANDLE ServerHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes);
NTSTATUSNTAPISamCreateAliasInDomain(IN SAM_HANDLE DomainHandle, IN PUNICODE_STRING AccountName, IN ACCESS_MASK DesiredAccess, OUT PSAM_HANDLE AliasHandle, OUT PULONG RelativeId);
NTSTATUSNTAPISamCreateGroupInDomain(IN SAM_HANDLE DomainHandle, IN PUNICODE_STRING AccountName, IN ACCESS_MASK DesiredAccess, OUT PSAM_HANDLE GroupHandle, OUT PULONG RelativeId);
NTSTATUSNTAPISamCreateUser2InDomain(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);
NTSTATUSNTAPISamCreateUserInDomain(IN SAM_HANDLE DomainHandle, IN PUNICODE_STRING AccountName, IN ACCESS_MASK DesiredAccess, OUT PSAM_HANDLE UserHandle, OUT PULONG RelativeId);
NTSTATUSNTAPISamDeleteAlias(IN SAM_HANDLE AliasHandle);
NTSTATUSNTAPISamDeleteGroup(IN SAM_HANDLE GroupHandle);
NTSTATUSNTAPISamDeleteUser(IN SAM_HANDLE UserHandle);
NTSTATUSNTAPISamEnumerateAliasesInDomain(IN SAM_HANDLE DomainHandle, IN OUT PSAM_ENUMERATE_HANDLE EnumerationContext, OUT PVOID *Buffer, IN ULONG PreferedMaximumLength, OUT PULONG CountReturned);
NTSTATUSNTAPISamEnumerateDomainsInSamServer(IN SAM_HANDLE ServerHandle, IN OUT PSAM_ENUMERATE_HANDLE EnumerationContext, OUT PVOID *Buffer, IN ULONG PreferedMaximumLength, OUT PULONG CountReturned);
NTSTATUSNTAPISamEnumerateGroupsInDomain(IN SAM_HANDLE DomainHandle, IN OUT PSAM_ENUMERATE_HANDLE EnumerationContext, IN PVOID *Buffer, IN ULONG PreferedMaximumLength, OUT PULONG CountReturned);
NTSTATUSNTAPISamEnumerateUsersInDomain(IN SAM_HANDLE DomainHandle, IN OUT PSAM_ENUMERATE_HANDLE EnumerationContext, IN ULONG UserAccountControl, OUT PVOID *Buffer, IN ULONG PreferedMaximumLength, OUT PULONG CountReturned);
NTSTATUSNTAPISamFreeMemory(IN PVOID Buffer);
NTSTATUSNTAPISamGetAliasMembership(IN SAM_HANDLE DomainHandle, IN ULONG PassedCount, IN PSID *Sids, OUT PULONG MembershipCount, OUT PULONG *Aliases);
NTSTATUSNTAPISamGetCompatibilityMode(IN SAM_HANDLE ObjectHandle, OUT PULONG Mode);
NTSTATUSNTAPISamGetDisplayEnumerationIndex(IN SAM_HANDLE DomainHandle, IN DOMAIN_DISPLAY_INFORMATION DisplayInformation, IN PUNICODE_STRING Prefix, OUT PULONG Index);
NTSTATUSNTAPISamGetGroupsForUser(IN SAM_HANDLE UserHandle, OUT PGROUP_MEMBERSHIP *Groups, OUT PULONG MembershipCount);
NTSTATUSNTAPISamGetMembersInAlias(IN SAM_HANDLE AliasHandle, OUT PSID **MemberIds, OUT PULONG MemberCount);
NTSTATUSNTAPISamGetMembersInGroup(IN SAM_HANDLE GroupHandle, OUT PULONG *MemberIds, OUT PULONG *Attributes, OUT PULONG MemberCount);
NTSTATUSNTAPISamLookupDomainInSamServer(IN SAM_HANDLE ServerHandle, IN PUNICODE_STRING Name, OUT PSID *DomainId);
NTSTATUSNTAPISamLookupIdsInDomain(IN SAM_HANDLE DomainHandle, IN ULONG Count, IN PULONG RelativeIds, OUT PUNICODE_STRING *Names, OUT PSID_NAME_USE *Use OPTIONAL);
NTSTATUSNTAPISamLookupNamesInDomain(IN SAM_HANDLE DomainHandle, IN ULONG Count, IN PUNICODE_STRING Names, OUT PULONG *RelativeIds, OUT PSID_NAME_USE *Use);
NTSTATUSNTAPISamOpenAlias(IN SAM_HANDLE DomainHandle, IN ACCESS_MASK DesiredAccess, IN ULONG AliasId, OUT PSAM_HANDLE AliasHandle);
NTSTATUSNTAPISamOpenDomain(IN SAM_HANDLE ServerHandle, IN ACCESS_MASK DesiredAccess, IN PSID DomainId, OUT PSAM_HANDLE DomainHandle);
NTSTATUSNTAPISamOpenGroup(IN SAM_HANDLE DomainHandle, IN ACCESS_MASK DesiredAccess, IN ULONG GroupId, OUT PSAM_HANDLE GroupHandle);
NTSTATUSNTAPISamOpenUser(IN SAM_HANDLE DomainHandle, IN ACCESS_MASK DesiredAccess, IN ULONG UserId, OUT PSAM_HANDLE UserHandle);
NTSTATUSNTAPISamQueryDisplayInformation(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);
NTSTATUSNTAPISamQueryInformationAlias(IN SAM_HANDLE AliasHandle, IN ALIAS_INFORMATION_CLASS AliasInformationClass, OUT PVOID *Buffer);
NTSTATUSNTAPISamQueryInformationDomain(IN SAM_HANDLE DomainHandle, IN DOMAIN_INFORMATION_CLASS DomainInformationClass, OUT PVOID *Buffer);
NTSTATUSNTAPISamQueryInformationGroup(IN SAM_HANDLE GroupHandle, IN GROUP_INFORMATION_CLASS GroupInformationClass, OUT PVOID *Buffer);
NTSTATUSNTAPISamQueryInformationUser(IN SAM_HANDLE UserHandle, IN USER_INFORMATION_CLASS UserInformationClass, OUT PVOID *Buffer);
NTSTATUSNTAPISamQuerySecurityObject(IN SAM_HANDLE ObjectHandle, IN SECURITY_INFORMATION SecurityInformation, OUT PSECURITY_DESCRIPTOR *SecurityDescriptor);
NTSTATUSNTAPISamRemoveMemberFromAlias(IN SAM_HANDLE AliasHandle, IN PSID MemberId);
NTSTATUSNTAPISamRemoveMemberFromForeignDomain(IN SAM_HANDLE DomainHandle, IN PSID MemberId);
NTSTATUSNTAPISamRemoveMemberFromGroup(IN SAM_HANDLE GroupHandle, IN ULONG MemberId);
NTSTATUSNTAPISamRemoveMultipleMembersFromAlias(IN SAM_HANDLE AliasHandle, IN PSID *MemberIds, IN ULONG MemberCount);
NTSTATUSNTAPISamRidToSid(IN SAM_HANDLE ObjectHandle, IN ULONG Rid, OUT PSID *Sid);
NTSTATUSNTAPISamSetInformationAlias(IN SAM_HANDLE AliasHandle, IN ALIAS_INFORMATION_CLASS AliasInformationClass, IN PVOID Buffer);
NTSTATUSNTAPISamSetInformationDomain(IN SAM_HANDLE DomainHandle, IN DOMAIN_INFORMATION_CLASS DomainInformationClass, IN PVOID Buffer);
NTSTATUSNTAPISamSetInformationGroup(IN SAM_HANDLE GroupHandle, IN GROUP_INFORMATION_CLASS GroupInformationClass, IN PVOID Buffer);
NTSTATUSNTAPISamSetInformationUser(IN SAM_HANDLE UserHandle, IN USER_INFORMATION_CLASS UserInformationClass, IN PVOID Buffer);
NTSTATUSNTAPISamSetMemberAttributesOfGroup(IN SAM_HANDLE GroupHandle, IN ULONG MemberId, IN ULONG Attributes);
NTSTATUSNTAPISamSetSecurityObject(IN SAM_HANDLE ObjectHandle, IN SECURITY_INFORMATION SecurityInformation, IN PSECURITY_DESCRIPTOR SecurityDescriptor);
NTSTATUSNTAPISamShutdownSamServer(IN SAM_HANDLE ServerHandle);
#ifdef __cplusplus}#endif
#endif /* _NTSAM_ */