[DDK][PSDK] Add some missing NDIS definitions/types. Caught by Benjamin Aerni.
[reactos.git] / sdk / 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_GENERAL_INFORMATION
444 {
445 UNICODE_STRING Name;
446 ULONG Attributes;
447 ULONG MemberCount;
448 UNICODE_STRING AdminComment;
449 } GROUP_GENERAL_INFORMATION, *PGROUP_GENERAL_INFORMATION;
450
451 typedef struct _GROUP_NAME_INFORMATION
452 {
453 UNICODE_STRING Name;
454 } GROUP_NAME_INFORMATION, *PGROUP_NAME_INFORMATION;
455
456 typedef struct _GROUP_ATTRIBUTE_INFORMATION
457 {
458 ULONG Attributes;
459 } GROUP_ATTRIBUTE_INFORMATION, *PGROUP_ATTRIBUTE_INFORMATION;
460
461 typedef struct GROUP_ADM_COMMENT_INFORMATION
462 {
463 UNICODE_STRING AdminComment;
464 } GROUP_ADM_COMMENT_INFORMATION, *PGROUP_ADM_COMMENT_INFORMATION;
465
466 typedef struct _GROUP_MEMBERSHIP
467 {
468 ULONG RelativeId;
469 ULONG Attributes;
470 } GROUP_MEMBERSHIP, *PGROUP_MEMBERSHIP;
471
472 typedef struct _LOGON_HOURS
473 {
474 USHORT UnitsPerWeek;
475 PUCHAR LogonHours;
476 } LOGON_HOURS, *PLOGON_HOURS;
477
478 typedef struct _SR_SECURITY_DESCRIPTOR
479 {
480 ULONG Length;
481 PUCHAR SecurityDescriptor;
482 } SR_SECURITY_DESCRIPTOR, *PSR_SECURITY_DESCRIPTOR;
483
484 typedef enum _USER_INFORMATION_CLASS
485 {
486 UserGeneralInformation = 1,
487 UserPreferencesInformation,
488 UserLogonInformation,
489 UserLogonHoursInformation,
490 UserAccountInformation,
491 UserNameInformation,
492 UserAccountNameInformation,
493 UserFullNameInformation,
494 UserPrimaryGroupInformation,
495 UserHomeInformation,
496 UserScriptInformation,
497 UserProfileInformation,
498 UserAdminCommentInformation,
499 UserWorkStationsInformation,
500 UserSetPasswordInformation,
501 UserControlInformation,
502 UserExpiresInformation,
503 UserInternal1Information,
504 UserInternal2Information,
505 UserParametersInformation,
506 UserAllInformation,
507 UserInternal3Information,
508 UserInternal4Information,
509 UserInternal5Information,
510 UserInternal4InformationNew,
511 UserInternal5InformationNew,
512 UserInternal6Information,
513 UserExtendedInformation,
514 UserLogonUIInformation,
515 } USER_INFORMATION_CLASS, *PUSER_INFORMATION_CLASS;
516
517 typedef struct _USER_GENERAL_INFORMATION
518 {
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;
525
526 typedef struct _USER_PREFERENCES_INFORMATION
527 {
528 UNICODE_STRING UserComment;
529 UNICODE_STRING Reserved1;
530 USHORT CountryCode;
531 USHORT CodePage;
532 } USER_PREFERENCES_INFORMATION, *PUSER_PREFERENCES_INFORMATION;
533
534 #include "pshpack4.h"
535 typedef struct _USER_LOGON_INFORMATION
536 {
537 UNICODE_STRING UserName;
538 UNICODE_STRING FullName;
539 ULONG UserId;
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;
553 USHORT LogonCount;
554 ULONG UserAccountControl;
555 } USER_LOGON_INFORMATION, *PUSER_LOGON_INFORMATION;
556 #include "poppack.h"
557
558 typedef struct _USER_LOGON_HOURS_INFORMATION
559 {
560 LOGON_HOURS LogonHours;
561 } USER_LOGON_HOURS_INFORMATION, *PUSER_LOGON_HOURS_INFORMATION;
562
563 #include "pshpack4.h"
564 typedef struct _USER_ACCOUNT_INFORMATION
565 {
566 UNICODE_STRING UserName;
567 UNICODE_STRING FullName;
568 ULONG UserId;
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;
580 USHORT LogonCount;
581 LARGE_INTEGER PasswordLastSet;
582 LARGE_INTEGER AccountExpires;
583 ULONG UserAccountControl;
584 } USER_ACCOUNT_INFORMATION, *PUSER_ACCOUNT_INFORMATION;
585 #include "poppack.h"
586
587 typedef struct _USER_NAME_INFORMATION
588 {
589 UNICODE_STRING UserName;
590 UNICODE_STRING FullName;
591 } USER_NAME_INFORMATION, *PUSER_NAME_INFORMATION;
592
593 typedef struct _USER_ACCOUNT_NAME_INFORMATION
594 {
595 UNICODE_STRING UserName;
596 } USER_ACCOUNT_NAME_INFORMATION, *PUSER_ACCOUNT_NAME_INFORMATION;
597
598 typedef struct _USER_FULL_NAME_INFORMATION
599 {
600 UNICODE_STRING FullName;
601 } USER_FULL_NAME_INFORMATION, *PUSER_FULL_NAME_INFORMATION;
602
603 typedef struct _USER_PRIMARY_GROUP_INFORMATION
604 {
605 ULONG PrimaryGroupId;
606 } USER_PRIMARY_GROUP_INFORMATION, *PUSER_PRIMARY_GROUP_INFORMATION;
607
608 typedef struct _USER_HOME_INFORMATION
609 {
610 UNICODE_STRING HomeDirectory;
611 UNICODE_STRING HomeDirectoryDrive;
612 } USER_HOME_INFORMATION, *PUSER_HOME_INFORMATION;
613
614 typedef struct _USER_SCRIPT_INFORMATION
615 {
616 UNICODE_STRING ScriptPath;
617 } USER_SCRIPT_INFORMATION, *PUSER_SCRIPT_INFORMATION;
618
619 typedef struct _USER_PROFILE_INFORMATION
620 {
621 UNICODE_STRING ProfilePath;
622 } USER_PROFILE_INFORMATION, *PUSER_PROFILE_INFORMATION;
623
624 typedef struct _USER_ADMIN_COMMENT_INFORMATION
625 {
626 UNICODE_STRING AdminComment;
627 } USER_ADMIN_COMMENT_INFORMATION, *PUSER_ADMIN_COMMENT_INFORMATION;
628
629 typedef struct _USER_WORKSTATIONS_INFORMATION
630 {
631 UNICODE_STRING WorkStations;
632 } USER_WORKSTATIONS_INFORMATION, *PUSER_WORKSTATIONS_INFORMATION;
633
634 typedef struct _USER_SET_PASSWORD_INFORMATION
635 {
636 UNICODE_STRING Password;
637 BOOLEAN PasswordExpired;
638 } USER_SET_PASSWORD_INFORMATION, *PUSER_SET_PASSWORD_INFORMATION;
639
640 typedef struct _USER_CONTROL_INFORMATION
641 {
642 ULONG UserAccountControl;
643 } USER_CONTROL_INFORMATION, *PUSER_CONTROL_INFORMATION;
644
645 typedef struct _USER_EXPIRES_INFORMATION
646 {
647 LARGE_INTEGER AccountExpires;
648 } USER_EXPIRES_INFORMATION, *PUSER_EXPIRES_INFORMATION;
649
650 typedef struct _USER_PARAMETERS_INFORMATION
651 {
652 UNICODE_STRING Parameters;
653 } USER_PARAMETERS_INFORMATION, *PUSER_PARAMETERS_INFORMATION;
654
655 #include "pshpack4.h"
656 typedef struct _USER_ALL_INFORMATION
657 {
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;
678 ULONG UserId;
679 ULONG PrimaryGroupId;
680 ULONG UserAccountControl;
681 ULONG WhichFields;
682 LOGON_HOURS LogonHours;
683 USHORT BadPasswordCount;
684 USHORT LogonCount;
685 USHORT CountryCode;
686 USHORT CodePage;
687 BOOLEAN LmPasswordPresent;
688 BOOLEAN NtPasswordPresent;
689 BOOLEAN PasswordExpired;
690 BOOLEAN PrivateDataSensitive;
691 } USER_ALL_INFORMATION, *PUSER_ALL_INFORMATION;
692 #include "poppack.h"
693
694 typedef struct _USER_PWD_CHANGE_FAILURE_INFORMATION
695 {
696 ULONG ExtendedFailureReason;
697 UNICODE_STRING FilterModuleName;
698 } USER_PWD_CHANGE_FAILURE_INFORMATION, *PUSER_PWD_CHANGE_FAILURE_INFORMATION;
699
700 #define SAM_SID_COMPATIBILITY_ALL 0
701 #define SAM_SID_COMPATIBILITY_LAX 1
702 #define SAM_SID_COMPATIBILITY_STRICT 2
703
704
705 NTSTATUS
706 NTAPI
707 SamAddMemberToAlias(IN SAM_HANDLE AliasHandle,
708 IN PSID MemberId);
709
710 NTSTATUS
711 NTAPI
712 SamAddMemberToGroup(IN SAM_HANDLE GroupHandle,
713 IN ULONG MemberId,
714 IN ULONG Attributes);
715
716 NTSTATUS
717 NTAPI
718 SamAddMultipleMembersToAlias(IN SAM_HANDLE AliasHandle,
719 IN PSID *MemberIds,
720 IN ULONG MemberCount);
721
722 NTSTATUS
723 NTAPI
724 SamChangePasswordUser(IN SAM_HANDLE UserHandle,
725 IN PUNICODE_STRING OldPassword,
726 IN PUNICODE_STRING NewPassword);
727
728 NTSTATUS
729 NTAPI
730 SamChangePasswordUser2(IN PUNICODE_STRING ServerName,
731 IN PUNICODE_STRING UserName,
732 IN PUNICODE_STRING OldPassword,
733 IN PUNICODE_STRING NewPassword);
734
735 NTSTATUS
736 NTAPI
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);
743
744 NTSTATUS
745 NTAPI
746 SamCloseHandle(IN SAM_HANDLE SamHandle);
747
748 NTSTATUS
749 NTAPI
750 SamConnect(IN OUT PUNICODE_STRING ServerName OPTIONAL,
751 OUT PSAM_HANDLE ServerHandle,
752 IN ACCESS_MASK DesiredAccess,
753 IN POBJECT_ATTRIBUTES ObjectAttributes);
754
755 NTSTATUS
756 NTAPI
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);
762
763 NTSTATUS
764 NTAPI
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);
770
771 NTSTATUS
772 NTAPI
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);
780
781 NTSTATUS
782 NTAPI
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);
788
789 NTSTATUS
790 NTAPI
791 SamDeleteAlias(IN SAM_HANDLE AliasHandle);
792
793 NTSTATUS
794 NTAPI
795 SamDeleteGroup(IN SAM_HANDLE GroupHandle);
796
797 NTSTATUS
798 NTAPI
799 SamDeleteUser(IN SAM_HANDLE UserHandle);
800
801 NTSTATUS
802 NTAPI
803 SamEnumerateAliasesInDomain(IN SAM_HANDLE DomainHandle,
804 IN OUT PSAM_ENUMERATE_HANDLE EnumerationContext,
805 OUT PVOID *Buffer,
806 IN ULONG PreferedMaximumLength,
807 OUT PULONG CountReturned);
808
809 NTSTATUS
810 NTAPI
811 SamEnumerateDomainsInSamServer(IN SAM_HANDLE ServerHandle,
812 IN OUT PSAM_ENUMERATE_HANDLE EnumerationContext,
813 OUT PVOID *Buffer,
814 IN ULONG PreferedMaximumLength,
815 OUT PULONG CountReturned);
816
817 NTSTATUS
818 NTAPI
819 SamEnumerateGroupsInDomain(IN SAM_HANDLE DomainHandle,
820 IN OUT PSAM_ENUMERATE_HANDLE EnumerationContext,
821 IN PVOID *Buffer,
822 IN ULONG PreferedMaximumLength,
823 OUT PULONG CountReturned);
824
825 NTSTATUS
826 NTAPI
827 SamEnumerateUsersInDomain(IN SAM_HANDLE DomainHandle,
828 IN OUT PSAM_ENUMERATE_HANDLE EnumerationContext,
829 IN ULONG UserAccountControl,
830 OUT PVOID *Buffer,
831 IN ULONG PreferedMaximumLength,
832 OUT PULONG CountReturned);
833
834 NTSTATUS
835 NTAPI
836 SamFreeMemory(IN PVOID Buffer);
837
838 NTSTATUS
839 NTAPI
840 SamGetAliasMembership(IN SAM_HANDLE DomainHandle,
841 IN ULONG PassedCount,
842 IN PSID *Sids,
843 OUT PULONG MembershipCount,
844 OUT PULONG *Aliases);
845
846 NTSTATUS
847 NTAPI
848 SamGetCompatibilityMode(IN SAM_HANDLE ObjectHandle,
849 OUT PULONG Mode);
850
851 NTSTATUS
852 NTAPI
853 SamGetDisplayEnumerationIndex(IN SAM_HANDLE DomainHandle,
854 IN DOMAIN_DISPLAY_INFORMATION DisplayInformation,
855 IN PUNICODE_STRING Prefix,
856 OUT PULONG Index);
857
858 NTSTATUS
859 NTAPI
860 SamGetGroupsForUser(IN SAM_HANDLE UserHandle,
861 OUT PGROUP_MEMBERSHIP *Groups,
862 OUT PULONG MembershipCount);
863
864 NTSTATUS
865 NTAPI
866 SamGetMembersInAlias(IN SAM_HANDLE AliasHandle,
867 OUT PSID **MemberIds,
868 OUT PULONG MemberCount);
869
870 NTSTATUS
871 NTAPI
872 SamGetMembersInGroup(IN SAM_HANDLE GroupHandle,
873 OUT PULONG *MemberIds,
874 OUT PULONG *Attributes,
875 OUT PULONG MemberCount);
876
877 NTSTATUS
878 NTAPI
879 SamLookupDomainInSamServer(IN SAM_HANDLE ServerHandle,
880 IN PUNICODE_STRING Name,
881 OUT PSID *DomainId);
882
883 NTSTATUS
884 NTAPI
885 SamLookupIdsInDomain(IN SAM_HANDLE DomainHandle,
886 IN ULONG Count,
887 IN PULONG RelativeIds,
888 OUT PUNICODE_STRING *Names,
889 OUT PSID_NAME_USE *Use OPTIONAL);
890
891 NTSTATUS
892 NTAPI
893 SamLookupNamesInDomain(IN SAM_HANDLE DomainHandle,
894 IN ULONG Count,
895 IN PUNICODE_STRING Names,
896 OUT PULONG *RelativeIds,
897 OUT PSID_NAME_USE *Use);
898
899 NTSTATUS
900 NTAPI
901 SamOpenAlias(IN SAM_HANDLE DomainHandle,
902 IN ACCESS_MASK DesiredAccess,
903 IN ULONG AliasId,
904 OUT PSAM_HANDLE AliasHandle);
905
906 NTSTATUS
907 NTAPI
908 SamOpenDomain(IN SAM_HANDLE ServerHandle,
909 IN ACCESS_MASK DesiredAccess,
910 IN PSID DomainId,
911 OUT PSAM_HANDLE DomainHandle);
912
913 NTSTATUS
914 NTAPI
915 SamOpenGroup(IN SAM_HANDLE DomainHandle,
916 IN ACCESS_MASK DesiredAccess,
917 IN ULONG GroupId,
918 OUT PSAM_HANDLE GroupHandle);
919
920 NTSTATUS
921 NTAPI
922 SamOpenUser(IN SAM_HANDLE DomainHandle,
923 IN ACCESS_MASK DesiredAccess,
924 IN ULONG UserId,
925 OUT PSAM_HANDLE UserHandle);
926
927 NTSTATUS
928 NTAPI
929 SamQueryDisplayInformation(IN SAM_HANDLE DomainHandle,
930 IN DOMAIN_DISPLAY_INFORMATION DisplayInformation,
931 IN ULONG Index,
932 IN ULONG EntryCount,
933 IN ULONG PreferredMaximumLength,
934 OUT PULONG TotalAvailable,
935 OUT PULONG TotalReturned,
936 OUT PULONG ReturnedEntryCount,
937 OUT PVOID *SortedBuffer);
938
939 NTSTATUS
940 NTAPI
941 SamQueryInformationAlias(IN SAM_HANDLE AliasHandle,
942 IN ALIAS_INFORMATION_CLASS AliasInformationClass,
943 OUT PVOID *Buffer);
944
945 NTSTATUS
946 NTAPI
947 SamQueryInformationDomain(IN SAM_HANDLE DomainHandle,
948 IN DOMAIN_INFORMATION_CLASS DomainInformationClass,
949 OUT PVOID *Buffer);
950
951 NTSTATUS
952 NTAPI
953 SamQueryInformationGroup(IN SAM_HANDLE GroupHandle,
954 IN GROUP_INFORMATION_CLASS GroupInformationClass,
955 OUT PVOID *Buffer);
956
957 NTSTATUS
958 NTAPI
959 SamQueryInformationUser(IN SAM_HANDLE UserHandle,
960 IN USER_INFORMATION_CLASS UserInformationClass,
961 OUT PVOID *Buffer);
962
963 NTSTATUS
964 NTAPI
965 SamQuerySecurityObject(IN SAM_HANDLE ObjectHandle,
966 IN SECURITY_INFORMATION SecurityInformation,
967 OUT PSECURITY_DESCRIPTOR *SecurityDescriptor);
968
969 NTSTATUS
970 NTAPI
971 SamRemoveMemberFromAlias(IN SAM_HANDLE AliasHandle,
972 IN PSID MemberId);
973
974 NTSTATUS
975 NTAPI
976 SamRemoveMemberFromForeignDomain(IN SAM_HANDLE DomainHandle,
977 IN PSID MemberId);
978
979 NTSTATUS
980 NTAPI
981 SamRemoveMemberFromGroup(IN SAM_HANDLE GroupHandle,
982 IN ULONG MemberId);
983
984 NTSTATUS
985 NTAPI
986 SamRemoveMultipleMembersFromAlias(IN SAM_HANDLE AliasHandle,
987 IN PSID *MemberIds,
988 IN ULONG MemberCount);
989
990 NTSTATUS
991 NTAPI
992 SamRidToSid(IN SAM_HANDLE ObjectHandle,
993 IN ULONG Rid,
994 OUT PSID *Sid);
995
996 NTSTATUS
997 NTAPI
998 SamSetInformationAlias(IN SAM_HANDLE AliasHandle,
999 IN ALIAS_INFORMATION_CLASS AliasInformationClass,
1000 IN PVOID Buffer);
1001
1002 NTSTATUS
1003 NTAPI
1004 SamSetInformationDomain(IN SAM_HANDLE DomainHandle,
1005 IN DOMAIN_INFORMATION_CLASS DomainInformationClass,
1006 IN PVOID Buffer);
1007
1008 NTSTATUS
1009 NTAPI
1010 SamSetInformationGroup(IN SAM_HANDLE GroupHandle,
1011 IN GROUP_INFORMATION_CLASS GroupInformationClass,
1012 IN PVOID Buffer);
1013
1014 NTSTATUS
1015 NTAPI
1016 SamSetInformationUser(IN SAM_HANDLE UserHandle,
1017 IN USER_INFORMATION_CLASS UserInformationClass,
1018 IN PVOID Buffer);
1019
1020 NTSTATUS
1021 NTAPI
1022 SamSetMemberAttributesOfGroup(IN SAM_HANDLE GroupHandle,
1023 IN ULONG MemberId,
1024 IN ULONG Attributes);
1025
1026 NTSTATUS
1027 NTAPI
1028 SamSetSecurityObject(IN SAM_HANDLE ObjectHandle,
1029 IN SECURITY_INFORMATION SecurityInformation,
1030 IN PSECURITY_DESCRIPTOR SecurityDescriptor);
1031
1032 NTSTATUS
1033 NTAPI
1034 SamShutdownSamServer(IN SAM_HANDLE ServerHandle);
1035
1036 #ifdef __cplusplus
1037 }
1038 #endif
1039
1040 #endif /* _NTSAM_ */