[BASESRV-CONSRV-WINSRV]
[reactos.git] / 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 /* User account control bits */
167 #define USER_ACCOUNT_DISABLED 0x00000001
168 #define USER_HOME_DIRECTORY_REQUIRED 0x00000002
169 #define USER_PASSWORD_NOT_REQUIRED 0x00000004
170 #define USER_TEMP_DUPLICATE_ACCOUNT 0x00000008
171 #define USER_NORMAL_ACCOUNT 0x00000010
172 #define USER_MNS_LOGON_ACCOUNT 0x00000020
173 #define USER_INTERDOMAIN_TRUST_ACCOUNT 0x00000040
174 #define USER_WORKSTATION_TRUST_ACCOUNT 0x00000080
175 #define USER_SERVER_TRUST_ACCOUNT 0x00000100
176 #define USER_DONT_EXPIRE_PASSWORD 0x00000200
177 #define USER_ACCOUNT_AUTO_LOCKED 0x00000400
178 #define USER_ENCRYPTED_TEXT_PASSWORD_ALLOWED 0x00000800
179 #define USER_SMARTCARD_REQUIRED 0x00001000
180 #define USER_TRUSTED_FOR_DELEGATION 0x00002000
181 #define USER_NOT_DELEGATED 0x00004000
182 #define USER_USE_DES_KEY_ONLY 0x00008000
183 #define USER_DONT_REQUIRE_PREAUTH 0x00010000
184 #define USER_PASSWORD_EXPIRED 0x00020000
185 #define USER_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION 0x00040000
186 #define USER_NO_AUTH_DATA_REQUIRED 0x00080000
187 #define USER_PARTIAL_SECRETS_ACCOUNT 0x00100000
188 #define USER_USE_AES_KEYS 0x00200000
189
190 /* Constants used by LOGON_HOURS.UnitsPerWeek */
191 #define SAM_DAYS_PER_WEEK (7)
192 #define SAM_HOURS_PER_WEEK (24 * SAM_DAYS_PER_WEEK)
193 #define SAM_MINUTES_PER_WEEK (60 * SAM_HOURS_PER_WEEK)
194
195 /* Flags used by USER_ALL_INFORMATION.WhichField */
196 #define USER_ALL_USERNAME 0x00000001
197 #define USER_ALL_FULLNAME 0x00000002
198 #define USER_ALL_USERID 0x00000004
199 #define USER_ALL_PRIMARYGROUPID 0x00000008
200 #define USER_ALL_ADMINCOMMENT 0x00000010
201 #define USER_ALL_USERCOMMENT 0x00000020
202 #define USER_ALL_HOMEDIRECTORY 0x00000040
203 #define USER_ALL_HOMEDIRECTORYDRIVE 0x00000080
204 #define USER_ALL_SCRIPTPATH 0x00000100
205 #define USER_ALL_PROFILEPATH 0x00000200
206 #define USER_ALL_WORKSTATIONS 0x00000400
207 #define USER_ALL_LASTLOGON 0x00000800
208 #define USER_ALL_LASTLOGOFF 0x00001000
209 #define USER_ALL_LOGONHOURS 0x00002000
210 #define USER_ALL_BADPASSWORDCOUNT 0x00004000
211 #define USER_ALL_LOGONCOUNT 0x00008000
212 #define USER_ALL_PASSWORDCANCHANGE 0x00010000
213 #define USER_ALL_PASSWORDMUSTCHANGE 0x00020000
214 #define USER_ALL_PASSWORDLASTSET 0x00040000
215 #define USER_ALL_ACCOUNTEXPIRES 0x00080000
216 #define USER_ALL_USERACCOUNTCONTROL 0x00100000
217 #define USER_ALL_PARAMETERS 0x00200000
218 #define USER_ALL_COUNTRYCODE 0x00400000
219 #define USER_ALL_CODEPAGE 0x00800000
220 #define USER_ALL_NTPASSWORDPRESENT 0x01000000
221 #define USER_ALL_LMPASSWORDPRESENT 0x02000000
222 #define USER_ALL_PRIVATEDATA 0x04000000
223 #define USER_ALL_PASSWORDEXPIRED 0x08000000
224 #define USER_ALL_SECURITYDESCRIPTOR 0x10000000
225 #define USER_ALL_OWFPASSWORD 0x20000000
226 #define USER_ALL_UNDEFINED_MASK 0xC0000000
227
228 #define USER_ALL_READ_GENERAL_MASK 0x0000003F
229 #define USER_ALL_READ_LOGON_MASK 0x0003FFC0
230 #define USER_ALL_READ_ACCOUNT_MASK 0x003C0000
231 #define USER_ALL_READ_PREFERENCES_MASK 0x00C00000
232 #define USER_ALL_READ_TRUSTED_MASK 0x1F000000
233 #define USER_ALL_READ_CANT_MASK 0xC0000000
234
235 #define USER_ALL_WRITE_ACCOUNT_MASK 0x003827DB
236 #define USER_ALL_WRITE_PREFERENCES_MASK 0x00C00020
237 #define USER_ALL_WRITE_FORCE_PASSWORD_CHANGE_MASK 0x0B000000
238 #define USER_ALL_WRITE_TRUSTED_MASK 0x1404D800
239 #define USER_ALL_WRITE_CANT_MASK 0xC0030004
240
241 /* Values used by USER_PWD_CHANGE_FAILURE_INFORMATION.ExtendedFailureReason */
242 #define SAM_PWD_CHANGE_NO_ERROR 0
243 #define SAM_PWD_CHANGE_PASSWORD_TOO_SHORT 1
244 #define SAM_PWD_CHANGE_PWD_IN_HISTORY 2
245 #define SAM_PWD_CHANGE_USERNAME_IN_PASSWORD 3
246 #define SAM_PWD_CHANGE_FULLNAME_IN_PASSWORD 4
247 #define SAM_PWD_CHANGE_NOT_COMPLEX 5
248 #define SAM_PWD_CHANGE_MACHINE_PASSWORD_NOT_DEFAULT 6
249 #define SAM_PWD_CHANGE_FAILED_BY_FILTER 7
250 #define SAM_PWD_CHANGE_PASSWORD_TOO_LONG 8
251 #define SAM_PWD_CHANGE_FAILURE_REASON_MAX 8
252
253 /* Flags used by DOMAIN_PASSWORD_INFORMATION.PasswordProperties */
254 #define DOMAIN_PASSWORD_COMPLEX 0x00000001L
255 #define DOMAIN_PASSWORD_NO_ANON_CHANGE 0x00000002L
256 #define DOMAIN_PASSWORD_NO_CLEAR_CHANGE 0x00000004L
257 #define DOMAIN_LOCKOUT_ADMINS 0x00000008L
258 #define DOMAIN_PASSWORD_STORE_CLEARTEXT 0x00000010L
259 #define DOMAIN_REFUSE_PASSWORD_CHANGE 0x00000020L
260 #define DOMAIN_NO_LM_OWF_CHANGE 0x00000040L
261
262 typedef PVOID SAM_HANDLE, *PSAM_HANDLE;
263 typedef ULONG SAM_ENUMERATE_HANDLE, *PSAM_ENUMERATE_HANDLE;
264
265 typedef struct _SAM_RID_ENUMERATION
266 {
267 ULONG RelativeId;
268 UNICODE_STRING Name;
269 } SAM_RID_ENUMERATION, *PSAM_RID_ENUMERATION;
270
271 typedef struct _SAM_SID_ENUMERATION
272 {
273 PSID Sid;
274 UNICODE_STRING Name;
275 } SAM_SID_ENUMERATION, *PSAM_SID_ENUMERATION;
276
277 typedef enum _ALIAS_INFORMATION_CLASS
278 {
279 AliasGeneralInformation = 1,
280 AliasNameInformation,
281 AliasAdminCommentInformation
282 } ALIAS_INFORMATION_CLASS, *PALIAS_INFORMATION_CLASS;
283
284 typedef struct _ALIAS_GENERAL_INFORMATION
285 {
286 UNICODE_STRING Name;
287 ULONG MemberCount;
288 UNICODE_STRING AdminComment;
289 } ALIAS_GENERAL_INFORMATION, *PALIAS_GENERAL_INFORMATION;
290
291 typedef struct _ALIAS_NAME_INFORMATION
292 {
293 UNICODE_STRING Name;
294 } ALIAS_NAME_INFORMATION, *PALIAS_NAME_INFORMATION;
295
296 typedef struct _ALIAS_ADM_COMMENT_INFORMATION
297 {
298 UNICODE_STRING AdminComment;
299 } ALIAS_ADM_COMMENT_INFORMATION, *PALIAS_ADM_COMMENT_INFORMATION;
300
301
302 typedef enum _DOMAIN_INFORMATION_CLASS
303 {
304 DomainPasswordInformation = 1,
305 DomainGeneralInformation,
306 DomainLogoffInformation,
307 DomainOemInformation,
308 DomainNameInformation,
309 DomainReplicationInformation,
310 DomainServerRoleInformation,
311 DomainModifiedInformation,
312 DomainStateInformation,
313 DomainUasInformation,
314 DomainGeneralInformation2,
315 DomainLockoutInformation,
316 DomainModifiedInformation2
317 } DOMAIN_INFORMATION_CLASS;
318
319 typedef enum _DOMAIN_SERVER_ENABLE_STATE
320 {
321 DomainServerEnabled = 1,
322 DomainServerDisabled
323 } DOMAIN_SERVER_ENABLE_STATE, *PDOMAIN_SERVER_ENABLE_STATE;
324
325 typedef enum _DOMAIN_SERVER_ROLE
326 {
327 DomainServerRoleBackup = 2,
328 DomainServerRolePrimary
329 } DOMAIN_SERVER_ROLE, *PDOMAIN_SERVER_ROLE;
330
331 #ifndef _DOMAIN_PASSWORD_INFORMATION_DEFINED
332 #define _DOMAIN_PASSWORD_INFORMATION_DEFINED
333 typedef struct _DOMAIN_PASSWORD_INFORMATION
334 {
335 USHORT MinPasswordLength;
336 USHORT PasswordHistoryLength;
337 ULONG PasswordProperties;
338 LARGE_INTEGER MaxPasswordAge;
339 LARGE_INTEGER MinPasswordAge;
340 } DOMAIN_PASSWORD_INFORMATION, *PDOMAIN_PASSWORD_INFORMATION;
341 #endif
342
343 #include "pshpack4.h"
344 typedef struct _DOMAIN_GENERAL_INFORMATION
345 {
346 LARGE_INTEGER ForceLogoff;
347 UNICODE_STRING OemInformation;
348 UNICODE_STRING DomainName;
349 UNICODE_STRING ReplicaSourceNodeName;
350 LARGE_INTEGER DomainModifiedCount;
351 DOMAIN_SERVER_ENABLE_STATE DomainServerState;
352 DOMAIN_SERVER_ROLE DomainServerRole;
353 BOOLEAN UasCompatibilityRequired;
354 ULONG UserCount;
355 ULONG GroupCount;
356 ULONG AliasCount;
357 } DOMAIN_GENERAL_INFORMATION, *PDOMAIN_GENERAL_INFORMATION;
358 #include "poppack.h"
359
360 typedef struct _DOMAIN_LOGOFF_INFORMATION
361 {
362 LARGE_INTEGER ForceLogoff;
363 } DOMAIN_LOGOFF_INFORMATION, *PDOMAIN_LOGOFF_INFORMATION;
364
365 typedef struct _DOMAIN_OEM_INFORMATION
366 {
367 UNICODE_STRING OemInformation;
368 } DOMAIN_OEM_INFORMATION, *PDOMAIN_OEM_INFORMATION;
369
370 typedef struct _DOMAIN_NAME_INFORMATION
371 {
372 UNICODE_STRING DomainName;
373 } DOMAIN_NAME_INFORMATION, *PDOMAIN_NAME_INFORMATION;
374
375 typedef struct _DOMAIN_REPLICATION_INFORMATION
376 {
377 UNICODE_STRING ReplicaSourceNodeName;
378 } DOMAIN_REPLICATION_INFORMATION, *PDOMAIN_REPLICATION_INFORMATION;
379
380 typedef struct _DOMAIN_SERVER_ROLE_INFORMATION
381 {
382 DOMAIN_SERVER_ROLE DomainServerRole;
383 } DOMAIN_SERVER_ROLE_INFORMATION, *PDOMAIN_SERVER_ROLE_INFORMATION;
384
385 typedef struct _DOMAIN_MODIFIED_INFORMATION
386 {
387 LARGE_INTEGER DomainModifiedCount;
388 LARGE_INTEGER CreationTime;
389 } DOMAIN_MODIFIED_INFORMATION, *PDOMAIN_MODIFIED_INFORMATION;
390
391 typedef struct _DOMAIN_STATE_INFORMATION
392 {
393 DOMAIN_SERVER_ENABLE_STATE DomainServerState;
394 } DOMAIN_STATE_INFORMATION, *PDOMAIN_STATE_INFORMATION;
395
396 typedef struct _DOMAIN_UAS_INFORMATION
397 {
398 BOOLEAN UasCompatibilityRequired;
399 } DOMAIN_UAS_INFORMATION;
400
401 #include "pshpack4.h"
402 typedef struct _DOMAIN_GENERAL_INFORMATION2
403 {
404 DOMAIN_GENERAL_INFORMATION I1;
405 LARGE_INTEGER LockoutDuration;
406 LARGE_INTEGER LockoutObservationWindow;
407 USHORT LockoutThreshold;
408 } DOMAIN_GENERAL_INFORMATION2, *PDOMAIN_GENERAL_INFORMATION2;
409 #include "poppack.h"
410
411 typedef struct _DOMAIN_LOCKOUT_INFORMATION
412 {
413 LARGE_INTEGER LockoutDuration;
414 LARGE_INTEGER LockoutObservationWindow;
415 USHORT LockoutThreshold;
416 } DOMAIN_LOCKOUT_INFORMATION, *PDOMAIN_LOCKOUT_INFORMATION;
417
418 typedef struct _DOMAIN_MODIFIED_INFORMATION2
419 {
420 LARGE_INTEGER DomainModifiedCount;
421 LARGE_INTEGER CreationTime;
422 LARGE_INTEGER ModifiedCountAtLastPromotion;
423 } DOMAIN_MODIFIED_INFORMATION2, *PDOMAIN_MODIFIED_INFORMATION2;
424
425 typedef enum _GROUP_INFORMATION_CLASS
426 {
427 GroupGeneralInformation = 1,
428 GroupNameInformation,
429 GroupAttributeInformation,
430 GroupAdminCommentInformation,
431 GroupReplicationInformation
432 } GROUP_INFORMATION_CLASS;
433
434 typedef struct _GROUP_MEMBERSHIP
435 {
436 ULONG RelativeId;
437 ULONG Attributes;
438 } GROUP_MEMBERSHIP, *PGROUP_MEMBERSHIP;
439
440 typedef struct _LOGON_HOURS
441 {
442 USHORT UnitsPerWeek;
443 PUCHAR LogonHours;
444 } LOGON_HOURS, *PLOGON_HOURS;
445
446 typedef struct _SR_SECURITY_DESCRIPTOR
447 {
448 ULONG Length;
449 PUCHAR SecurityDescriptor;
450 } SR_SECURITY_DESCRIPTOR, *PSR_SECURITY_DESCRIPTOR;
451
452 typedef enum _USER_INFORMATION_CLASS
453 {
454 UserGeneralInformation = 1,
455 UserPreferencesInformation,
456 UserLogonInformation,
457 UserLogonHoursInformation,
458 UserAccountInformation,
459 UserNameInformation,
460 UserAccountNameInformation,
461 UserFullNameInformation,
462 UserPrimaryGroupInformation,
463 UserHomeInformation,
464 UserScriptInformation,
465 UserProfileInformation,
466 UserAdminCommentInformation,
467 UserWorkStationsInformation,
468 UserSetPasswordInformation,
469 UserControlInformation,
470 UserExpiresInformation,
471 UserInternal1Information,
472 UserInternal2Information,
473 UserParametersInformation,
474 UserAllInformation,
475 UserInternal3Information,
476 UserInternal4Information,
477 UserInternal5Information,
478 UserInternal4InformationNew,
479 UserInternal5InformationNew,
480 UserInternal6Information,
481 UserExtendedInformation,
482 UserLogonUIInformation,
483 } USER_INFORMATION_CLASS, *PUSER_INFORMATION_CLASS;
484
485 typedef struct _USER_GENERAL_INFORMATION
486 {
487 UNICODE_STRING UserName;
488 UNICODE_STRING FullName;
489 ULONG PrimaryGroupId;
490 UNICODE_STRING AdminComment;
491 UNICODE_STRING UserComment;
492 } USER_GENERAL_INFORMATION, *PUSER_GENERAL_INFORMATION;
493
494 typedef struct _USER_PREFERENCES_INFORMATION
495 {
496 UNICODE_STRING UserComment;
497 UNICODE_STRING Reserved1;
498 USHORT CountryCode;
499 USHORT CodePage;
500 } USER_PREFERENCES_INFORMATION, *PUSER_PREFERENCES_INFORMATION;
501
502 #include "pshpack4.h"
503 typedef struct _USER_LOGON_INFORMATION
504 {
505 UNICODE_STRING UserName;
506 UNICODE_STRING FullName;
507 ULONG UserId;
508 ULONG PrimaryGroupId;
509 UNICODE_STRING HomeDirectory;
510 UNICODE_STRING HomeDirectoryDrive;
511 UNICODE_STRING ScriptPath;
512 UNICODE_STRING ProfilePath;
513 UNICODE_STRING WorkStations;
514 LARGE_INTEGER LastLogon;
515 LARGE_INTEGER LastLogoff;
516 LARGE_INTEGER PasswordLastSet;
517 LARGE_INTEGER PasswordCanChange;
518 LARGE_INTEGER PasswordMustChange;
519 LOGON_HOURS LogonHours;
520 USHORT BadPasswordCount;
521 USHORT LogonCount;
522 ULONG UserAccountControl;
523 } USER_LOGON_INFORMATION, *PUSER_LOGON_INFORMATION;
524 #include "poppack.h"
525
526 typedef struct _USER_LOGON_HOURS_INFORMATION
527 {
528 LOGON_HOURS LogonHours;
529 } USER_LOGON_HOURS_INFORMATION, *PUSER_LOGON_HOURS_INFORMATION;
530
531 #include "pshpack4.h"
532 typedef struct _USER_ACCOUNT_INFORMATION
533 {
534 UNICODE_STRING UserName;
535 UNICODE_STRING FullName;
536 ULONG UserId;
537 ULONG PrimaryGroupId;
538 UNICODE_STRING HomeDirectory;
539 UNICODE_STRING HomeDirectoryDrive;
540 UNICODE_STRING ScriptPath;
541 UNICODE_STRING ProfilePath;
542 UNICODE_STRING AdminComment;
543 UNICODE_STRING WorkStations;
544 LARGE_INTEGER LastLogon;
545 LARGE_INTEGER LastLogoff;
546 LOGON_HOURS LogonHours;
547 USHORT BadPasswordCount;
548 USHORT LogonCount;
549 LARGE_INTEGER PasswordLastSet;
550 LARGE_INTEGER AccountExpires;
551 ULONG UserAccountControl;
552 } USER_ACCOUNT_INFORMATION, *PUSER_ACCOUNT_INFORMATION;
553 #include "poppack.h"
554
555 typedef struct _USER_NAME_INFORMATION
556 {
557 UNICODE_STRING UserName;
558 UNICODE_STRING FullName;
559 } USER_NAME_INFORMATION, *PUSER_NAME_INFORMATION;
560
561 typedef struct _USER_ACCOUNT_NAME_INFORMATION
562 {
563 UNICODE_STRING UserName;
564 } USER_ACCOUNT_NAME_INFORMATION, *PUSER_ACCOUNT_NAME_INFORMATION;
565
566 typedef struct _USER_FULL_NAME_INFORMATION
567 {
568 UNICODE_STRING FullName;
569 } USER_FULL_NAME_INFORMATION, *PUSER_FULL_NAME_INFORMATION;
570
571 typedef struct _USER_PRIMARY_GROUP_INFORMATION
572 {
573 ULONG PrimaryGroupId;
574 } USER_PRIMARY_GROUP_INFORMATION, *PUSER_PRIMARY_GROUP_INFORMATION;
575
576 typedef struct _USER_HOME_INFORMATION
577 {
578 UNICODE_STRING HomeDirectory;
579 UNICODE_STRING HomeDirectoryDrive;
580 } USER_HOME_INFORMATION, *PUSER_HOME_INFORMATION;
581
582 typedef struct _USER_SCRIPT_INFORMATION
583 {
584 UNICODE_STRING ScriptPath;
585 } USER_SCRIPT_INFORMATION, *PUSER_SCRIPT_INFORMATION;
586
587 typedef struct _USER_PROFILE_INFORMATION
588 {
589 UNICODE_STRING ProfilePath;
590 } USER_PROFILE_INFORMATION, *PUSER_PROFILE_INFORMATION;
591
592 typedef struct _USER_ADMIN_COMMENT_INFORMATION
593 {
594 UNICODE_STRING AdminComment;
595 } USER_ADMIN_COMMENT_INFORMATION, *PUSER_ADMIN_COMMENT_INFORMATION;
596
597 typedef struct _USER_WORKSTATIONS_INFORMATION
598 {
599 UNICODE_STRING WorkStations;
600 } USER_WORKSTATIONS_INFORMATION, *PUSER_WORKSTATIONS_INFORMATION;
601
602 typedef struct _USER_SET_PASSWORD_INFORMATION
603 {
604 UNICODE_STRING Password;
605 BOOLEAN PasswordExpired;
606 } USER_SET_PASSWORD_INFORMATION, *PUSER_SET_PASSWORD_INFORMATION;
607
608 typedef struct _USER_CONTROL_INFORMATION
609 {
610 ULONG UserAccountControl;
611 } USER_CONTROL_INFORMATION, *PUSER_CONTROL_INFORMATION;
612
613 typedef struct _USER_EXPIRES_INFORMATION
614 {
615 LARGE_INTEGER AccountExpires;
616 } USER_EXPIRES_INFORMATION, *PUSER_EXPIRES_INFORMATION;
617
618 typedef struct _USER_PARAMETERS_INFORMATION
619 {
620 UNICODE_STRING Parameters;
621 } USER_PARAMETERS_INFORMATION, *PUSER_PARAMETERS_INFORMATION;
622
623 #include "pshpack4.h"
624 typedef struct _USER_ALL_INFORMATION
625 {
626 LARGE_INTEGER LastLogon;
627 LARGE_INTEGER LastLogoff;
628 LARGE_INTEGER PasswordLastSet;
629 LARGE_INTEGER AccountExpires;
630 LARGE_INTEGER PasswordCanChange;
631 LARGE_INTEGER PasswordMustChange;
632 UNICODE_STRING UserName;
633 UNICODE_STRING FullName;
634 UNICODE_STRING HomeDirectory;
635 UNICODE_STRING HomeDirectoryDrive;
636 UNICODE_STRING ScriptPath;
637 UNICODE_STRING ProfilePath;
638 UNICODE_STRING AdminComment;
639 UNICODE_STRING WorkStations;
640 UNICODE_STRING UserComment;
641 UNICODE_STRING Parameters;
642 UNICODE_STRING LmPassword;
643 UNICODE_STRING NtPassword;
644 UNICODE_STRING PrivateData;
645 SR_SECURITY_DESCRIPTOR SecurityDescriptor;
646 ULONG UserId;
647 ULONG PrimaryGroupId;
648 ULONG UserAccountControl;
649 ULONG WhichFields;
650 LOGON_HOURS LogonHours;
651 USHORT BadPasswordCount;
652 USHORT LogonCount;
653 USHORT CountryCode;
654 USHORT CodePage;
655 BOOLEAN LmPasswordPresent;
656 BOOLEAN NtPasswordPresent;
657 BOOLEAN PasswordExpired;
658 BOOLEAN PrivateDataSensitive;
659 } USER_ALL_INFORMATION, *PUSER_ALL_INFORMATION;
660 #include "poppack.h"
661
662 typedef struct _USER_PWD_CHANGE_FAILURE_INFORMATION
663 {
664 ULONG ExtendedFailureReason;
665 UNICODE_STRING FilterModuleName;
666 } USER_PWD_CHANGE_FAILURE_INFORMATION, *PUSER_PWD_CHANGE_FAILURE_INFORMATION;
667
668 #define SAM_SID_COMPATIBILITY_ALL 0
669 #define SAM_SID_COMPATIBILITY_LAX 1
670 #define SAM_SID_COMPATIBILITY_STRICT 2
671
672
673 NTSTATUS
674 NTAPI
675 SamAddMemberToAlias(IN SAM_HANDLE AliasHandle,
676 IN PSID MemberId);
677
678 NTSTATUS
679 NTAPI
680 SamAddMemberToGroup(IN SAM_HANDLE GroupHandle,
681 IN ULONG MemberId,
682 IN ULONG Attributes);
683
684 NTSTATUS
685 NTAPI
686 SamAddMultipleMembersToAlias(IN SAM_HANDLE AliasHandle,
687 IN PSID *MemberIds,
688 IN ULONG MemberCount);
689
690 NTSTATUS
691 NTAPI
692 SamChangePasswordUser(IN SAM_HANDLE UserHandle,
693 IN PUNICODE_STRING OldPassword,
694 IN PUNICODE_STRING NewPassword);
695
696 NTSTATUS
697 NTAPI
698 SamChangePasswordUser2(IN PUNICODE_STRING ServerName,
699 IN PUNICODE_STRING UserName,
700 IN PUNICODE_STRING OldPassword,
701 IN PUNICODE_STRING NewPassword);
702
703 NTSTATUS
704 NTAPI
705 SamChangePasswordUser3(IN PUNICODE_STRING ServerName,
706 IN PUNICODE_STRING UserName,
707 IN PUNICODE_STRING OldPassword,
708 IN PUNICODE_STRING NewPassword,
709 OUT PDOMAIN_PASSWORD_INFORMATION *EffectivePasswordPolicy,
710 OUT PUSER_PWD_CHANGE_FAILURE_INFORMATION *PasswordChangeFailureInfo);
711
712 NTSTATUS
713 NTAPI
714 SamCloseHandle(IN SAM_HANDLE SamHandle);
715
716 NTSTATUS
717 NTAPI
718 SamConnect(IN OUT PUNICODE_STRING ServerName OPTIONAL,
719 OUT PSAM_HANDLE ServerHandle,
720 IN ACCESS_MASK DesiredAccess,
721 IN POBJECT_ATTRIBUTES ObjectAttributes);
722
723 NTSTATUS
724 NTAPI
725 SamCreateAliasInDomain(IN SAM_HANDLE DomainHandle,
726 IN PUNICODE_STRING AccountName,
727 IN ACCESS_MASK DesiredAccess,
728 OUT PSAM_HANDLE AliasHandle,
729 OUT PULONG RelativeId);
730
731 NTSTATUS
732 NTAPI
733 SamCreateGroupInDomain(IN SAM_HANDLE DomainHandle,
734 IN PUNICODE_STRING AccountName,
735 IN ACCESS_MASK DesiredAccess,
736 OUT PSAM_HANDLE GroupHandle,
737 OUT PULONG RelativeId);
738
739 NTSTATUS
740 NTAPI
741 SamCreateUser2InDomain(IN SAM_HANDLE DomainHandle,
742 IN PUNICODE_STRING AccountName,
743 IN ULONG AccountType,
744 IN ACCESS_MASK DesiredAccess,
745 OUT PSAM_HANDLE UserHandle,
746 OUT PULONG GrantedAccess,
747 OUT PULONG RelativeId);
748
749 NTSTATUS
750 NTAPI
751 SamCreateUserInDomain(IN SAM_HANDLE DomainHandle,
752 IN PUNICODE_STRING AccountName,
753 IN ACCESS_MASK DesiredAccess,
754 OUT PSAM_HANDLE UserHandle,
755 OUT PULONG RelativeId);
756
757 NTSTATUS
758 NTAPI
759 SamDeleteAlias(IN SAM_HANDLE AliasHandle);
760
761 NTSTATUS
762 NTAPI
763 SamDeleteGroup(IN SAM_HANDLE GroupHandle);
764
765 NTSTATUS
766 NTAPI
767 SamDeleteUser(IN SAM_HANDLE UserHandle);
768
769 NTSTATUS
770 NTAPI
771 SamEnumerateAliasesInDomain(IN SAM_HANDLE DomainHandle,
772 IN OUT PSAM_ENUMERATE_HANDLE EnumerationContext,
773 OUT PVOID *Buffer,
774 IN ULONG PreferedMaximumLength,
775 OUT PULONG CountReturned);
776
777 NTSTATUS
778 NTAPI
779 SamEnumerateDomainsInSamServer(IN SAM_HANDLE ServerHandle,
780 IN OUT PSAM_ENUMERATE_HANDLE EnumerationContext,
781 OUT PVOID *Buffer,
782 IN ULONG PreferedMaximumLength,
783 OUT PULONG CountReturned);
784
785 NTSTATUS
786 NTAPI
787 SamEnumerateGroupsInDomain(IN SAM_HANDLE DomainHandle,
788 IN OUT PSAM_ENUMERATE_HANDLE EnumerationContext,
789 IN PVOID *Buffer,
790 IN ULONG PreferedMaximumLength,
791 OUT PULONG CountReturned);
792
793 NTSTATUS
794 NTAPI
795 SamEnumerateUsersInDomain(IN SAM_HANDLE DomainHandle,
796 IN OUT PSAM_ENUMERATE_HANDLE EnumerationContext,
797 IN ULONG UserAccountControl,
798 OUT PVOID *Buffer,
799 IN ULONG PreferedMaximumLength,
800 OUT PULONG CountReturned);
801
802 NTSTATUS
803 NTAPI
804 SamFreeMemory(IN PVOID Buffer);
805
806 NTSTATUS
807 NTAPI
808 SamGetAliasMembership(IN SAM_HANDLE DomainHandle,
809 IN ULONG PassedCount,
810 IN PSID *Sids,
811 OUT PULONG MembershipCount,
812 OUT PULONG *Aliases);
813
814 NTSTATUS
815 NTAPI
816 SamGetCompatibilityMode(IN SAM_HANDLE ObjectHandle,
817 OUT PULONG Mode);
818
819 NTSTATUS
820 NTAPI
821 SamGetGroupsForUser(IN SAM_HANDLE UserHandle,
822 OUT PGROUP_MEMBERSHIP *Groups,
823 OUT PULONG MembershipCount);
824
825 NTSTATUS
826 NTAPI
827 SamGetMembersInAlias(IN SAM_HANDLE AliasHandle,
828 OUT PSID **MemberIds,
829 OUT PULONG MemberCount);
830
831 NTSTATUS
832 NTAPI
833 SamGetMembersInGroup(IN SAM_HANDLE GroupHandle,
834 OUT PULONG *MemberIds,
835 OUT PULONG *Attributes,
836 OUT PULONG MemberCount);
837
838 NTSTATUS
839 NTAPI
840 SamLookupDomainInSamServer(IN SAM_HANDLE ServerHandle,
841 IN PUNICODE_STRING Name,
842 OUT PSID *DomainId);
843
844 NTSTATUS
845 NTAPI
846 SamLookupIdsInDomain(IN SAM_HANDLE DomainHandle,
847 IN ULONG Count,
848 IN PULONG RelativeIds,
849 OUT PUNICODE_STRING *Names,
850 OUT PSID_NAME_USE *Use OPTIONAL);
851
852 NTSTATUS
853 NTAPI
854 SamLookupNamesInDomain(IN SAM_HANDLE DomainHandle,
855 IN ULONG Count,
856 IN PUNICODE_STRING Names,
857 OUT PULONG *RelativeIds,
858 OUT PSID_NAME_USE *Use);
859
860 NTSTATUS
861 NTAPI
862 SamOpenAlias(IN SAM_HANDLE DomainHandle,
863 IN ACCESS_MASK DesiredAccess,
864 IN ULONG AliasId,
865 OUT PSAM_HANDLE AliasHandle);
866
867 NTSTATUS
868 NTAPI
869 SamOpenDomain(IN SAM_HANDLE ServerHandle,
870 IN ACCESS_MASK DesiredAccess,
871 IN PSID DomainId,
872 OUT PSAM_HANDLE DomainHandle);
873
874 NTSTATUS
875 NTAPI
876 SamOpenGroup(IN SAM_HANDLE DomainHandle,
877 IN ACCESS_MASK DesiredAccess,
878 IN ULONG GroupId,
879 OUT PSAM_HANDLE GroupHandle);
880
881 NTSTATUS
882 NTAPI
883 SamOpenUser(IN SAM_HANDLE DomainHandle,
884 IN ACCESS_MASK DesiredAccess,
885 IN ULONG UserId,
886 OUT PSAM_HANDLE UserHandle);
887
888 NTSTATUS
889 NTAPI
890 SamQueryInformationAlias(IN SAM_HANDLE AliasHandle,
891 IN ALIAS_INFORMATION_CLASS AliasInformationClass,
892 OUT PVOID *Buffer);
893
894 NTSTATUS
895 NTAPI
896 SamQueryInformationDomain(IN SAM_HANDLE DomainHandle,
897 IN DOMAIN_INFORMATION_CLASS DomainInformationClass,
898 OUT PVOID *Buffer);
899
900 NTSTATUS
901 NTAPI
902 SamQueryInformationGroup(IN SAM_HANDLE GroupHandle,
903 IN GROUP_INFORMATION_CLASS GroupInformationClass,
904 OUT PVOID *Buffer);
905
906 NTSTATUS
907 NTAPI
908 SamQueryInformationUser(IN SAM_HANDLE UserHandle,
909 IN USER_INFORMATION_CLASS UserInformationClass,
910 OUT PVOID *Buffer);
911
912 NTSTATUS
913 NTAPI
914 SamQuerySecurityObject(IN SAM_HANDLE ObjectHandle,
915 IN SECURITY_INFORMATION SecurityInformation,
916 OUT PSECURITY_DESCRIPTOR *SecurityDescriptor);
917
918 NTSTATUS
919 NTAPI
920 SamRemoveMemberFromAlias(IN SAM_HANDLE AliasHandle,
921 IN PSID MemberId);
922
923 NTSTATUS
924 NTAPI
925 SamRemoveMemberFromForeignDomain(IN SAM_HANDLE DomainHandle,
926 IN PSID MemberId);
927
928 NTSTATUS
929 NTAPI
930 SamRemoveMemberFromGroup(IN SAM_HANDLE GroupHandle,
931 IN ULONG MemberId);
932
933 NTSTATUS
934 NTAPI
935 SamRemoveMultipleMembersFromAlias(IN SAM_HANDLE AliasHandle,
936 IN PSID *MemberIds,
937 IN ULONG MemberCount);
938
939 NTSTATUS
940 NTAPI
941 SamRidToSid(IN SAM_HANDLE ObjectHandle,
942 IN ULONG Rid,
943 OUT PSID *Sid);
944
945 NTSTATUS
946 NTAPI
947 SamSetInformationAlias(IN SAM_HANDLE AliasHandle,
948 IN ALIAS_INFORMATION_CLASS AliasInformationClass,
949 IN PVOID Buffer);
950
951 NTSTATUS
952 NTAPI
953 SamSetInformationDomain(IN SAM_HANDLE DomainHandle,
954 IN DOMAIN_INFORMATION_CLASS DomainInformationClass,
955 IN PVOID Buffer);
956
957 NTSTATUS
958 NTAPI
959 SamSetInformationGroup(IN SAM_HANDLE GroupHandle,
960 IN GROUP_INFORMATION_CLASS GroupInformationClass,
961 IN PVOID Buffer);
962
963 NTSTATUS
964 NTAPI
965 SamSetInformationUser(IN SAM_HANDLE UserHandle,
966 IN USER_INFORMATION_CLASS UserInformationClass,
967 IN PVOID Buffer);
968
969 NTSTATUS
970 NTAPI
971 SamSetMemberAttributesOfGroup(IN SAM_HANDLE GroupHandle,
972 IN ULONG MemberId,
973 IN ULONG Attributes);
974
975 NTSTATUS
976 NTAPI
977 SamSetSecurityObject(IN SAM_HANDLE ObjectHandle,
978 IN SECURITY_INFORMATION SecurityInformation,
979 IN PSECURITY_DESCRIPTOR SecurityDescriptor);
980
981 NTSTATUS
982 NTAPI
983 SamShutdownSamServer(IN SAM_HANDLE ServerHandle);
984
985 #ifdef __cplusplus
986 }
987 #endif
988
989 #endif /* _NTSAM_ */