5f2728316297b43d3cf0f3091136ab7b140a9101
[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 typedef enum _DOMAIN_DISPLAY_INFORMATION
302 {
303 DomainDisplayUser = 1,
304 DomainDisplayMachine,
305 DomainDisplayGroup,
306 DomainDisplayOemUser,
307 DomainDisplayOemGroup,
308 DomainDisplayServer
309 } DOMAIN_DISPLAY_INFORMATION, *PDOMAIN_DISPLAY_INFORMATION;
310
311 typedef enum _DOMAIN_INFORMATION_CLASS
312 {
313 DomainPasswordInformation = 1,
314 DomainGeneralInformation,
315 DomainLogoffInformation,
316 DomainOemInformation,
317 DomainNameInformation,
318 DomainReplicationInformation,
319 DomainServerRoleInformation,
320 DomainModifiedInformation,
321 DomainStateInformation,
322 DomainUasInformation,
323 DomainGeneralInformation2,
324 DomainLockoutInformation,
325 DomainModifiedInformation2
326 } DOMAIN_INFORMATION_CLASS;
327
328 typedef enum _DOMAIN_SERVER_ENABLE_STATE
329 {
330 DomainServerEnabled = 1,
331 DomainServerDisabled
332 } DOMAIN_SERVER_ENABLE_STATE, *PDOMAIN_SERVER_ENABLE_STATE;
333
334 typedef enum _DOMAIN_SERVER_ROLE
335 {
336 DomainServerRoleBackup = 2,
337 DomainServerRolePrimary
338 } DOMAIN_SERVER_ROLE, *PDOMAIN_SERVER_ROLE;
339
340 #ifndef _DOMAIN_PASSWORD_INFORMATION_DEFINED
341 #define _DOMAIN_PASSWORD_INFORMATION_DEFINED
342 typedef struct _DOMAIN_PASSWORD_INFORMATION
343 {
344 USHORT MinPasswordLength;
345 USHORT PasswordHistoryLength;
346 ULONG PasswordProperties;
347 LARGE_INTEGER MaxPasswordAge;
348 LARGE_INTEGER MinPasswordAge;
349 } DOMAIN_PASSWORD_INFORMATION, *PDOMAIN_PASSWORD_INFORMATION;
350 #endif
351
352 #include "pshpack4.h"
353 typedef struct _DOMAIN_GENERAL_INFORMATION
354 {
355 LARGE_INTEGER ForceLogoff;
356 UNICODE_STRING OemInformation;
357 UNICODE_STRING DomainName;
358 UNICODE_STRING ReplicaSourceNodeName;
359 LARGE_INTEGER DomainModifiedCount;
360 DOMAIN_SERVER_ENABLE_STATE DomainServerState;
361 DOMAIN_SERVER_ROLE DomainServerRole;
362 BOOLEAN UasCompatibilityRequired;
363 ULONG UserCount;
364 ULONG GroupCount;
365 ULONG AliasCount;
366 } DOMAIN_GENERAL_INFORMATION, *PDOMAIN_GENERAL_INFORMATION;
367 #include "poppack.h"
368
369 typedef struct _DOMAIN_LOGOFF_INFORMATION
370 {
371 LARGE_INTEGER ForceLogoff;
372 } DOMAIN_LOGOFF_INFORMATION, *PDOMAIN_LOGOFF_INFORMATION;
373
374 typedef struct _DOMAIN_OEM_INFORMATION
375 {
376 UNICODE_STRING OemInformation;
377 } DOMAIN_OEM_INFORMATION, *PDOMAIN_OEM_INFORMATION;
378
379 typedef struct _DOMAIN_NAME_INFORMATION
380 {
381 UNICODE_STRING DomainName;
382 } DOMAIN_NAME_INFORMATION, *PDOMAIN_NAME_INFORMATION;
383
384 typedef struct _DOMAIN_REPLICATION_INFORMATION
385 {
386 UNICODE_STRING ReplicaSourceNodeName;
387 } DOMAIN_REPLICATION_INFORMATION, *PDOMAIN_REPLICATION_INFORMATION;
388
389 typedef struct _DOMAIN_SERVER_ROLE_INFORMATION
390 {
391 DOMAIN_SERVER_ROLE DomainServerRole;
392 } DOMAIN_SERVER_ROLE_INFORMATION, *PDOMAIN_SERVER_ROLE_INFORMATION;
393
394 typedef struct _DOMAIN_MODIFIED_INFORMATION
395 {
396 LARGE_INTEGER DomainModifiedCount;
397 LARGE_INTEGER CreationTime;
398 } DOMAIN_MODIFIED_INFORMATION, *PDOMAIN_MODIFIED_INFORMATION;
399
400 typedef struct _DOMAIN_STATE_INFORMATION
401 {
402 DOMAIN_SERVER_ENABLE_STATE DomainServerState;
403 } DOMAIN_STATE_INFORMATION, *PDOMAIN_STATE_INFORMATION;
404
405 typedef struct _DOMAIN_UAS_INFORMATION
406 {
407 BOOLEAN UasCompatibilityRequired;
408 } DOMAIN_UAS_INFORMATION;
409
410 #include "pshpack4.h"
411 typedef struct _DOMAIN_GENERAL_INFORMATION2
412 {
413 DOMAIN_GENERAL_INFORMATION I1;
414 LARGE_INTEGER LockoutDuration;
415 LARGE_INTEGER LockoutObservationWindow;
416 USHORT LockoutThreshold;
417 } DOMAIN_GENERAL_INFORMATION2, *PDOMAIN_GENERAL_INFORMATION2;
418 #include "poppack.h"
419
420 typedef struct _DOMAIN_LOCKOUT_INFORMATION
421 {
422 LARGE_INTEGER LockoutDuration;
423 LARGE_INTEGER LockoutObservationWindow;
424 USHORT LockoutThreshold;
425 } DOMAIN_LOCKOUT_INFORMATION, *PDOMAIN_LOCKOUT_INFORMATION;
426
427 typedef struct _DOMAIN_MODIFIED_INFORMATION2
428 {
429 LARGE_INTEGER DomainModifiedCount;
430 LARGE_INTEGER CreationTime;
431 LARGE_INTEGER ModifiedCountAtLastPromotion;
432 } DOMAIN_MODIFIED_INFORMATION2, *PDOMAIN_MODIFIED_INFORMATION2;
433
434 typedef enum _GROUP_INFORMATION_CLASS
435 {
436 GroupGeneralInformation = 1,
437 GroupNameInformation,
438 GroupAttributeInformation,
439 GroupAdminCommentInformation,
440 GroupReplicationInformation
441 } GROUP_INFORMATION_CLASS;
442
443 typedef struct _GROUP_MEMBERSHIP
444 {
445 ULONG RelativeId;
446 ULONG Attributes;
447 } GROUP_MEMBERSHIP, *PGROUP_MEMBERSHIP;
448
449 typedef struct _LOGON_HOURS
450 {
451 USHORT UnitsPerWeek;
452 PUCHAR LogonHours;
453 } LOGON_HOURS, *PLOGON_HOURS;
454
455 typedef struct _SR_SECURITY_DESCRIPTOR
456 {
457 ULONG Length;
458 PUCHAR SecurityDescriptor;
459 } SR_SECURITY_DESCRIPTOR, *PSR_SECURITY_DESCRIPTOR;
460
461 typedef enum _USER_INFORMATION_CLASS
462 {
463 UserGeneralInformation = 1,
464 UserPreferencesInformation,
465 UserLogonInformation,
466 UserLogonHoursInformation,
467 UserAccountInformation,
468 UserNameInformation,
469 UserAccountNameInformation,
470 UserFullNameInformation,
471 UserPrimaryGroupInformation,
472 UserHomeInformation,
473 UserScriptInformation,
474 UserProfileInformation,
475 UserAdminCommentInformation,
476 UserWorkStationsInformation,
477 UserSetPasswordInformation,
478 UserControlInformation,
479 UserExpiresInformation,
480 UserInternal1Information,
481 UserInternal2Information,
482 UserParametersInformation,
483 UserAllInformation,
484 UserInternal3Information,
485 UserInternal4Information,
486 UserInternal5Information,
487 UserInternal4InformationNew,
488 UserInternal5InformationNew,
489 UserInternal6Information,
490 UserExtendedInformation,
491 UserLogonUIInformation,
492 } USER_INFORMATION_CLASS, *PUSER_INFORMATION_CLASS;
493
494 typedef struct _USER_GENERAL_INFORMATION
495 {
496 UNICODE_STRING UserName;
497 UNICODE_STRING FullName;
498 ULONG PrimaryGroupId;
499 UNICODE_STRING AdminComment;
500 UNICODE_STRING UserComment;
501 } USER_GENERAL_INFORMATION, *PUSER_GENERAL_INFORMATION;
502
503 typedef struct _USER_PREFERENCES_INFORMATION
504 {
505 UNICODE_STRING UserComment;
506 UNICODE_STRING Reserved1;
507 USHORT CountryCode;
508 USHORT CodePage;
509 } USER_PREFERENCES_INFORMATION, *PUSER_PREFERENCES_INFORMATION;
510
511 #include "pshpack4.h"
512 typedef struct _USER_LOGON_INFORMATION
513 {
514 UNICODE_STRING UserName;
515 UNICODE_STRING FullName;
516 ULONG UserId;
517 ULONG PrimaryGroupId;
518 UNICODE_STRING HomeDirectory;
519 UNICODE_STRING HomeDirectoryDrive;
520 UNICODE_STRING ScriptPath;
521 UNICODE_STRING ProfilePath;
522 UNICODE_STRING WorkStations;
523 LARGE_INTEGER LastLogon;
524 LARGE_INTEGER LastLogoff;
525 LARGE_INTEGER PasswordLastSet;
526 LARGE_INTEGER PasswordCanChange;
527 LARGE_INTEGER PasswordMustChange;
528 LOGON_HOURS LogonHours;
529 USHORT BadPasswordCount;
530 USHORT LogonCount;
531 ULONG UserAccountControl;
532 } USER_LOGON_INFORMATION, *PUSER_LOGON_INFORMATION;
533 #include "poppack.h"
534
535 typedef struct _USER_LOGON_HOURS_INFORMATION
536 {
537 LOGON_HOURS LogonHours;
538 } USER_LOGON_HOURS_INFORMATION, *PUSER_LOGON_HOURS_INFORMATION;
539
540 #include "pshpack4.h"
541 typedef struct _USER_ACCOUNT_INFORMATION
542 {
543 UNICODE_STRING UserName;
544 UNICODE_STRING FullName;
545 ULONG UserId;
546 ULONG PrimaryGroupId;
547 UNICODE_STRING HomeDirectory;
548 UNICODE_STRING HomeDirectoryDrive;
549 UNICODE_STRING ScriptPath;
550 UNICODE_STRING ProfilePath;
551 UNICODE_STRING AdminComment;
552 UNICODE_STRING WorkStations;
553 LARGE_INTEGER LastLogon;
554 LARGE_INTEGER LastLogoff;
555 LOGON_HOURS LogonHours;
556 USHORT BadPasswordCount;
557 USHORT LogonCount;
558 LARGE_INTEGER PasswordLastSet;
559 LARGE_INTEGER AccountExpires;
560 ULONG UserAccountControl;
561 } USER_ACCOUNT_INFORMATION, *PUSER_ACCOUNT_INFORMATION;
562 #include "poppack.h"
563
564 typedef struct _USER_NAME_INFORMATION
565 {
566 UNICODE_STRING UserName;
567 UNICODE_STRING FullName;
568 } USER_NAME_INFORMATION, *PUSER_NAME_INFORMATION;
569
570 typedef struct _USER_ACCOUNT_NAME_INFORMATION
571 {
572 UNICODE_STRING UserName;
573 } USER_ACCOUNT_NAME_INFORMATION, *PUSER_ACCOUNT_NAME_INFORMATION;
574
575 typedef struct _USER_FULL_NAME_INFORMATION
576 {
577 UNICODE_STRING FullName;
578 } USER_FULL_NAME_INFORMATION, *PUSER_FULL_NAME_INFORMATION;
579
580 typedef struct _USER_PRIMARY_GROUP_INFORMATION
581 {
582 ULONG PrimaryGroupId;
583 } USER_PRIMARY_GROUP_INFORMATION, *PUSER_PRIMARY_GROUP_INFORMATION;
584
585 typedef struct _USER_HOME_INFORMATION
586 {
587 UNICODE_STRING HomeDirectory;
588 UNICODE_STRING HomeDirectoryDrive;
589 } USER_HOME_INFORMATION, *PUSER_HOME_INFORMATION;
590
591 typedef struct _USER_SCRIPT_INFORMATION
592 {
593 UNICODE_STRING ScriptPath;
594 } USER_SCRIPT_INFORMATION, *PUSER_SCRIPT_INFORMATION;
595
596 typedef struct _USER_PROFILE_INFORMATION
597 {
598 UNICODE_STRING ProfilePath;
599 } USER_PROFILE_INFORMATION, *PUSER_PROFILE_INFORMATION;
600
601 typedef struct _USER_ADMIN_COMMENT_INFORMATION
602 {
603 UNICODE_STRING AdminComment;
604 } USER_ADMIN_COMMENT_INFORMATION, *PUSER_ADMIN_COMMENT_INFORMATION;
605
606 typedef struct _USER_WORKSTATIONS_INFORMATION
607 {
608 UNICODE_STRING WorkStations;
609 } USER_WORKSTATIONS_INFORMATION, *PUSER_WORKSTATIONS_INFORMATION;
610
611 typedef struct _USER_SET_PASSWORD_INFORMATION
612 {
613 UNICODE_STRING Password;
614 BOOLEAN PasswordExpired;
615 } USER_SET_PASSWORD_INFORMATION, *PUSER_SET_PASSWORD_INFORMATION;
616
617 typedef struct _USER_CONTROL_INFORMATION
618 {
619 ULONG UserAccountControl;
620 } USER_CONTROL_INFORMATION, *PUSER_CONTROL_INFORMATION;
621
622 typedef struct _USER_EXPIRES_INFORMATION
623 {
624 LARGE_INTEGER AccountExpires;
625 } USER_EXPIRES_INFORMATION, *PUSER_EXPIRES_INFORMATION;
626
627 typedef struct _USER_PARAMETERS_INFORMATION
628 {
629 UNICODE_STRING Parameters;
630 } USER_PARAMETERS_INFORMATION, *PUSER_PARAMETERS_INFORMATION;
631
632 #include "pshpack4.h"
633 typedef struct _USER_ALL_INFORMATION
634 {
635 LARGE_INTEGER LastLogon;
636 LARGE_INTEGER LastLogoff;
637 LARGE_INTEGER PasswordLastSet;
638 LARGE_INTEGER AccountExpires;
639 LARGE_INTEGER PasswordCanChange;
640 LARGE_INTEGER PasswordMustChange;
641 UNICODE_STRING UserName;
642 UNICODE_STRING FullName;
643 UNICODE_STRING HomeDirectory;
644 UNICODE_STRING HomeDirectoryDrive;
645 UNICODE_STRING ScriptPath;
646 UNICODE_STRING ProfilePath;
647 UNICODE_STRING AdminComment;
648 UNICODE_STRING WorkStations;
649 UNICODE_STRING UserComment;
650 UNICODE_STRING Parameters;
651 UNICODE_STRING LmPassword;
652 UNICODE_STRING NtPassword;
653 UNICODE_STRING PrivateData;
654 SR_SECURITY_DESCRIPTOR SecurityDescriptor;
655 ULONG UserId;
656 ULONG PrimaryGroupId;
657 ULONG UserAccountControl;
658 ULONG WhichFields;
659 LOGON_HOURS LogonHours;
660 USHORT BadPasswordCount;
661 USHORT LogonCount;
662 USHORT CountryCode;
663 USHORT CodePage;
664 BOOLEAN LmPasswordPresent;
665 BOOLEAN NtPasswordPresent;
666 BOOLEAN PasswordExpired;
667 BOOLEAN PrivateDataSensitive;
668 } USER_ALL_INFORMATION, *PUSER_ALL_INFORMATION;
669 #include "poppack.h"
670
671 typedef struct _USER_PWD_CHANGE_FAILURE_INFORMATION
672 {
673 ULONG ExtendedFailureReason;
674 UNICODE_STRING FilterModuleName;
675 } USER_PWD_CHANGE_FAILURE_INFORMATION, *PUSER_PWD_CHANGE_FAILURE_INFORMATION;
676
677 #define SAM_SID_COMPATIBILITY_ALL 0
678 #define SAM_SID_COMPATIBILITY_LAX 1
679 #define SAM_SID_COMPATIBILITY_STRICT 2
680
681
682 NTSTATUS
683 NTAPI
684 SamAddMemberToAlias(IN SAM_HANDLE AliasHandle,
685 IN PSID MemberId);
686
687 NTSTATUS
688 NTAPI
689 SamAddMemberToGroup(IN SAM_HANDLE GroupHandle,
690 IN ULONG MemberId,
691 IN ULONG Attributes);
692
693 NTSTATUS
694 NTAPI
695 SamAddMultipleMembersToAlias(IN SAM_HANDLE AliasHandle,
696 IN PSID *MemberIds,
697 IN ULONG MemberCount);
698
699 NTSTATUS
700 NTAPI
701 SamChangePasswordUser(IN SAM_HANDLE UserHandle,
702 IN PUNICODE_STRING OldPassword,
703 IN PUNICODE_STRING NewPassword);
704
705 NTSTATUS
706 NTAPI
707 SamChangePasswordUser2(IN PUNICODE_STRING ServerName,
708 IN PUNICODE_STRING UserName,
709 IN PUNICODE_STRING OldPassword,
710 IN PUNICODE_STRING NewPassword);
711
712 NTSTATUS
713 NTAPI
714 SamChangePasswordUser3(IN PUNICODE_STRING ServerName,
715 IN PUNICODE_STRING UserName,
716 IN PUNICODE_STRING OldPassword,
717 IN PUNICODE_STRING NewPassword,
718 OUT PDOMAIN_PASSWORD_INFORMATION *EffectivePasswordPolicy,
719 OUT PUSER_PWD_CHANGE_FAILURE_INFORMATION *PasswordChangeFailureInfo);
720
721 NTSTATUS
722 NTAPI
723 SamCloseHandle(IN SAM_HANDLE SamHandle);
724
725 NTSTATUS
726 NTAPI
727 SamConnect(IN OUT PUNICODE_STRING ServerName OPTIONAL,
728 OUT PSAM_HANDLE ServerHandle,
729 IN ACCESS_MASK DesiredAccess,
730 IN POBJECT_ATTRIBUTES ObjectAttributes);
731
732 NTSTATUS
733 NTAPI
734 SamCreateAliasInDomain(IN SAM_HANDLE DomainHandle,
735 IN PUNICODE_STRING AccountName,
736 IN ACCESS_MASK DesiredAccess,
737 OUT PSAM_HANDLE AliasHandle,
738 OUT PULONG RelativeId);
739
740 NTSTATUS
741 NTAPI
742 SamCreateGroupInDomain(IN SAM_HANDLE DomainHandle,
743 IN PUNICODE_STRING AccountName,
744 IN ACCESS_MASK DesiredAccess,
745 OUT PSAM_HANDLE GroupHandle,
746 OUT PULONG RelativeId);
747
748 NTSTATUS
749 NTAPI
750 SamCreateUser2InDomain(IN SAM_HANDLE DomainHandle,
751 IN PUNICODE_STRING AccountName,
752 IN ULONG AccountType,
753 IN ACCESS_MASK DesiredAccess,
754 OUT PSAM_HANDLE UserHandle,
755 OUT PULONG GrantedAccess,
756 OUT PULONG RelativeId);
757
758 NTSTATUS
759 NTAPI
760 SamCreateUserInDomain(IN SAM_HANDLE DomainHandle,
761 IN PUNICODE_STRING AccountName,
762 IN ACCESS_MASK DesiredAccess,
763 OUT PSAM_HANDLE UserHandle,
764 OUT PULONG RelativeId);
765
766 NTSTATUS
767 NTAPI
768 SamDeleteAlias(IN SAM_HANDLE AliasHandle);
769
770 NTSTATUS
771 NTAPI
772 SamDeleteGroup(IN SAM_HANDLE GroupHandle);
773
774 NTSTATUS
775 NTAPI
776 SamDeleteUser(IN SAM_HANDLE UserHandle);
777
778 NTSTATUS
779 NTAPI
780 SamEnumerateAliasesInDomain(IN SAM_HANDLE DomainHandle,
781 IN OUT PSAM_ENUMERATE_HANDLE EnumerationContext,
782 OUT PVOID *Buffer,
783 IN ULONG PreferedMaximumLength,
784 OUT PULONG CountReturned);
785
786 NTSTATUS
787 NTAPI
788 SamEnumerateDomainsInSamServer(IN SAM_HANDLE ServerHandle,
789 IN OUT PSAM_ENUMERATE_HANDLE EnumerationContext,
790 OUT PVOID *Buffer,
791 IN ULONG PreferedMaximumLength,
792 OUT PULONG CountReturned);
793
794 NTSTATUS
795 NTAPI
796 SamEnumerateGroupsInDomain(IN SAM_HANDLE DomainHandle,
797 IN OUT PSAM_ENUMERATE_HANDLE EnumerationContext,
798 IN PVOID *Buffer,
799 IN ULONG PreferedMaximumLength,
800 OUT PULONG CountReturned);
801
802 NTSTATUS
803 NTAPI
804 SamEnumerateUsersInDomain(IN SAM_HANDLE DomainHandle,
805 IN OUT PSAM_ENUMERATE_HANDLE EnumerationContext,
806 IN ULONG UserAccountControl,
807 OUT PVOID *Buffer,
808 IN ULONG PreferedMaximumLength,
809 OUT PULONG CountReturned);
810
811 NTSTATUS
812 NTAPI
813 SamFreeMemory(IN PVOID Buffer);
814
815 NTSTATUS
816 NTAPI
817 SamGetAliasMembership(IN SAM_HANDLE DomainHandle,
818 IN ULONG PassedCount,
819 IN PSID *Sids,
820 OUT PULONG MembershipCount,
821 OUT PULONG *Aliases);
822
823 NTSTATUS
824 NTAPI
825 SamGetCompatibilityMode(IN SAM_HANDLE ObjectHandle,
826 OUT PULONG Mode);
827
828 NTSTATUS
829 NTAPI
830 SamGetDisplayEnumerationIndex(IN SAM_HANDLE DomainHandle,
831 IN DOMAIN_DISPLAY_INFORMATION DisplayInformation,
832 IN PUNICODE_STRING Prefix,
833 OUT PULONG Index);
834
835 NTSTATUS
836 NTAPI
837 SamGetGroupsForUser(IN SAM_HANDLE UserHandle,
838 OUT PGROUP_MEMBERSHIP *Groups,
839 OUT PULONG MembershipCount);
840
841 NTSTATUS
842 NTAPI
843 SamGetMembersInAlias(IN SAM_HANDLE AliasHandle,
844 OUT PSID **MemberIds,
845 OUT PULONG MemberCount);
846
847 NTSTATUS
848 NTAPI
849 SamGetMembersInGroup(IN SAM_HANDLE GroupHandle,
850 OUT PULONG *MemberIds,
851 OUT PULONG *Attributes,
852 OUT PULONG MemberCount);
853
854 NTSTATUS
855 NTAPI
856 SamLookupDomainInSamServer(IN SAM_HANDLE ServerHandle,
857 IN PUNICODE_STRING Name,
858 OUT PSID *DomainId);
859
860 NTSTATUS
861 NTAPI
862 SamLookupIdsInDomain(IN SAM_HANDLE DomainHandle,
863 IN ULONG Count,
864 IN PULONG RelativeIds,
865 OUT PUNICODE_STRING *Names,
866 OUT PSID_NAME_USE *Use OPTIONAL);
867
868 NTSTATUS
869 NTAPI
870 SamLookupNamesInDomain(IN SAM_HANDLE DomainHandle,
871 IN ULONG Count,
872 IN PUNICODE_STRING Names,
873 OUT PULONG *RelativeIds,
874 OUT PSID_NAME_USE *Use);
875
876 NTSTATUS
877 NTAPI
878 SamOpenAlias(IN SAM_HANDLE DomainHandle,
879 IN ACCESS_MASK DesiredAccess,
880 IN ULONG AliasId,
881 OUT PSAM_HANDLE AliasHandle);
882
883 NTSTATUS
884 NTAPI
885 SamOpenDomain(IN SAM_HANDLE ServerHandle,
886 IN ACCESS_MASK DesiredAccess,
887 IN PSID DomainId,
888 OUT PSAM_HANDLE DomainHandle);
889
890 NTSTATUS
891 NTAPI
892 SamOpenGroup(IN SAM_HANDLE DomainHandle,
893 IN ACCESS_MASK DesiredAccess,
894 IN ULONG GroupId,
895 OUT PSAM_HANDLE GroupHandle);
896
897 NTSTATUS
898 NTAPI
899 SamOpenUser(IN SAM_HANDLE DomainHandle,
900 IN ACCESS_MASK DesiredAccess,
901 IN ULONG UserId,
902 OUT PSAM_HANDLE UserHandle);
903
904 NTSTATUS
905 NTAPI
906 SamQueryDisplayInformation(IN SAM_HANDLE DomainHandle,
907 IN DOMAIN_DISPLAY_INFORMATION DisplayInformation,
908 IN ULONG Index,
909 IN ULONG EntryCount,
910 IN ULONG PreferredMaximumLength,
911 OUT PULONG TotalAvailable,
912 OUT PULONG TotalReturned,
913 OUT PULONG ReturnedEntryCount,
914 OUT PVOID *SortedBuffer);
915
916 NTSTATUS
917 NTAPI
918 SamQueryInformationAlias(IN SAM_HANDLE AliasHandle,
919 IN ALIAS_INFORMATION_CLASS AliasInformationClass,
920 OUT PVOID *Buffer);
921
922 NTSTATUS
923 NTAPI
924 SamQueryInformationDomain(IN SAM_HANDLE DomainHandle,
925 IN DOMAIN_INFORMATION_CLASS DomainInformationClass,
926 OUT PVOID *Buffer);
927
928 NTSTATUS
929 NTAPI
930 SamQueryInformationGroup(IN SAM_HANDLE GroupHandle,
931 IN GROUP_INFORMATION_CLASS GroupInformationClass,
932 OUT PVOID *Buffer);
933
934 NTSTATUS
935 NTAPI
936 SamQueryInformationUser(IN SAM_HANDLE UserHandle,
937 IN USER_INFORMATION_CLASS UserInformationClass,
938 OUT PVOID *Buffer);
939
940 NTSTATUS
941 NTAPI
942 SamQuerySecurityObject(IN SAM_HANDLE ObjectHandle,
943 IN SECURITY_INFORMATION SecurityInformation,
944 OUT PSECURITY_DESCRIPTOR *SecurityDescriptor);
945
946 NTSTATUS
947 NTAPI
948 SamRemoveMemberFromAlias(IN SAM_HANDLE AliasHandle,
949 IN PSID MemberId);
950
951 NTSTATUS
952 NTAPI
953 SamRemoveMemberFromForeignDomain(IN SAM_HANDLE DomainHandle,
954 IN PSID MemberId);
955
956 NTSTATUS
957 NTAPI
958 SamRemoveMemberFromGroup(IN SAM_HANDLE GroupHandle,
959 IN ULONG MemberId);
960
961 NTSTATUS
962 NTAPI
963 SamRemoveMultipleMembersFromAlias(IN SAM_HANDLE AliasHandle,
964 IN PSID *MemberIds,
965 IN ULONG MemberCount);
966
967 NTSTATUS
968 NTAPI
969 SamRidToSid(IN SAM_HANDLE ObjectHandle,
970 IN ULONG Rid,
971 OUT PSID *Sid);
972
973 NTSTATUS
974 NTAPI
975 SamSetInformationAlias(IN SAM_HANDLE AliasHandle,
976 IN ALIAS_INFORMATION_CLASS AliasInformationClass,
977 IN PVOID Buffer);
978
979 NTSTATUS
980 NTAPI
981 SamSetInformationDomain(IN SAM_HANDLE DomainHandle,
982 IN DOMAIN_INFORMATION_CLASS DomainInformationClass,
983 IN PVOID Buffer);
984
985 NTSTATUS
986 NTAPI
987 SamSetInformationGroup(IN SAM_HANDLE GroupHandle,
988 IN GROUP_INFORMATION_CLASS GroupInformationClass,
989 IN PVOID Buffer);
990
991 NTSTATUS
992 NTAPI
993 SamSetInformationUser(IN SAM_HANDLE UserHandle,
994 IN USER_INFORMATION_CLASS UserInformationClass,
995 IN PVOID Buffer);
996
997 NTSTATUS
998 NTAPI
999 SamSetMemberAttributesOfGroup(IN SAM_HANDLE GroupHandle,
1000 IN ULONG MemberId,
1001 IN ULONG Attributes);
1002
1003 NTSTATUS
1004 NTAPI
1005 SamSetSecurityObject(IN SAM_HANDLE ObjectHandle,
1006 IN SECURITY_INFORMATION SecurityInformation,
1007 IN PSECURITY_DESCRIPTOR SecurityDescriptor);
1008
1009 NTSTATUS
1010 NTAPI
1011 SamShutdownSamServer(IN SAM_HANDLE ServerHandle);
1012
1013 #ifdef __cplusplus
1014 }
1015 #endif
1016
1017 #endif /* _NTSAM_ */