9 #define ALIAS_ADD_MEMBER 1
10 #define ALIAS_REMOVE_MEMBER 2
11 #define ALIAS_LIST_MEMBERS 4
12 #define ALIAS_READ_INFORMATION 8
13 #define ALIAS_WRITE_ACCOUNT 16
15 #define DOMAIN_READ_PASSWORD_PARAMETERS 1
16 #define DOMAIN_WRITE_PASSWORD_PARAMS 2
17 #define DOMAIN_READ_OTHER_PARAMETERS 4
18 #define DOMAIN_WRITE_OTHER_PARAMETERS 8
19 #define DOMAIN_CREATE_USER 16
20 #define DOMAIN_CREATE_GROUP 32
21 #define DOMAIN_CREATE_ALIAS 64
22 #define DOMAIN_GET_ALIAS_MEMBERSHIP 128
23 #define DOMAIN_LIST_ACCOUNTS 256
24 #define DOMAIN_LOOKUP 512
25 #define DOMAIN_ADMINISTER_SERVER 1024
27 #define SAM_SERVER_CONNECT 1
28 #define SAM_SERVER_SHUTDOWN 2
29 #define SAM_SERVER_INITIALIZE 4
30 #define SAM_SERVER_CREATE_DOMAIN 8
31 #define SAM_SERVER_ENUMERATE_DOMAINS 16
32 #define SAM_SERVER_LOOKUP_DOMAIN 32
34 #define USER_READ_GENERAL 1
35 #define USER_READ_PREFERENCES 2
36 #define USER_WRITE_PREFERENCES 4
37 #define USER_READ_LOGON 8
38 #define USER_READ_ACCOUNT 16
39 #define USER_WRITE_ACCOUNT 32
40 #define USER_CHANGE_PASSWORD 64
41 #define USER_FORCE_PASSWORD_CHANGE 128
42 #define USER_LIST_GROUPS 256
43 #define USER_READ_GROUP_INFORMATION 512
44 #define USER_WRITE_GROUP_INFORMATION 1024
46 typedef PVOID SAM_HANDLE
, *PSAM_HANDLE
;
47 typedef ULONG SAM_ENUMERATE_HANDLE
, *PSAM_ENUMERATE_HANDLE
;
49 typedef struct _SAM_RID_ENUMERATION
53 } SAM_RID_ENUMERATION
, *PSAM_RID_ENUMERATION
;
55 typedef struct _SAM_SID_ENUMERATION
59 } SAM_SID_ENUMERATION
, *PSAM_SID_ENUMERATION
;
61 typedef enum _ALIAS_INFORMATION_CLASS
63 AliasGeneralInformation
= 1,
65 AliasAdminCommentInformation
66 } ALIAS_INFORMATION_CLASS
, *PALIAS_INFORMATION_CLASS
;
68 typedef struct _SAMPR_ALIAS_GENERAL_INFORMATION
72 UNICODE_STRING AdminComment
;
73 } SAMPR_ALIAS_GENERAL_INFORMATION
, *PSAMPR_ALIAS_GENERAL_INFORMATION
;
75 typedef struct _SAMPR_ALIAS_NAME_INFORMATION
78 } SAMPR_ALIAS_NAME_INFORMATION
, *PSAMPR_ALIAS_NAME_INFORMATION
;
80 typedef struct _SAMPR_ALIAS_ADM_COMMENT_INFORMATION
82 UNICODE_STRING AdminComment
;
83 } SAMPR_ALIAS_ADM_COMMENT_INFORMATION
, *PSAMPR_ALIAS_ADM_COMMENT_INFORMATION
;
86 typedef enum _DOMAIN_INFORMATION_CLASS
88 DomainPasswordInformation
= 1,
89 DomainGeneralInformation
,
90 DomainLogoffInformation
,
92 DomainNameInformation
,
93 DomainReplicationInformation
,
94 DomainServerRoleInformation
,
95 DomainModifiedInformation
,
96 DomainStateInformation
,
98 DomainGeneralInformation2
,
99 DomainLockoutInformation
,
100 DomainModifiedInformation2
101 } DOMAIN_INFORMATION_CLASS
;
103 typedef struct _DOMAIN_NAME_INFORMATION
105 UNICODE_STRING DomainName
;
106 } DOMAIN_NAME_INFORMATION
, *PDOMAIN_NAME_INFORMATION
;
108 typedef enum _USER_INFORMATION_CLASS
110 UserGeneralInformation
= 1,
111 UserPreferencesInformation
,
112 UserLogonInformation
,
113 UserLogonHoursInformation
,
114 UserAccountInformation
,
116 UserAccountNameInformation
,
117 UserFullNameInformation
,
118 UserPrimaryGroupInformation
,
120 UserScriptInformation
,
121 UserProfileInformation
,
122 UserAdminCommentInformation
,
123 UserWorkStationsInformation
,
124 UserSetPasswordInformation
,
125 UserControlInformation
,
126 UserExpiresInformation
,
127 UserInternal1Information
,
128 UserInternal2Information
,
129 UserParametersInformation
,
131 UserInternal3Information
,
132 UserInternal4Information
,
133 UserInternal5Information
,
134 UserInternal4InformationNew
,
135 UserInternal5InformationNew
,
136 UserInternal6Information
,
137 UserExtendedInformation
,
138 UserLogonUIInformation
,
139 } USER_INFORMATION_CLASS
, *PUSER_INFORMATION_CLASS
;
141 typedef struct _USER_SET_PASSWORD_INFORMATION
143 UNICODE_STRING Password
;
144 BOOLEAN PasswordExpired
;
145 } USER_SET_PASSWORD_INFORMATION
, *PUSER_SET_PASSWORD_INFORMATION
;
150 SamAddMemberToAlias(IN SAM_HANDLE AliasHandle
,
155 SamCloseHandle(IN SAM_HANDLE SamHandle
);
159 SamConnect(IN OUT PUNICODE_STRING ServerName
,
160 OUT PSAM_HANDLE ServerHandle
,
161 IN ACCESS_MASK DesiredAccess
,
162 IN POBJECT_ATTRIBUTES ObjectAttributes
);
166 SamCreateAliasInDomain(IN SAM_HANDLE DomainHandle
,
167 IN PUNICODE_STRING AccountName
,
168 IN ACCESS_MASK DesiredAccess
,
169 OUT PSAM_HANDLE AliasHandle
,
170 OUT PULONG RelativeId
);
174 SamCreateUserInDomain(IN SAM_HANDLE DomainHandle
,
175 IN PUNICODE_STRING AccountName
,
176 IN ACCESS_MASK DesiredAccess
,
177 OUT PSAM_HANDLE UserHandle
,
178 OUT PULONG RelativeId
);
182 SamEnumerateAliasesInDomain(IN SAM_HANDLE DomainHandle
,
183 IN OUT PSAM_ENUMERATE_HANDLE EnumerationContext
,
185 IN ULONG PreferedMaximumLength
,
186 OUT PULONG CountReturned
);
190 SamEnumerateDomainsInSamServer(IN SAM_HANDLE ServerHandle
,
191 IN OUT PSAM_ENUMERATE_HANDLE EnumerationContext
,
193 IN ULONG PreferedMaximumLength
,
194 OUT PULONG CountReturned
);
198 SamFreeMemory(IN PVOID Buffer
);
202 SamGetAliasMembership(IN SAM_HANDLE DomainHandle
,
203 IN ULONG PassedCount
,
205 OUT PULONG MembershipCount
,
206 OUT PULONG
*Aliases
);
210 SamGetMembersInAlias(IN SAM_HANDLE AliasHandle
,
211 OUT PSID
**MemberIds
,
212 OUT PULONG MemberCount
);
216 SamLookupDomainInSamServer(IN SAM_HANDLE ServerHandle
,
217 IN PUNICODE_STRING Name
,
222 SamLookupNamesInDomain(IN SAM_HANDLE DomainHandle
,
224 IN PUNICODE_STRING Names
,
225 OUT PULONG
*RelativeIds
,
226 OUT PSID_NAME_USE
*Use
);
230 SamOpenAlias(IN SAM_HANDLE DomainHandle
,
231 IN ACCESS_MASK DesiredAccess
,
233 OUT PSAM_HANDLE AliasHandle
);
237 SamOpenDomain(IN SAM_HANDLE ServerHandle
,
238 IN ACCESS_MASK DesiredAccess
,
240 OUT PSAM_HANDLE DomainHandle
);
244 SamOpenUser(IN SAM_HANDLE DomainHandle
,
245 IN ACCESS_MASK DesiredAccess
,
247 OUT PSAM_HANDLE UserHandle
);
251 SamQueryInformationAlias(IN SAM_HANDLE AliasHandle
,
252 IN ALIAS_INFORMATION_CLASS AliasInformationClass
,
257 SamQueryInformationDomain(IN SAM_HANDLE DomainHandle
,
258 IN DOMAIN_INFORMATION_CLASS DomainInformationClass
,
263 SamQueryInformationUser(IN SAM_HANDLE UserHandle
,
264 IN USER_INFORMATION_CLASS UserInformationClass
,
269 SamSetInformationAlias(IN SAM_HANDLE AliasHandle
,
270 IN ALIAS_INFORMATION_CLASS AliasInformationClass
,
275 SamSetInformationDomain(IN SAM_HANDLE DomainHandle
,
276 IN DOMAIN_INFORMATION_CLASS DomainInformationClass
,
277 IN PVOID DomainInformation
);
281 SamSetInformationUser(IN SAM_HANDLE UserHandle
,
282 IN USER_INFORMATION_CLASS UserInformationClass
,
287 SamShutdownSamServer(IN SAM_HANDLE ServerHandle
);