ba0771ec9ffdd116d0959ab59ba84e3f564f39f2
[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 uses 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
196 typedef PVOID SAM_HANDLE, *PSAM_HANDLE;
197 typedef ULONG SAM_ENUMERATE_HANDLE, *PSAM_ENUMERATE_HANDLE;
198
199 typedef struct _SAM_RID_ENUMERATION
200 {
201 ULONG RelativeId;
202 UNICODE_STRING Name;
203 } SAM_RID_ENUMERATION, *PSAM_RID_ENUMERATION;
204
205 typedef struct _SAM_SID_ENUMERATION
206 {
207 PSID Sid;
208 UNICODE_STRING Name;
209 } SAM_SID_ENUMERATION, *PSAM_SID_ENUMERATION;
210
211 typedef enum _ALIAS_INFORMATION_CLASS
212 {
213 AliasGeneralInformation = 1,
214 AliasNameInformation,
215 AliasAdminCommentInformation
216 } ALIAS_INFORMATION_CLASS, *PALIAS_INFORMATION_CLASS;
217
218 typedef struct _ALIAS_GENERAL_INFORMATION
219 {
220 UNICODE_STRING Name;
221 ULONG MemberCount;
222 UNICODE_STRING AdminComment;
223 } ALIAS_GENERAL_INFORMATION, *PALIAS_GENERAL_INFORMATION;
224
225 typedef struct _ALIAS_NAME_INFORMATION
226 {
227 UNICODE_STRING Name;
228 } ALIAS_NAME_INFORMATION, *PALIAS_NAME_INFORMATION;
229
230 typedef struct _ALIAS_ADM_COMMENT_INFORMATION
231 {
232 UNICODE_STRING AdminComment;
233 } ALIAS_ADM_COMMENT_INFORMATION, *PALIAS_ADM_COMMENT_INFORMATION;
234
235
236 typedef enum _DOMAIN_INFORMATION_CLASS
237 {
238 DomainPasswordInformation = 1,
239 DomainGeneralInformation,
240 DomainLogoffInformation,
241 DomainOemInformation,
242 DomainNameInformation,
243 DomainReplicationInformation,
244 DomainServerRoleInformation,
245 DomainModifiedInformation,
246 DomainStateInformation,
247 DomainUasInformation,
248 DomainGeneralInformation2,
249 DomainLockoutInformation,
250 DomainModifiedInformation2
251 } DOMAIN_INFORMATION_CLASS;
252
253 typedef enum _DOMAIN_SERVER_ENABLE_STATE
254 {
255 DomainServerEnabled = 1,
256 DomainServerDisabled
257 } DOMAIN_SERVER_ENABLE_STATE, *PDOMAIN_SERVER_ENABLE_STATE;
258
259 typedef enum _DOMAIN_SERVER_ROLE
260 {
261 DomainServerRoleBackup = 2,
262 DomainServerRolePrimary
263 } DOMAIN_SERVER_ROLE, *PDOMAIN_SERVER_ROLE;
264
265 #include "pshpack4.h"
266 typedef struct _DOMAIN_GENERAL_INFORMATION
267 {
268 LARGE_INTEGER ForceLogoff;
269 UNICODE_STRING OemInformation;
270 UNICODE_STRING DomainName;
271 UNICODE_STRING ReplicaSourceNodeName;
272 LARGE_INTEGER DomainModifiedCount;
273 DOMAIN_SERVER_ENABLE_STATE DomainServerState;
274 DOMAIN_SERVER_ROLE DomainServerRole;
275 BOOLEAN UasCompatibilityRequired;
276 ULONG UserCount;
277 ULONG GroupCount;
278 ULONG AliasCount;
279 } DOMAIN_GENERAL_INFORMATION, *PDOMAIN_GENERAL_INFORMATION;
280 #include "poppack.h"
281
282 typedef struct _DOMAIN_LOGOFF_INFORMATION
283 {
284 LARGE_INTEGER ForceLogoff;
285 } DOMAIN_LOGOFF_INFORMATION, *PDOMAIN_LOGOFF_INFORMATION;
286
287 typedef struct _DOMAIN_OEM_INFORMATION
288 {
289 UNICODE_STRING OemInformation;
290 } DOMAIN_OEM_INFORMATION, *PDOMAIN_OEM_INFORMATION;
291
292 typedef struct _DOMAIN_NAME_INFORMATION
293 {
294 UNICODE_STRING DomainName;
295 } DOMAIN_NAME_INFORMATION, *PDOMAIN_NAME_INFORMATION;
296
297 typedef struct _DOMAIN_REPLICATION_INFORMATION
298 {
299 UNICODE_STRING ReplicaSourceNodeName;
300 } DOMAIN_REPLICATION_INFORMATION, *PDOMAIN_REPLICATION_INFORMATION;
301
302 typedef struct _DOMAIN_SERVER_ROLE_INFORMATION
303 {
304 DOMAIN_SERVER_ROLE DomainServerRole;
305 } DOMAIN_SERVER_ROLE_INFORMATION, *PDOMAIN_SERVER_ROLE_INFORMATION;
306
307 typedef struct _DOMAIN_STATE_INFORMATION
308 {
309 DOMAIN_SERVER_ENABLE_STATE DomainServerState;
310 } DOMAIN_STATE_INFORMATION, *PDOMAIN_STATE_INFORMATION;
311
312 typedef struct _DOMAIN_UAS_INFORMATION
313 {
314 BOOLEAN UasCompatibilityRequired;
315 } DOMAIN_UAS_INFORMATION;
316
317 #include "pshpack4.h"
318 typedef struct _DOMAIN_GENERAL_INFORMATION2
319 {
320 DOMAIN_GENERAL_INFORMATION I1;
321 LARGE_INTEGER LockoutDuration;
322 LARGE_INTEGER LockoutObservationWindow;
323 USHORT LockoutThreshold;
324 } DOMAIN_GENERAL_INFORMATION2, *PDOMAIN_GENERAL_INFORMATION2;
325 #include "poppack.h"
326
327 typedef enum _GROUP_INFORMATION_CLASS
328 {
329 GroupGeneralInformation = 1,
330 GroupNameInformation,
331 GroupAttributeInformation,
332 GroupAdminCommentInformation,
333 GroupReplicationInformation
334 } GROUP_INFORMATION_CLASS;
335
336 typedef struct _GROUP_MEMBERSHIP
337 {
338 ULONG RelativeId;
339 ULONG Attributes;
340 } GROUP_MEMBERSHIP, *PGROUP_MEMBERSHIP;
341
342 typedef struct _LOGON_HOURS
343 {
344 USHORT UnitsPerWeek;
345 PUCHAR LogonHours;
346 } LOGON_HOURS, *PLOGON_HOURS;
347
348 typedef enum _USER_INFORMATION_CLASS
349 {
350 UserGeneralInformation = 1,
351 UserPreferencesInformation,
352 UserLogonInformation,
353 UserLogonHoursInformation,
354 UserAccountInformation,
355 UserNameInformation,
356 UserAccountNameInformation,
357 UserFullNameInformation,
358 UserPrimaryGroupInformation,
359 UserHomeInformation,
360 UserScriptInformation,
361 UserProfileInformation,
362 UserAdminCommentInformation,
363 UserWorkStationsInformation,
364 UserSetPasswordInformation,
365 UserControlInformation,
366 UserExpiresInformation,
367 UserInternal1Information,
368 UserInternal2Information,
369 UserParametersInformation,
370 UserAllInformation,
371 UserInternal3Information,
372 UserInternal4Information,
373 UserInternal5Information,
374 UserInternal4InformationNew,
375 UserInternal5InformationNew,
376 UserInternal6Information,
377 UserExtendedInformation,
378 UserLogonUIInformation,
379 } USER_INFORMATION_CLASS, *PUSER_INFORMATION_CLASS;
380
381 typedef struct _USER_GENERAL_INFORMATION
382 {
383 UNICODE_STRING UserName;
384 UNICODE_STRING FullName;
385 ULONG PrimaryGroupId;
386 UNICODE_STRING AdminComment;
387 UNICODE_STRING UserComment;
388 } USER_GENERAL_INFORMATION, *PUSER_GENERAL_INFORMATION;
389
390 typedef struct _USER_PREFERENCES_INFORMATION
391 {
392 UNICODE_STRING UserComment;
393 UNICODE_STRING Reserved1;
394 USHORT CountryCode;
395 USHORT CodePage;
396 } USER_PREFERENCES_INFORMATION, *PUSER_PREFERENCES_INFORMATION;
397
398 #include "pshpack4.h"
399 typedef struct _USER_LOGON_INFORMATION
400 {
401 UNICODE_STRING UserName;
402 UNICODE_STRING FullName;
403 ULONG UserId;
404 ULONG PrimaryGroupId;
405 UNICODE_STRING HomeDirectory;
406 UNICODE_STRING HomeDirectoryDrive;
407 UNICODE_STRING ScriptPath;
408 UNICODE_STRING ProfilePath;
409 UNICODE_STRING WorkStations;
410 LARGE_INTEGER LastLogon;
411 LARGE_INTEGER LastLogoff;
412 LARGE_INTEGER PasswordLastSet;
413 LARGE_INTEGER PasswordCanChange;
414 LARGE_INTEGER PasswordMustChange;
415 LOGON_HOURS LogonHours;
416 USHORT BadPasswordCount;
417 USHORT LogonCount;
418 ULONG UserAccountControl;
419 } USER_LOGON_INFORMATION, *PUSER_LOGON_INFORMATION;
420 #include "poppack.h"
421
422 typedef struct _USER_LOGON_HOURS_INFORMATION
423 {
424 LOGON_HOURS LogonHours;
425 } USER_LOGON_HOURS_INFORMATION, *PUSER_LOGON_HOURS_INFORMATION;
426
427 #include "pshpack4.h"
428 typedef struct _USER_ACCOUNT_INFORMATION
429 {
430 UNICODE_STRING UserName;
431 UNICODE_STRING FullName;
432 ULONG UserId;
433 ULONG PrimaryGroupId;
434 UNICODE_STRING HomeDirectory;
435 UNICODE_STRING HomeDirectoryDrive;
436 UNICODE_STRING ScriptPath;
437 UNICODE_STRING ProfilePath;
438 UNICODE_STRING AdminComment;
439 UNICODE_STRING WorkStations;
440 LARGE_INTEGER LastLogon;
441 LARGE_INTEGER LastLogoff;
442 LOGON_HOURS LogonHours;
443 USHORT BadPasswordCount;
444 USHORT LogonCount;
445 LARGE_INTEGER PasswordLastSet;
446 LARGE_INTEGER AccountExpires;
447 ULONG UserAccountControl;
448 } USER_ACCOUNT_INFORMATION, *PUSER_ACCOUNT_INFORMATION;
449 #include "poppack.h"
450
451 typedef struct _USER_NAME_INFORMATION
452 {
453 UNICODE_STRING UserName;
454 UNICODE_STRING FullName;
455 } USER_NAME_INFORMATION, *PUSER_NAME_INFORMATION;
456
457 typedef struct _USER_ACCOUNT_NAME_INFORMATION
458 {
459 UNICODE_STRING UserName;
460 } USER_ACCOUNT_NAME_INFORMATION, *PUSER_ACCOUNT_NAME_INFORMATION;
461
462 typedef struct _USER_FULL_NAME_INFORMATION
463 {
464 UNICODE_STRING FullName;
465 } USER_FULL_NAME_INFORMATION, *PUSER_FULL_NAME_INFORMATION;
466
467 typedef struct _USER_PRIMARY_GROUP_INFORMATION
468 {
469 ULONG PrimaryGroupId;
470 } USER_PRIMARY_GROUP_INFORMATION, *PUSER_PRIMARY_GROUP_INFORMATION;
471
472 typedef struct _USER_HOME_INFORMATION
473 {
474 UNICODE_STRING HomeDirectory;
475 UNICODE_STRING HomeDirectoryDrive;
476 } USER_HOME_INFORMATION, *PUSER_HOME_INFORMATION;
477
478 typedef struct _USER_SCRIPT_INFORMATION
479 {
480 UNICODE_STRING ScriptPath;
481 } USER_SCRIPT_INFORMATION, *PUSER_SCRIPT_INFORMATION;
482
483 typedef struct _USER_PROFILE_INFORMATION
484 {
485 UNICODE_STRING ProfilePath;
486 } USER_PROFILE_INFORMATION, *PUSER_PROFILE_INFORMATION;
487
488 typedef struct _USER_ADMIN_COMMENT_INFORMATION
489 {
490 UNICODE_STRING AdminComment;
491 } USER_ADMIN_COMMENT_INFORMATION, *PUSER_ADMIN_COMMENT_INFORMATION;
492
493 typedef struct _USER_WORKSTATIONS_INFORMATION
494 {
495 UNICODE_STRING WorkStations;
496 } USER_WORKSTATIONS_INFORMATION, *PUSER_WORKSTATIONS_INFORMATION;
497
498 typedef struct _USER_SET_PASSWORD_INFORMATION
499 {
500 UNICODE_STRING Password;
501 BOOLEAN PasswordExpired;
502 } USER_SET_PASSWORD_INFORMATION, *PUSER_SET_PASSWORD_INFORMATION;
503
504 typedef struct _USER_CONTROL_INFORMATION
505 {
506 ULONG UserAccountControl;
507 } USER_CONTROL_INFORMATION, *PUSER_CONTROL_INFORMATION;
508
509
510 #define SAM_SID_COMPATIBILITY_ALL 0
511 #define SAM_SID_COMPATIBILITY_LAX 1
512 #define SAM_SID_COMPATIBILITY_STRICT 2
513
514
515 NTSTATUS
516 NTAPI
517 SamAddMemberToAlias(IN SAM_HANDLE AliasHandle,
518 IN PSID MemberId);
519
520 NTSTATUS
521 NTAPI
522 SamAddMemberToGroup(IN SAM_HANDLE GroupHandle,
523 IN ULONG MemberId,
524 IN ULONG Attributes);
525
526 NTSTATUS
527 NTAPI
528 SamAddMultipleMembersToAlias(IN SAM_HANDLE AliasHandle,
529 IN PSID *MemberIds,
530 IN ULONG MemberCount);
531
532 NTSTATUS
533 NTAPI
534 SamCloseHandle(IN SAM_HANDLE SamHandle);
535
536 NTSTATUS
537 NTAPI
538 SamConnect(IN OUT PUNICODE_STRING ServerName,
539 OUT PSAM_HANDLE ServerHandle,
540 IN ACCESS_MASK DesiredAccess,
541 IN POBJECT_ATTRIBUTES ObjectAttributes);
542
543 NTSTATUS
544 NTAPI
545 SamCreateAliasInDomain(IN SAM_HANDLE DomainHandle,
546 IN PUNICODE_STRING AccountName,
547 IN ACCESS_MASK DesiredAccess,
548 OUT PSAM_HANDLE AliasHandle,
549 OUT PULONG RelativeId);
550
551 NTSTATUS
552 NTAPI
553 SamCreateGroupInDomain(IN SAM_HANDLE DomainHandle,
554 IN PUNICODE_STRING AccountName,
555 IN ACCESS_MASK DesiredAccess,
556 OUT PSAM_HANDLE GroupHandle,
557 OUT PULONG RelativeId);
558
559 NTSTATUS
560 NTAPI
561 SamCreateUser2InDomain(IN SAM_HANDLE DomainHandle,
562 IN PUNICODE_STRING AccountName,
563 IN ULONG AccountType,
564 IN ACCESS_MASK DesiredAccess,
565 OUT PSAM_HANDLE UserHandle,
566 OUT PULONG GrantedAccess,
567 OUT PULONG RelativeId);
568
569 NTSTATUS
570 NTAPI
571 SamCreateUserInDomain(IN SAM_HANDLE DomainHandle,
572 IN PUNICODE_STRING AccountName,
573 IN ACCESS_MASK DesiredAccess,
574 OUT PSAM_HANDLE UserHandle,
575 OUT PULONG RelativeId);
576
577 NTSTATUS
578 NTAPI
579 SamDeleteAlias(IN SAM_HANDLE AliasHandle);
580
581 NTSTATUS
582 NTAPI
583 SamDeleteGroup(IN SAM_HANDLE GroupHandle);
584
585 NTSTATUS
586 NTAPI
587 SamDeleteUser(IN SAM_HANDLE UserHandle);
588
589 NTSTATUS
590 NTAPI
591 SamEnumerateAliasesInDomain(IN SAM_HANDLE DomainHandle,
592 IN OUT PSAM_ENUMERATE_HANDLE EnumerationContext,
593 OUT PVOID *Buffer,
594 IN ULONG PreferedMaximumLength,
595 OUT PULONG CountReturned);
596
597 NTSTATUS
598 NTAPI
599 SamEnumerateDomainsInSamServer(IN SAM_HANDLE ServerHandle,
600 IN OUT PSAM_ENUMERATE_HANDLE EnumerationContext,
601 OUT PVOID *Buffer,
602 IN ULONG PreferedMaximumLength,
603 OUT PULONG CountReturned);
604
605 NTSTATUS
606 NTAPI
607 SamEnumerateGroupsInDomain(IN SAM_HANDLE DomainHandle,
608 IN OUT PSAM_ENUMERATE_HANDLE EnumerationContext,
609 IN PVOID *Buffer,
610 IN ULONG PreferedMaximumLength,
611 OUT PULONG CountReturned);
612
613 NTSTATUS
614 NTAPI
615 SamEnumerateUsersInDomain(IN SAM_HANDLE DomainHandle,
616 IN OUT PSAM_ENUMERATE_HANDLE EnumerationContext,
617 IN ULONG UserAccountControl,
618 OUT PVOID *Buffer,
619 IN ULONG PreferedMaximumLength,
620 OUT PULONG CountReturned);
621
622 NTSTATUS
623 NTAPI
624 SamFreeMemory(IN PVOID Buffer);
625
626 NTSTATUS
627 NTAPI
628 SamGetAliasMembership(IN SAM_HANDLE DomainHandle,
629 IN ULONG PassedCount,
630 IN PSID *Sids,
631 OUT PULONG MembershipCount,
632 OUT PULONG *Aliases);
633
634 NTSTATUS
635 NTAPI
636 SamGetCompatibilityMode(IN SAM_HANDLE ObjectHandle,
637 OUT PULONG Mode);
638
639 NTSTATUS
640 NTAPI
641 SamGetGroupsForUser(IN SAM_HANDLE UserHandle,
642 OUT PGROUP_MEMBERSHIP *Groups,
643 OUT PULONG MembershipCount);
644
645 NTSTATUS
646 NTAPI
647 SamGetMembersInAlias(IN SAM_HANDLE AliasHandle,
648 OUT PSID **MemberIds,
649 OUT PULONG MemberCount);
650
651 NTSTATUS
652 NTAPI
653 SamGetMembersInGroup(IN SAM_HANDLE GroupHandle,
654 OUT PULONG *MemberIds,
655 OUT PULONG *Attributes,
656 OUT PULONG MemberCount);
657
658 NTSTATUS
659 NTAPI
660 SamLookupDomainInSamServer(IN SAM_HANDLE ServerHandle,
661 IN PUNICODE_STRING Name,
662 OUT PSID *DomainId);
663
664 NTSTATUS
665 NTAPI
666 SamLookupIdsInDomain(IN SAM_HANDLE DomainHandle,
667 IN ULONG Count,
668 IN PULONG RelativeIds,
669 OUT PUNICODE_STRING *Names,
670 OUT PSID_NAME_USE *Use);
671
672 NTSTATUS
673 NTAPI
674 SamLookupNamesInDomain(IN SAM_HANDLE DomainHandle,
675 IN ULONG Count,
676 IN PUNICODE_STRING Names,
677 OUT PULONG *RelativeIds,
678 OUT PSID_NAME_USE *Use);
679
680 NTSTATUS
681 NTAPI
682 SamOpenAlias(IN SAM_HANDLE DomainHandle,
683 IN ACCESS_MASK DesiredAccess,
684 IN ULONG AliasId,
685 OUT PSAM_HANDLE AliasHandle);
686
687 NTSTATUS
688 NTAPI
689 SamOpenDomain(IN SAM_HANDLE ServerHandle,
690 IN ACCESS_MASK DesiredAccess,
691 IN PSID DomainId,
692 OUT PSAM_HANDLE DomainHandle);
693
694 NTSTATUS
695 NTAPI
696 SamOpenGroup(IN SAM_HANDLE DomainHandle,
697 IN ACCESS_MASK DesiredAccess,
698 IN ULONG GroupId,
699 OUT PSAM_HANDLE GroupHandle);
700
701 NTSTATUS
702 NTAPI
703 SamOpenUser(IN SAM_HANDLE DomainHandle,
704 IN ACCESS_MASK DesiredAccess,
705 IN ULONG UserId,
706 OUT PSAM_HANDLE UserHandle);
707
708 NTSTATUS
709 NTAPI
710 SamQueryInformationAlias(IN SAM_HANDLE AliasHandle,
711 IN ALIAS_INFORMATION_CLASS AliasInformationClass,
712 OUT PVOID *Buffer);
713
714 NTSTATUS
715 NTAPI
716 SamQueryInformationDomain(IN SAM_HANDLE DomainHandle,
717 IN DOMAIN_INFORMATION_CLASS DomainInformationClass,
718 OUT PVOID *Buffer);
719
720 NTSTATUS
721 NTAPI
722 SamQueryInformationGroup(IN SAM_HANDLE GroupHandle,
723 IN GROUP_INFORMATION_CLASS GroupInformationClass,
724 OUT PVOID *Buffer);
725
726 NTSTATUS
727 NTAPI
728 SamQueryInformationUser(IN SAM_HANDLE UserHandle,
729 IN USER_INFORMATION_CLASS UserInformationClass,
730 OUT PVOID *Buffer);
731
732 NTSTATUS
733 NTAPI
734 SamQuerySecurityObject(IN SAM_HANDLE ObjectHandle,
735 IN SECURITY_INFORMATION SecurityInformation,
736 OUT PSECURITY_DESCRIPTOR *SecurityDescriptor);
737
738 NTSTATUS
739 NTAPI
740 SamRemoveMemberFromAlias(IN SAM_HANDLE AliasHandle,
741 IN PSID MemberId);
742
743 NTSTATUS
744 NTAPI
745 SamRemoveMemberFromForeignDomain(IN SAM_HANDLE DomainHandle,
746 IN PSID MemberId);
747
748 NTSTATUS
749 NTAPI
750 SamRemoveMemberFromGroup(IN SAM_HANDLE GroupHandle,
751 IN ULONG MemberId);
752
753 NTSTATUS
754 NTAPI
755 SamRemoveMultipleMembersFromAlias(IN SAM_HANDLE AliasHandle,
756 IN PSID *MemberIds,
757 IN ULONG MemberCount);
758
759 NTSTATUS
760 NTAPI
761 SamRidToSid(IN SAM_HANDLE ObjectHandle,
762 IN ULONG Rid,
763 OUT PSID *Sid);
764
765 NTSTATUS
766 NTAPI
767 SamSetInformationAlias(IN SAM_HANDLE AliasHandle,
768 IN ALIAS_INFORMATION_CLASS AliasInformationClass,
769 IN PVOID Buffer);
770
771 NTSTATUS
772 NTAPI
773 SamSetInformationDomain(IN SAM_HANDLE DomainHandle,
774 IN DOMAIN_INFORMATION_CLASS DomainInformationClass,
775 IN PVOID Buffer);
776
777 NTSTATUS
778 NTAPI
779 SamSetInformationGroup(IN SAM_HANDLE GroupHandle,
780 IN GROUP_INFORMATION_CLASS GroupInformationClass,
781 IN PVOID Buffer);
782
783 NTSTATUS
784 NTAPI
785 SamSetInformationUser(IN SAM_HANDLE UserHandle,
786 IN USER_INFORMATION_CLASS UserInformationClass,
787 IN PVOID Buffer);
788
789 NTSTATUS
790 NTAPI
791 SamSetMemberAttributesOfGroup(IN SAM_HANDLE GroupHandle,
792 IN ULONG MemberId,
793 IN ULONG Attributes);
794
795 NTSTATUS
796 NTAPI
797 SamSetSecurityObject(IN SAM_HANDLE ObjectHandle,
798 IN SECURITY_INFORMATION SecurityInformation,
799 IN PSECURITY_DESCRIPTOR SecurityDescriptor);
800
801 NTSTATUS
802 NTAPI
803 SamShutdownSamServer(IN SAM_HANDLE ServerHandle);
804
805 #ifdef __cplusplus
806 }
807 #endif
808
809 #endif /* _NTSAM_ */