[SAMSRV]
[reactos.git] / reactos / include / ddk / ntsam.h
1
2 #ifndef _NTSAM_
3 #define _NTSAM_
4
5 #ifdef __cplusplus
6 extern "C" {
7 #endif
8
9 #define ALIAS_ADD_MEMBER 0x00000001
10 #define ALIAS_REMOVE_MEMBER 0x00000002
11 #define ALIAS_LIST_MEMBERS 0x00000004
12 #define ALIAS_READ_INFORMATION 0x00000008
13 #define ALIAS_WRITE_ACCOUNT 0x00000010
14
15 #define ALIAS_READ (STANDARD_RIGHTS_READ |\
16 ALIAS_LIST_MEMBERS)
17
18 #define ALIAS_WRITE (STANDARD_RIGHTS_WRITE |\
19 ALIAS_ADD_MEMBER |\
20 ALIAS_REMOVE_MEMBER |\
21 ALIAS_WRITE_ACCOUNT)
22
23 #define ALIAS_EXECUTE (STANDARD_RIGHTS_EXECUTE |\
24 ALIAS_READ_INFORMATION)
25
26 #define ALIAS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\
27 ALIAS_ADD_MEMBER |\
28 ALIAS_REMOVE_MEMBER |\
29 ALIAS_LIST_MEMBERS |\
30 ALIAS_READ_INFORMATION |\
31 ALIAS_WRITE_ACCOUNT)
32
33 #define DOMAIN_READ_PASSWORD_PARAMETERS 0x00000001
34 #define DOMAIN_WRITE_PASSWORD_PARAMS 0x00000002
35 #define DOMAIN_READ_OTHER_PARAMETERS 0x00000004
36 #define DOMAIN_WRITE_OTHER_PARAMETERS 0x00000008
37 #define DOMAIN_CREATE_USER 0x00000010
38 #define DOMAIN_CREATE_GROUP 0x00000020
39 #define DOMAIN_CREATE_ALIAS 0x00000040
40 #define DOMAIN_GET_ALIAS_MEMBERSHIP 0x00000080
41 #define DOMAIN_LIST_ACCOUNTS 0x00000100
42 #define DOMAIN_LOOKUP 0x00000200
43 #define DOMAIN_ADMINISTER_SERVER 0x00000400
44
45 #define DOMAIN_READ (STANDARD_RIGHTS_READ |\
46 DOMAIN_READ_OTHER_PARAMETERS |\
47 DOMAIN_GET_ALIAS_MEMBERSHIP)
48
49 #define DOMAIN_WRITE (STANDARD_RIGHTS_WRITE |\
50 DOMAIN_WRITE_PASSWORD_PARAMS |\
51 DOMAIN_WRITE_OTHER_PARAMETERS |\
52 DOMAIN_CREATE_USER |\
53 DOMAIN_CREATE_GROUP |\
54 DOMAIN_CREATE_ALIAS |\
55 DOMAIN_ADMINISTER_SERVER)
56
57 #define DOMAIN_EXECUTE (STANDARD_RIGHTS_EXECUTE |\
58 DOMAIN_READ_PASSWORD_PARAMETERS |\
59 DOMAIN_LIST_ACCOUNTS |\
60 DOMAIN_LOOKUP)
61
62 #define DOMAIN_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\
63 DOMAIN_READ_PASSWORD_PARAMETERS |\
64 DOMAIN_WRITE_PASSWORD_PARAMS |\
65 DOMAIN_READ_OTHER_PARAMETERS |\
66 DOMAIN_WRITE_OTHER_PARAMETERS |\
67 DOMAIN_CREATE_USER |\
68 DOMAIN_CREATE_GROUP |\
69 DOMAIN_CREATE_ALIAS |\
70 DOMAIN_GET_ALIAS_MEMBERSHIP |\
71 DOMAIN_LIST_ACCOUNTS |\
72 DOMAIN_LOOKUP |\
73 DOMAIN_ADMINISTER_SERVER)
74
75 #define GROUP_READ_INFORMATION 0x00000001
76 #define GROUP_WRITE_ACCOUNT 0x00000002
77 #define GROUP_ADD_MEMBER 0x00000004
78 #define GROUP_REMOVE_MEMBER 0x00000008
79 #define GROUP_LIST_MEMBERS 0x00000010
80
81 #define GROUP_READ (STANDARD_RIGHTS_READ |\
82 GROUP_LIST_MEMBERS)
83
84 #define GROUP_WRITE (STANDARD_RIGHTS_WRITE |\
85 GROUP_WRITE_ACCOUNT |\
86 GROUP_ADD_MEMBER |\
87 GROUP_REMOVE_MEMBER)
88
89 #define GROUP_EXECUTE (STANDARD_RIGHTS_EXECUTE |\
90 GROUP_READ_INFORMATION)
91
92 #define GROUP_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\
93 GROUP_READ_INFORMATION |\
94 GROUP_WRITE_ACCOUNT |\
95 GROUP_ADD_MEMBER |\
96 GROUP_REMOVE_MEMBER |\
97 GROUP_LIST_MEMBERS)
98
99 #define SAM_SERVER_CONNECT 0x00000001
100 #define SAM_SERVER_SHUTDOWN 0x00000002
101 #define SAM_SERVER_INITIALIZE 0x00000004
102 #define SAM_SERVER_CREATE_DOMAIN 0x00000008
103 #define SAM_SERVER_ENUMERATE_DOMAINS 0x00000010
104 #define SAM_SERVER_LOOKUP_DOMAIN 0x00000020
105
106 #define SAM_SERVER_READ (STANDARD_RIGHTS_READ |\
107 SAM_SERVER_ENUMERATE_DOMAINS)
108
109 #define SAM_SERVER_WRITE (STANDARD_RIGHTS_WRITE |\
110 SAM_SERVER_SHUTDOWN |\
111 SAM_SERVER_INITIALIZE |\
112 SAM_SERVER_CREATE_DOMAIN)
113
114 #define SAM_SERVER_EXECUTE (STANDARD_RIGHTS_EXECUTE |\
115 SAM_SERVER_CONNECT |\
116 SAM_SERVER_LOOKUP_DOMAIN)
117
118 #define SAM_SERVER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\
119 SAM_SERVER_CONNECT |\
120 SAM_SERVER_SHUTDOWN |\
121 SAM_SERVER_INITIALIZE |\
122 SAM_SERVER_CREATE_DOMAIN |\
123 SAM_SERVER_ENUMERATE_DOMAINS |\
124 SAM_SERVER_LOOKUP_DOMAIN)
125
126 #define USER_READ_GENERAL 0x00000001
127 #define USER_READ_PREFERENCES 0x00000002
128 #define USER_WRITE_PREFERENCES 0x00000004
129 #define USER_READ_LOGON 0x00000008
130 #define USER_READ_ACCOUNT 0x00000010
131 #define USER_WRITE_ACCOUNT 0x00000020
132 #define USER_CHANGE_PASSWORD 0x00000040
133 #define USER_FORCE_PASSWORD_CHANGE 0x00000080
134 #define USER_LIST_GROUPS 0x00000100
135 #define USER_READ_GROUP_INFORMATION 0x00000200
136 #define USER_WRITE_GROUP_INFORMATION 0x00000400
137
138 #define USER_READ (STANDARD_RIGHTS_READ |\
139 USER_READ_PREFERENCES |\
140 USER_READ_LOGON |\
141 USER_READ_ACCOUNT |\
142 USER_LIST_GROUPS |\
143 USER_READ_GROUP_INFORMATION)
144
145 #define USER_WRITE (STANDARD_RIGHTS_WRITE |\
146 USER_WRITE_PREFERENCES |\
147 USER_CHANGE_PASSWORD)
148
149 #define USER_EXECUTE (STANDARD_RIGHTS_EXECUTE |\
150 USER_READ_GENERAL |\
151 USER_CHANGE_PASSWORD)
152
153 #define USER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\
154 USER_READ_GENERAL |\
155 USER_READ_PREFERENCES |\
156 USER_WRITE_PREFERENCES |\
157 USER_READ_LOGON |\
158 USER_READ_ACCOUNT |\
159 USER_WRITE_ACCOUNT |\
160 USER_CHANGE_PASSWORD |\
161 USER_FORCE_PASSWORD_CHANGE |\
162 USER_LIST_GROUPS |\
163 USER_READ_GROUP_INFORMATION |\
164 USER_WRITE_GROUP_INFORMATION)
165
166 typedef PVOID SAM_HANDLE, *PSAM_HANDLE;
167 typedef ULONG SAM_ENUMERATE_HANDLE, *PSAM_ENUMERATE_HANDLE;
168
169 typedef struct _SAM_RID_ENUMERATION
170 {
171 ULONG RelativeId;
172 UNICODE_STRING Name;
173 } SAM_RID_ENUMERATION, *PSAM_RID_ENUMERATION;
174
175 typedef struct _SAM_SID_ENUMERATION
176 {
177 PSID Sid;
178 UNICODE_STRING Name;
179 } SAM_SID_ENUMERATION, *PSAM_SID_ENUMERATION;
180
181 typedef enum _ALIAS_INFORMATION_CLASS
182 {
183 AliasGeneralInformation = 1,
184 AliasNameInformation,
185 AliasAdminCommentInformation
186 } ALIAS_INFORMATION_CLASS, *PALIAS_INFORMATION_CLASS;
187
188 typedef struct _SAMPR_ALIAS_GENERAL_INFORMATION
189 {
190 UNICODE_STRING Name;
191 ULONG MemberCount;
192 UNICODE_STRING AdminComment;
193 } SAMPR_ALIAS_GENERAL_INFORMATION, *PSAMPR_ALIAS_GENERAL_INFORMATION;
194
195 typedef struct _SAMPR_ALIAS_NAME_INFORMATION
196 {
197 UNICODE_STRING Name;
198 } SAMPR_ALIAS_NAME_INFORMATION, *PSAMPR_ALIAS_NAME_INFORMATION;
199
200 typedef struct _SAMPR_ALIAS_ADM_COMMENT_INFORMATION
201 {
202 UNICODE_STRING AdminComment;
203 } SAMPR_ALIAS_ADM_COMMENT_INFORMATION, *PSAMPR_ALIAS_ADM_COMMENT_INFORMATION;
204
205
206 typedef enum _DOMAIN_INFORMATION_CLASS
207 {
208 DomainPasswordInformation = 1,
209 DomainGeneralInformation,
210 DomainLogoffInformation,
211 DomainOemInformation,
212 DomainNameInformation,
213 DomainReplicationInformation,
214 DomainServerRoleInformation,
215 DomainModifiedInformation,
216 DomainStateInformation,
217 DomainUasInformation,
218 DomainGeneralInformation2,
219 DomainLockoutInformation,
220 DomainModifiedInformation2
221 } DOMAIN_INFORMATION_CLASS;
222
223 typedef enum _DOMAIN_SERVER_ENABLE_STATE
224 {
225 DomainServerEnabled = 1,
226 DomainServerDisabled
227 } DOMAIN_SERVER_ENABLE_STATE, *PDOMAIN_SERVER_ENABLE_STATE;
228
229 typedef enum _DOMAIN_SERVER_ROLE
230 {
231 DomainServerRoleBackup = 2,
232 DomainServerRolePrimary
233 } DOMAIN_SERVER_ROLE, *PDOMAIN_SERVER_ROLE;
234
235 typedef struct _DOMAIN_NAME_INFORMATION
236 {
237 UNICODE_STRING DomainName;
238 } DOMAIN_NAME_INFORMATION, *PDOMAIN_NAME_INFORMATION;
239
240 typedef enum _USER_INFORMATION_CLASS
241 {
242 UserGeneralInformation = 1,
243 UserPreferencesInformation,
244 UserLogonInformation,
245 UserLogonHoursInformation,
246 UserAccountInformation,
247 UserNameInformation,
248 UserAccountNameInformation,
249 UserFullNameInformation,
250 UserPrimaryGroupInformation,
251 UserHomeInformation,
252 UserScriptInformation,
253 UserProfileInformation,
254 UserAdminCommentInformation,
255 UserWorkStationsInformation,
256 UserSetPasswordInformation,
257 UserControlInformation,
258 UserExpiresInformation,
259 UserInternal1Information,
260 UserInternal2Information,
261 UserParametersInformation,
262 UserAllInformation,
263 UserInternal3Information,
264 UserInternal4Information,
265 UserInternal5Information,
266 UserInternal4InformationNew,
267 UserInternal5InformationNew,
268 UserInternal6Information,
269 UserExtendedInformation,
270 UserLogonUIInformation,
271 } USER_INFORMATION_CLASS, *PUSER_INFORMATION_CLASS;
272
273 typedef struct _USER_SET_PASSWORD_INFORMATION
274 {
275 UNICODE_STRING Password;
276 BOOLEAN PasswordExpired;
277 } USER_SET_PASSWORD_INFORMATION, *PUSER_SET_PASSWORD_INFORMATION;
278
279
280 NTSTATUS
281 NTAPI
282 SamAddMemberToAlias(IN SAM_HANDLE AliasHandle,
283 IN PSID MemberId);
284
285 NTSTATUS
286 NTAPI
287 SamCloseHandle(IN SAM_HANDLE SamHandle);
288
289 NTSTATUS
290 NTAPI
291 SamConnect(IN OUT PUNICODE_STRING ServerName,
292 OUT PSAM_HANDLE ServerHandle,
293 IN ACCESS_MASK DesiredAccess,
294 IN POBJECT_ATTRIBUTES ObjectAttributes);
295
296 NTSTATUS
297 NTAPI
298 SamCreateAliasInDomain(IN SAM_HANDLE DomainHandle,
299 IN PUNICODE_STRING AccountName,
300 IN ACCESS_MASK DesiredAccess,
301 OUT PSAM_HANDLE AliasHandle,
302 OUT PULONG RelativeId);
303
304 NTSTATUS
305 NTAPI
306 SamCreateUserInDomain(IN SAM_HANDLE DomainHandle,
307 IN PUNICODE_STRING AccountName,
308 IN ACCESS_MASK DesiredAccess,
309 OUT PSAM_HANDLE UserHandle,
310 OUT PULONG RelativeId);
311
312 NTSTATUS
313 NTAPI
314 SamEnumerateAliasesInDomain(IN SAM_HANDLE DomainHandle,
315 IN OUT PSAM_ENUMERATE_HANDLE EnumerationContext,
316 OUT PVOID *Buffer,
317 IN ULONG PreferedMaximumLength,
318 OUT PULONG CountReturned);
319
320 NTSTATUS
321 NTAPI
322 SamEnumerateDomainsInSamServer(IN SAM_HANDLE ServerHandle,
323 IN OUT PSAM_ENUMERATE_HANDLE EnumerationContext,
324 OUT PVOID *Buffer,
325 IN ULONG PreferedMaximumLength,
326 OUT PULONG CountReturned);
327
328 NTSTATUS
329 NTAPI
330 SamFreeMemory(IN PVOID Buffer);
331
332 NTSTATUS
333 NTAPI
334 SamGetAliasMembership(IN SAM_HANDLE DomainHandle,
335 IN ULONG PassedCount,
336 IN PSID *Sids,
337 OUT PULONG MembershipCount,
338 OUT PULONG *Aliases);
339
340 NTSTATUS
341 NTAPI
342 SamGetMembersInAlias(IN SAM_HANDLE AliasHandle,
343 OUT PSID **MemberIds,
344 OUT PULONG MemberCount);
345
346 NTSTATUS
347 NTAPI
348 SamLookupDomainInSamServer(IN SAM_HANDLE ServerHandle,
349 IN PUNICODE_STRING Name,
350 OUT PSID *DomainId);
351
352 NTSTATUS
353 NTAPI
354 SamLookupNamesInDomain(IN SAM_HANDLE DomainHandle,
355 IN ULONG Count,
356 IN PUNICODE_STRING Names,
357 OUT PULONG *RelativeIds,
358 OUT PSID_NAME_USE *Use);
359
360 NTSTATUS
361 NTAPI
362 SamOpenAlias(IN SAM_HANDLE DomainHandle,
363 IN ACCESS_MASK DesiredAccess,
364 IN ULONG AliasId,
365 OUT PSAM_HANDLE AliasHandle);
366
367 NTSTATUS
368 NTAPI
369 SamOpenDomain(IN SAM_HANDLE ServerHandle,
370 IN ACCESS_MASK DesiredAccess,
371 IN PSID DomainId,
372 OUT PSAM_HANDLE DomainHandle);
373
374 NTSTATUS
375 NTAPI
376 SamOpenUser(IN SAM_HANDLE DomainHandle,
377 IN ACCESS_MASK DesiredAccess,
378 IN ULONG UserId,
379 OUT PSAM_HANDLE UserHandle);
380
381 NTSTATUS
382 NTAPI
383 SamQueryInformationAlias(IN SAM_HANDLE AliasHandle,
384 IN ALIAS_INFORMATION_CLASS AliasInformationClass,
385 OUT PVOID *Buffer);
386
387 NTSTATUS
388 NTAPI
389 SamQueryInformationDomain(IN SAM_HANDLE DomainHandle,
390 IN DOMAIN_INFORMATION_CLASS DomainInformationClass,
391 OUT PVOID *Buffer);
392
393 NTSTATUS
394 NTAPI
395 SamQueryInformationUser(IN SAM_HANDLE UserHandle,
396 IN USER_INFORMATION_CLASS UserInformationClass,
397 OUT PVOID *Buffer);
398
399 NTSTATUS
400 NTAPI
401 SamRemoveMemberFromAlias(IN SAM_HANDLE AliasHandle,
402 IN PSID MemberId);
403
404 NTSTATUS
405 NTAPI
406 SamSetInformationAlias(IN SAM_HANDLE AliasHandle,
407 IN ALIAS_INFORMATION_CLASS AliasInformationClass,
408 IN PVOID Buffer);
409
410 NTSTATUS
411 NTAPI
412 SamSetInformationDomain(IN SAM_HANDLE DomainHandle,
413 IN DOMAIN_INFORMATION_CLASS DomainInformationClass,
414 IN PVOID DomainInformation);
415
416 NTSTATUS
417 NTAPI
418 SamSetInformationUser(IN SAM_HANDLE UserHandle,
419 IN USER_INFORMATION_CLASS UserInformationClass,
420 IN PVOID Buffer);
421
422 NTSTATUS
423 NTAPI
424 SamShutdownSamServer(IN SAM_HANDLE ServerHandle);
425
426
427 #ifdef __cplusplus
428 }
429 #endif
430
431 #endif /* _NTSAM_ */