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
15 #define ALIAS_READ (STANDARD_RIGHTS_READ |\
18 #define ALIAS_WRITE (STANDARD_RIGHTS_WRITE |\
20 ALIAS_REMOVE_MEMBER |\
23 #define ALIAS_EXECUTE (STANDARD_RIGHTS_EXECUTE |\
24 ALIAS_READ_INFORMATION)
26 #define ALIAS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\
28 ALIAS_REMOVE_MEMBER |\
30 ALIAS_READ_INFORMATION |\
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
45 #define DOMAIN_READ (STANDARD_RIGHTS_READ |\
46 DOMAIN_READ_OTHER_PARAMETERS |\
47 DOMAIN_GET_ALIAS_MEMBERSHIP)
49 #define DOMAIN_WRITE (STANDARD_RIGHTS_WRITE |\
50 DOMAIN_WRITE_PASSWORD_PARAMS |\
51 DOMAIN_WRITE_OTHER_PARAMETERS |\
53 DOMAIN_CREATE_GROUP |\
54 DOMAIN_CREATE_ALIAS |\
55 DOMAIN_ADMINISTER_SERVER)
57 #define DOMAIN_EXECUTE (STANDARD_RIGHTS_EXECUTE |\
58 DOMAIN_READ_PASSWORD_PARAMETERS |\
59 DOMAIN_LIST_ACCOUNTS |\
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 |\
68 DOMAIN_CREATE_GROUP |\
69 DOMAIN_CREATE_ALIAS |\
70 DOMAIN_GET_ALIAS_MEMBERSHIP |\
71 DOMAIN_LIST_ACCOUNTS |\
73 DOMAIN_ADMINISTER_SERVER)
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
81 #define GROUP_READ (STANDARD_RIGHTS_READ |\
84 #define GROUP_WRITE (STANDARD_RIGHTS_WRITE |\
85 GROUP_WRITE_ACCOUNT |\
89 #define GROUP_EXECUTE (STANDARD_RIGHTS_EXECUTE |\
90 GROUP_READ_INFORMATION)
92 #define GROUP_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\
93 GROUP_READ_INFORMATION |\
94 GROUP_WRITE_ACCOUNT |\
96 GROUP_REMOVE_MEMBER |\
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
106 #define SAM_SERVER_READ (STANDARD_RIGHTS_READ |\
107 SAM_SERVER_ENUMERATE_DOMAINS)
109 #define SAM_SERVER_WRITE (STANDARD_RIGHTS_WRITE |\
110 SAM_SERVER_SHUTDOWN |\
111 SAM_SERVER_INITIALIZE |\
112 SAM_SERVER_CREATE_DOMAIN)
114 #define SAM_SERVER_EXECUTE (STANDARD_RIGHTS_EXECUTE |\
115 SAM_SERVER_CONNECT |\
116 SAM_SERVER_LOOKUP_DOMAIN)
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)
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
138 #define USER_READ (STANDARD_RIGHTS_READ |\
139 USER_READ_PREFERENCES |\
143 USER_READ_GROUP_INFORMATION)
145 #define USER_WRITE (STANDARD_RIGHTS_WRITE |\
146 USER_WRITE_PREFERENCES |\
147 USER_CHANGE_PASSWORD)
149 #define USER_EXECUTE (STANDARD_RIGHTS_EXECUTE |\
151 USER_CHANGE_PASSWORD)
153 #define USER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\
155 USER_READ_PREFERENCES |\
156 USER_WRITE_PREFERENCES |\
159 USER_WRITE_ACCOUNT |\
160 USER_CHANGE_PASSWORD |\
161 USER_FORCE_PASSWORD_CHANGE |\
163 USER_READ_GROUP_INFORMATION |\
164 USER_WRITE_GROUP_INFORMATION)
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
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)
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
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
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
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
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
262 typedef PVOID SAM_HANDLE
, *PSAM_HANDLE
;
263 typedef ULONG SAM_ENUMERATE_HANDLE
, *PSAM_ENUMERATE_HANDLE
;
265 typedef struct _SAM_RID_ENUMERATION
269 } SAM_RID_ENUMERATION
, *PSAM_RID_ENUMERATION
;
271 typedef struct _SAM_SID_ENUMERATION
275 } SAM_SID_ENUMERATION
, *PSAM_SID_ENUMERATION
;
277 typedef enum _ALIAS_INFORMATION_CLASS
279 AliasGeneralInformation
= 1,
280 AliasNameInformation
,
281 AliasAdminCommentInformation
282 } ALIAS_INFORMATION_CLASS
, *PALIAS_INFORMATION_CLASS
;
284 typedef struct _ALIAS_GENERAL_INFORMATION
288 UNICODE_STRING AdminComment
;
289 } ALIAS_GENERAL_INFORMATION
, *PALIAS_GENERAL_INFORMATION
;
291 typedef struct _ALIAS_NAME_INFORMATION
294 } ALIAS_NAME_INFORMATION
, *PALIAS_NAME_INFORMATION
;
296 typedef struct _ALIAS_ADM_COMMENT_INFORMATION
298 UNICODE_STRING AdminComment
;
299 } ALIAS_ADM_COMMENT_INFORMATION
, *PALIAS_ADM_COMMENT_INFORMATION
;
301 typedef enum _DOMAIN_DISPLAY_INFORMATION
303 DomainDisplayUser
= 1,
304 DomainDisplayMachine
,
306 DomainDisplayOemUser
,
307 DomainDisplayOemGroup
,
309 } DOMAIN_DISPLAY_INFORMATION
, *PDOMAIN_DISPLAY_INFORMATION
;
311 typedef enum _DOMAIN_INFORMATION_CLASS
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
;
328 typedef enum _DOMAIN_SERVER_ENABLE_STATE
330 DomainServerEnabled
= 1,
332 } DOMAIN_SERVER_ENABLE_STATE
, *PDOMAIN_SERVER_ENABLE_STATE
;
334 typedef enum _DOMAIN_SERVER_ROLE
336 DomainServerRoleBackup
= 2,
337 DomainServerRolePrimary
338 } DOMAIN_SERVER_ROLE
, *PDOMAIN_SERVER_ROLE
;
340 #ifndef _DOMAIN_PASSWORD_INFORMATION_DEFINED
341 #define _DOMAIN_PASSWORD_INFORMATION_DEFINED
342 typedef struct _DOMAIN_PASSWORD_INFORMATION
344 USHORT MinPasswordLength
;
345 USHORT PasswordHistoryLength
;
346 ULONG PasswordProperties
;
347 LARGE_INTEGER MaxPasswordAge
;
348 LARGE_INTEGER MinPasswordAge
;
349 } DOMAIN_PASSWORD_INFORMATION
, *PDOMAIN_PASSWORD_INFORMATION
;
352 #include "pshpack4.h"
353 typedef struct _DOMAIN_GENERAL_INFORMATION
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
;
366 } DOMAIN_GENERAL_INFORMATION
, *PDOMAIN_GENERAL_INFORMATION
;
369 typedef struct _DOMAIN_LOGOFF_INFORMATION
371 LARGE_INTEGER ForceLogoff
;
372 } DOMAIN_LOGOFF_INFORMATION
, *PDOMAIN_LOGOFF_INFORMATION
;
374 typedef struct _DOMAIN_OEM_INFORMATION
376 UNICODE_STRING OemInformation
;
377 } DOMAIN_OEM_INFORMATION
, *PDOMAIN_OEM_INFORMATION
;
379 typedef struct _DOMAIN_NAME_INFORMATION
381 UNICODE_STRING DomainName
;
382 } DOMAIN_NAME_INFORMATION
, *PDOMAIN_NAME_INFORMATION
;
384 typedef struct _DOMAIN_REPLICATION_INFORMATION
386 UNICODE_STRING ReplicaSourceNodeName
;
387 } DOMAIN_REPLICATION_INFORMATION
, *PDOMAIN_REPLICATION_INFORMATION
;
389 typedef struct _DOMAIN_SERVER_ROLE_INFORMATION
391 DOMAIN_SERVER_ROLE DomainServerRole
;
392 } DOMAIN_SERVER_ROLE_INFORMATION
, *PDOMAIN_SERVER_ROLE_INFORMATION
;
394 typedef struct _DOMAIN_MODIFIED_INFORMATION
396 LARGE_INTEGER DomainModifiedCount
;
397 LARGE_INTEGER CreationTime
;
398 } DOMAIN_MODIFIED_INFORMATION
, *PDOMAIN_MODIFIED_INFORMATION
;
400 typedef struct _DOMAIN_STATE_INFORMATION
402 DOMAIN_SERVER_ENABLE_STATE DomainServerState
;
403 } DOMAIN_STATE_INFORMATION
, *PDOMAIN_STATE_INFORMATION
;
405 typedef struct _DOMAIN_UAS_INFORMATION
407 BOOLEAN UasCompatibilityRequired
;
408 } DOMAIN_UAS_INFORMATION
;
410 #include "pshpack4.h"
411 typedef struct _DOMAIN_GENERAL_INFORMATION2
413 DOMAIN_GENERAL_INFORMATION I1
;
414 LARGE_INTEGER LockoutDuration
;
415 LARGE_INTEGER LockoutObservationWindow
;
416 USHORT LockoutThreshold
;
417 } DOMAIN_GENERAL_INFORMATION2
, *PDOMAIN_GENERAL_INFORMATION2
;
420 typedef struct _DOMAIN_LOCKOUT_INFORMATION
422 LARGE_INTEGER LockoutDuration
;
423 LARGE_INTEGER LockoutObservationWindow
;
424 USHORT LockoutThreshold
;
425 } DOMAIN_LOCKOUT_INFORMATION
, *PDOMAIN_LOCKOUT_INFORMATION
;
427 typedef struct _DOMAIN_MODIFIED_INFORMATION2
429 LARGE_INTEGER DomainModifiedCount
;
430 LARGE_INTEGER CreationTime
;
431 LARGE_INTEGER ModifiedCountAtLastPromotion
;
432 } DOMAIN_MODIFIED_INFORMATION2
, *PDOMAIN_MODIFIED_INFORMATION2
;
434 typedef enum _GROUP_INFORMATION_CLASS
436 GroupGeneralInformation
= 1,
437 GroupNameInformation
,
438 GroupAttributeInformation
,
439 GroupAdminCommentInformation
,
440 GroupReplicationInformation
441 } GROUP_INFORMATION_CLASS
;
443 typedef struct _GROUP_GENERAL_INFORMATION
448 UNICODE_STRING AdminComment
;
449 } GROUP_GENERAL_INFORMATION
, *PGROUP_GENERAL_INFORMATION
;
451 typedef struct _GROUP_NAME_INFORMATION
454 } GROUP_NAME_INFORMATION
, *PGROUP_NAME_INFORMATION
;
456 typedef struct _GROUP_ATTRIBUTE_INFORMATION
459 } GROUP_ATTRIBUTE_INFORMATION
, *PGROUP_ATTRIBUTE_INFORMATION
;
461 typedef struct GROUP_ADM_COMMENT_INFORMATION
463 UNICODE_STRING AdminComment
;
464 } GROUP_ADM_COMMENT_INFORMATION
, *PGROUP_ADM_COMMENT_INFORMATION
;
466 typedef struct _GROUP_MEMBERSHIP
470 } GROUP_MEMBERSHIP
, *PGROUP_MEMBERSHIP
;
472 typedef struct _LOGON_HOURS
476 } LOGON_HOURS
, *PLOGON_HOURS
;
478 typedef struct _SR_SECURITY_DESCRIPTOR
481 PUCHAR SecurityDescriptor
;
482 } SR_SECURITY_DESCRIPTOR
, *PSR_SECURITY_DESCRIPTOR
;
484 typedef enum _USER_INFORMATION_CLASS
486 UserGeneralInformation
= 1,
487 UserPreferencesInformation
,
488 UserLogonInformation
,
489 UserLogonHoursInformation
,
490 UserAccountInformation
,
492 UserAccountNameInformation
,
493 UserFullNameInformation
,
494 UserPrimaryGroupInformation
,
496 UserScriptInformation
,
497 UserProfileInformation
,
498 UserAdminCommentInformation
,
499 UserWorkStationsInformation
,
500 UserSetPasswordInformation
,
501 UserControlInformation
,
502 UserExpiresInformation
,
503 UserInternal1Information
,
504 UserInternal2Information
,
505 UserParametersInformation
,
507 UserInternal3Information
,
508 UserInternal4Information
,
509 UserInternal5Information
,
510 UserInternal4InformationNew
,
511 UserInternal5InformationNew
,
512 UserInternal6Information
,
513 UserExtendedInformation
,
514 UserLogonUIInformation
,
515 } USER_INFORMATION_CLASS
, *PUSER_INFORMATION_CLASS
;
517 typedef struct _USER_GENERAL_INFORMATION
519 UNICODE_STRING UserName
;
520 UNICODE_STRING FullName
;
521 ULONG PrimaryGroupId
;
522 UNICODE_STRING AdminComment
;
523 UNICODE_STRING UserComment
;
524 } USER_GENERAL_INFORMATION
, *PUSER_GENERAL_INFORMATION
;
526 typedef struct _USER_PREFERENCES_INFORMATION
528 UNICODE_STRING UserComment
;
529 UNICODE_STRING Reserved1
;
532 } USER_PREFERENCES_INFORMATION
, *PUSER_PREFERENCES_INFORMATION
;
534 #include "pshpack4.h"
535 typedef struct _USER_LOGON_INFORMATION
537 UNICODE_STRING UserName
;
538 UNICODE_STRING FullName
;
540 ULONG PrimaryGroupId
;
541 UNICODE_STRING HomeDirectory
;
542 UNICODE_STRING HomeDirectoryDrive
;
543 UNICODE_STRING ScriptPath
;
544 UNICODE_STRING ProfilePath
;
545 UNICODE_STRING WorkStations
;
546 LARGE_INTEGER LastLogon
;
547 LARGE_INTEGER LastLogoff
;
548 LARGE_INTEGER PasswordLastSet
;
549 LARGE_INTEGER PasswordCanChange
;
550 LARGE_INTEGER PasswordMustChange
;
551 LOGON_HOURS LogonHours
;
552 USHORT BadPasswordCount
;
554 ULONG UserAccountControl
;
555 } USER_LOGON_INFORMATION
, *PUSER_LOGON_INFORMATION
;
558 typedef struct _USER_LOGON_HOURS_INFORMATION
560 LOGON_HOURS LogonHours
;
561 } USER_LOGON_HOURS_INFORMATION
, *PUSER_LOGON_HOURS_INFORMATION
;
563 #include "pshpack4.h"
564 typedef struct _USER_ACCOUNT_INFORMATION
566 UNICODE_STRING UserName
;
567 UNICODE_STRING FullName
;
569 ULONG PrimaryGroupId
;
570 UNICODE_STRING HomeDirectory
;
571 UNICODE_STRING HomeDirectoryDrive
;
572 UNICODE_STRING ScriptPath
;
573 UNICODE_STRING ProfilePath
;
574 UNICODE_STRING AdminComment
;
575 UNICODE_STRING WorkStations
;
576 LARGE_INTEGER LastLogon
;
577 LARGE_INTEGER LastLogoff
;
578 LOGON_HOURS LogonHours
;
579 USHORT BadPasswordCount
;
581 LARGE_INTEGER PasswordLastSet
;
582 LARGE_INTEGER AccountExpires
;
583 ULONG UserAccountControl
;
584 } USER_ACCOUNT_INFORMATION
, *PUSER_ACCOUNT_INFORMATION
;
587 typedef struct _USER_NAME_INFORMATION
589 UNICODE_STRING UserName
;
590 UNICODE_STRING FullName
;
591 } USER_NAME_INFORMATION
, *PUSER_NAME_INFORMATION
;
593 typedef struct _USER_ACCOUNT_NAME_INFORMATION
595 UNICODE_STRING UserName
;
596 } USER_ACCOUNT_NAME_INFORMATION
, *PUSER_ACCOUNT_NAME_INFORMATION
;
598 typedef struct _USER_FULL_NAME_INFORMATION
600 UNICODE_STRING FullName
;
601 } USER_FULL_NAME_INFORMATION
, *PUSER_FULL_NAME_INFORMATION
;
603 typedef struct _USER_PRIMARY_GROUP_INFORMATION
605 ULONG PrimaryGroupId
;
606 } USER_PRIMARY_GROUP_INFORMATION
, *PUSER_PRIMARY_GROUP_INFORMATION
;
608 typedef struct _USER_HOME_INFORMATION
610 UNICODE_STRING HomeDirectory
;
611 UNICODE_STRING HomeDirectoryDrive
;
612 } USER_HOME_INFORMATION
, *PUSER_HOME_INFORMATION
;
614 typedef struct _USER_SCRIPT_INFORMATION
616 UNICODE_STRING ScriptPath
;
617 } USER_SCRIPT_INFORMATION
, *PUSER_SCRIPT_INFORMATION
;
619 typedef struct _USER_PROFILE_INFORMATION
621 UNICODE_STRING ProfilePath
;
622 } USER_PROFILE_INFORMATION
, *PUSER_PROFILE_INFORMATION
;
624 typedef struct _USER_ADMIN_COMMENT_INFORMATION
626 UNICODE_STRING AdminComment
;
627 } USER_ADMIN_COMMENT_INFORMATION
, *PUSER_ADMIN_COMMENT_INFORMATION
;
629 typedef struct _USER_WORKSTATIONS_INFORMATION
631 UNICODE_STRING WorkStations
;
632 } USER_WORKSTATIONS_INFORMATION
, *PUSER_WORKSTATIONS_INFORMATION
;
634 typedef struct _USER_SET_PASSWORD_INFORMATION
636 UNICODE_STRING Password
;
637 BOOLEAN PasswordExpired
;
638 } USER_SET_PASSWORD_INFORMATION
, *PUSER_SET_PASSWORD_INFORMATION
;
640 typedef struct _USER_CONTROL_INFORMATION
642 ULONG UserAccountControl
;
643 } USER_CONTROL_INFORMATION
, *PUSER_CONTROL_INFORMATION
;
645 typedef struct _USER_EXPIRES_INFORMATION
647 LARGE_INTEGER AccountExpires
;
648 } USER_EXPIRES_INFORMATION
, *PUSER_EXPIRES_INFORMATION
;
650 typedef struct _USER_PARAMETERS_INFORMATION
652 UNICODE_STRING Parameters
;
653 } USER_PARAMETERS_INFORMATION
, *PUSER_PARAMETERS_INFORMATION
;
655 #include "pshpack4.h"
656 typedef struct _USER_ALL_INFORMATION
658 LARGE_INTEGER LastLogon
;
659 LARGE_INTEGER LastLogoff
;
660 LARGE_INTEGER PasswordLastSet
;
661 LARGE_INTEGER AccountExpires
;
662 LARGE_INTEGER PasswordCanChange
;
663 LARGE_INTEGER PasswordMustChange
;
664 UNICODE_STRING UserName
;
665 UNICODE_STRING FullName
;
666 UNICODE_STRING HomeDirectory
;
667 UNICODE_STRING HomeDirectoryDrive
;
668 UNICODE_STRING ScriptPath
;
669 UNICODE_STRING ProfilePath
;
670 UNICODE_STRING AdminComment
;
671 UNICODE_STRING WorkStations
;
672 UNICODE_STRING UserComment
;
673 UNICODE_STRING Parameters
;
674 UNICODE_STRING LmPassword
;
675 UNICODE_STRING NtPassword
;
676 UNICODE_STRING PrivateData
;
677 SR_SECURITY_DESCRIPTOR SecurityDescriptor
;
679 ULONG PrimaryGroupId
;
680 ULONG UserAccountControl
;
682 LOGON_HOURS LogonHours
;
683 USHORT BadPasswordCount
;
687 BOOLEAN LmPasswordPresent
;
688 BOOLEAN NtPasswordPresent
;
689 BOOLEAN PasswordExpired
;
690 BOOLEAN PrivateDataSensitive
;
691 } USER_ALL_INFORMATION
, *PUSER_ALL_INFORMATION
;
694 typedef struct _USER_PWD_CHANGE_FAILURE_INFORMATION
696 ULONG ExtendedFailureReason
;
697 UNICODE_STRING FilterModuleName
;
698 } USER_PWD_CHANGE_FAILURE_INFORMATION
, *PUSER_PWD_CHANGE_FAILURE_INFORMATION
;
700 #define SAM_SID_COMPATIBILITY_ALL 0
701 #define SAM_SID_COMPATIBILITY_LAX 1
702 #define SAM_SID_COMPATIBILITY_STRICT 2
707 SamAddMemberToAlias(IN SAM_HANDLE AliasHandle
,
712 SamAddMemberToGroup(IN SAM_HANDLE GroupHandle
,
714 IN ULONG Attributes
);
718 SamAddMultipleMembersToAlias(IN SAM_HANDLE AliasHandle
,
720 IN ULONG MemberCount
);
724 SamChangePasswordUser(IN SAM_HANDLE UserHandle
,
725 IN PUNICODE_STRING OldPassword
,
726 IN PUNICODE_STRING NewPassword
);
730 SamChangePasswordUser2(IN PUNICODE_STRING ServerName
,
731 IN PUNICODE_STRING UserName
,
732 IN PUNICODE_STRING OldPassword
,
733 IN PUNICODE_STRING NewPassword
);
737 SamChangePasswordUser3(IN PUNICODE_STRING ServerName
,
738 IN PUNICODE_STRING UserName
,
739 IN PUNICODE_STRING OldPassword
,
740 IN PUNICODE_STRING NewPassword
,
741 OUT PDOMAIN_PASSWORD_INFORMATION
*EffectivePasswordPolicy
,
742 OUT PUSER_PWD_CHANGE_FAILURE_INFORMATION
*PasswordChangeFailureInfo
);
746 SamCloseHandle(IN SAM_HANDLE SamHandle
);
750 SamConnect(IN OUT PUNICODE_STRING ServerName OPTIONAL
,
751 OUT PSAM_HANDLE ServerHandle
,
752 IN ACCESS_MASK DesiredAccess
,
753 IN POBJECT_ATTRIBUTES ObjectAttributes
);
757 SamCreateAliasInDomain(IN SAM_HANDLE DomainHandle
,
758 IN PUNICODE_STRING AccountName
,
759 IN ACCESS_MASK DesiredAccess
,
760 OUT PSAM_HANDLE AliasHandle
,
761 OUT PULONG RelativeId
);
765 SamCreateGroupInDomain(IN SAM_HANDLE DomainHandle
,
766 IN PUNICODE_STRING AccountName
,
767 IN ACCESS_MASK DesiredAccess
,
768 OUT PSAM_HANDLE GroupHandle
,
769 OUT PULONG RelativeId
);
773 SamCreateUser2InDomain(IN SAM_HANDLE DomainHandle
,
774 IN PUNICODE_STRING AccountName
,
775 IN ULONG AccountType
,
776 IN ACCESS_MASK DesiredAccess
,
777 OUT PSAM_HANDLE UserHandle
,
778 OUT PULONG GrantedAccess
,
779 OUT PULONG RelativeId
);
783 SamCreateUserInDomain(IN SAM_HANDLE DomainHandle
,
784 IN PUNICODE_STRING AccountName
,
785 IN ACCESS_MASK DesiredAccess
,
786 OUT PSAM_HANDLE UserHandle
,
787 OUT PULONG RelativeId
);
791 SamDeleteAlias(IN SAM_HANDLE AliasHandle
);
795 SamDeleteGroup(IN SAM_HANDLE GroupHandle
);
799 SamDeleteUser(IN SAM_HANDLE UserHandle
);
803 SamEnumerateAliasesInDomain(IN SAM_HANDLE DomainHandle
,
804 IN OUT PSAM_ENUMERATE_HANDLE EnumerationContext
,
806 IN ULONG PreferedMaximumLength
,
807 OUT PULONG CountReturned
);
811 SamEnumerateDomainsInSamServer(IN SAM_HANDLE ServerHandle
,
812 IN OUT PSAM_ENUMERATE_HANDLE EnumerationContext
,
814 IN ULONG PreferedMaximumLength
,
815 OUT PULONG CountReturned
);
819 SamEnumerateGroupsInDomain(IN SAM_HANDLE DomainHandle
,
820 IN OUT PSAM_ENUMERATE_HANDLE EnumerationContext
,
822 IN ULONG PreferedMaximumLength
,
823 OUT PULONG CountReturned
);
827 SamEnumerateUsersInDomain(IN SAM_HANDLE DomainHandle
,
828 IN OUT PSAM_ENUMERATE_HANDLE EnumerationContext
,
829 IN ULONG UserAccountControl
,
831 IN ULONG PreferedMaximumLength
,
832 OUT PULONG CountReturned
);
836 SamFreeMemory(IN PVOID Buffer
);
840 SamGetAliasMembership(IN SAM_HANDLE DomainHandle
,
841 IN ULONG PassedCount
,
843 OUT PULONG MembershipCount
,
844 OUT PULONG
*Aliases
);
848 SamGetCompatibilityMode(IN SAM_HANDLE ObjectHandle
,
853 SamGetDisplayEnumerationIndex(IN SAM_HANDLE DomainHandle
,
854 IN DOMAIN_DISPLAY_INFORMATION DisplayInformation
,
855 IN PUNICODE_STRING Prefix
,
860 SamGetGroupsForUser(IN SAM_HANDLE UserHandle
,
861 OUT PGROUP_MEMBERSHIP
*Groups
,
862 OUT PULONG MembershipCount
);
866 SamGetMembersInAlias(IN SAM_HANDLE AliasHandle
,
867 OUT PSID
**MemberIds
,
868 OUT PULONG MemberCount
);
872 SamGetMembersInGroup(IN SAM_HANDLE GroupHandle
,
873 OUT PULONG
*MemberIds
,
874 OUT PULONG
*Attributes
,
875 OUT PULONG MemberCount
);
879 SamLookupDomainInSamServer(IN SAM_HANDLE ServerHandle
,
880 IN PUNICODE_STRING Name
,
885 SamLookupIdsInDomain(IN SAM_HANDLE DomainHandle
,
887 IN PULONG RelativeIds
,
888 OUT PUNICODE_STRING
*Names
,
889 OUT PSID_NAME_USE
*Use OPTIONAL
);
893 SamLookupNamesInDomain(IN SAM_HANDLE DomainHandle
,
895 IN PUNICODE_STRING Names
,
896 OUT PULONG
*RelativeIds
,
897 OUT PSID_NAME_USE
*Use
);
901 SamOpenAlias(IN SAM_HANDLE DomainHandle
,
902 IN ACCESS_MASK DesiredAccess
,
904 OUT PSAM_HANDLE AliasHandle
);
908 SamOpenDomain(IN SAM_HANDLE ServerHandle
,
909 IN ACCESS_MASK DesiredAccess
,
911 OUT PSAM_HANDLE DomainHandle
);
915 SamOpenGroup(IN SAM_HANDLE DomainHandle
,
916 IN ACCESS_MASK DesiredAccess
,
918 OUT PSAM_HANDLE GroupHandle
);
922 SamOpenUser(IN SAM_HANDLE DomainHandle
,
923 IN ACCESS_MASK DesiredAccess
,
925 OUT PSAM_HANDLE UserHandle
);
929 SamQueryDisplayInformation(IN SAM_HANDLE DomainHandle
,
930 IN DOMAIN_DISPLAY_INFORMATION DisplayInformation
,
933 IN ULONG PreferredMaximumLength
,
934 OUT PULONG TotalAvailable
,
935 OUT PULONG TotalReturned
,
936 OUT PULONG ReturnedEntryCount
,
937 OUT PVOID
*SortedBuffer
);
941 SamQueryInformationAlias(IN SAM_HANDLE AliasHandle
,
942 IN ALIAS_INFORMATION_CLASS AliasInformationClass
,
947 SamQueryInformationDomain(IN SAM_HANDLE DomainHandle
,
948 IN DOMAIN_INFORMATION_CLASS DomainInformationClass
,
953 SamQueryInformationGroup(IN SAM_HANDLE GroupHandle
,
954 IN GROUP_INFORMATION_CLASS GroupInformationClass
,
959 SamQueryInformationUser(IN SAM_HANDLE UserHandle
,
960 IN USER_INFORMATION_CLASS UserInformationClass
,
965 SamQuerySecurityObject(IN SAM_HANDLE ObjectHandle
,
966 IN SECURITY_INFORMATION SecurityInformation
,
967 OUT PSECURITY_DESCRIPTOR
*SecurityDescriptor
);
971 SamRemoveMemberFromAlias(IN SAM_HANDLE AliasHandle
,
976 SamRemoveMemberFromForeignDomain(IN SAM_HANDLE DomainHandle
,
981 SamRemoveMemberFromGroup(IN SAM_HANDLE GroupHandle
,
986 SamRemoveMultipleMembersFromAlias(IN SAM_HANDLE AliasHandle
,
988 IN ULONG MemberCount
);
992 SamRidToSid(IN SAM_HANDLE ObjectHandle
,
998 SamSetInformationAlias(IN SAM_HANDLE AliasHandle
,
999 IN ALIAS_INFORMATION_CLASS AliasInformationClass
,
1004 SamSetInformationDomain(IN SAM_HANDLE DomainHandle
,
1005 IN DOMAIN_INFORMATION_CLASS DomainInformationClass
,
1010 SamSetInformationGroup(IN SAM_HANDLE GroupHandle
,
1011 IN GROUP_INFORMATION_CLASS GroupInformationClass
,
1016 SamSetInformationUser(IN SAM_HANDLE UserHandle
,
1017 IN USER_INFORMATION_CLASS UserInformationClass
,
1022 SamSetMemberAttributesOfGroup(IN SAM_HANDLE GroupHandle
,
1024 IN ULONG Attributes
);
1028 SamSetSecurityObject(IN SAM_HANDLE ObjectHandle
,
1029 IN SECURITY_INFORMATION SecurityInformation
,
1030 IN PSECURITY_DESCRIPTOR SecurityDescriptor
);
1034 SamShutdownSamServer(IN SAM_HANDLE ServerHandle
);
1040 #endif /* _NTSAM_ */