[SAMLIB]
[reactos.git] / reactos / include / ddk / ntsam.h
1
2 #ifndef _NTSAM_
3 #define _NTSAM_
4
5 #ifdef __cplusplus
6 extern "C" {
7 #endif
8
9 #define DOMAIN_READ_PASSWORD_PARAMETERS 1
10 #define DOMAIN_WRITE_PASSWORD_PARAMS 2
11 #define DOMAIN_READ_OTHER_PARAMETERS 4
12 #define DOMAIN_WRITE_OTHER_PARAMETERS 8
13 #define DOMAIN_CREATE_USER 16
14 #define DOMAIN_CREATE_GROUP 32
15 #define DOMAIN_CREATE_ALIAS 64
16 #define DOMAIN_GET_ALIAS_MEMBERSHIP 128
17 #define DOMAIN_LIST_ACCOUNTS 256
18 #define DOMAIN_LOOKUP 512
19 #define DOMAIN_ADMINISTER_SERVER 1024
20
21 #define SAM_SERVER_CONNECT 1
22 #define SAM_SERVER_SHUTDOWN 2
23 #define SAM_SERVER_INITIALIZE 4
24 #define SAM_SERVER_CREATE_DOMAIN 8
25 #define SAM_SERVER_ENUMERATE_DOMAINS 16
26 #define SAM_SERVER_LOOKUP_DOMAIN 32
27
28 #define USER_READ_GENERAL 1
29 #define USER_READ_PREFERENCES 2
30 #define USER_WRITE_PREFERENCES 4
31 #define USER_READ_LOGON 8
32 #define USER_READ_ACCOUNT 16
33 #define USER_WRITE_ACCOUNT 32
34 #define USER_CHANGE_PASSWORD 64
35 #define USER_FORCE_PASSWORD_CHANGE 128
36 #define USER_LIST_GROUPS 256
37 #define USER_READ_GROUP_INFORMATION 512
38 #define USER_WRITE_GROUP_INFORMATION 1024
39
40 typedef PVOID SAM_HANDLE, *PSAM_HANDLE;
41
42 typedef enum _USER_INFORMATION_CLASS
43 {
44 UserGeneralInformation = 1,
45 UserPreferencesInformation,
46 UserLogonInformation,
47 UserLogonHoursInformation,
48 UserAccountInformation,
49 UserNameInformation,
50 UserAccountNameInformation,
51 UserFullNameInformation,
52 UserPrimaryGroupInformation,
53 UserHomeInformation,
54 UserScriptInformation,
55 UserProfileInformation,
56 UserAdminCommentInformation,
57 UserWorkStationsInformation,
58 UserSetPasswordInformation,
59 UserControlInformation,
60 UserExpiresInformation,
61 UserInternal1Information,
62 UserInternal2Information,
63 UserParametersInformation,
64 UserAllInformation,
65 UserInternal3Information,
66 UserInternal4Information,
67 UserInternal5Information,
68 UserInternal4InformationNew,
69 UserInternal5InformationNew,
70 UserInternal6Information,
71 UserExtendedInformation,
72 UserLogonUIInformation,
73 } USER_INFORMATION_CLASS, *PUSER_INFORMATION_CLASS;
74
75 typedef struct _USER_SET_PASSWORD_INFORMATION
76 {
77 UNICODE_STRING Password;
78 BOOLEAN PasswordExpired;
79 } USER_SET_PASSWORD_INFORMATION, *PUSER_SET_PASSWORD_INFORMATION;
80
81
82 NTSTATUS
83 NTAPI
84 SamCloseHandle(IN SAM_HANDLE SamHandle);
85
86 NTSTATUS
87 NTAPI
88 SamConnect(IN OUT PUNICODE_STRING ServerName,
89 OUT PSAM_HANDLE ServerHandle,
90 IN ACCESS_MASK DesiredAccess,
91 IN POBJECT_ATTRIBUTES ObjectAttributes);
92
93 NTSTATUS
94 NTAPI
95 SamCreateUserInDomain(IN SAM_HANDLE DomainHandle,
96 IN PUNICODE_STRING AccountName,
97 IN ACCESS_MASK DesiredAccess,
98 OUT PSAM_HANDLE UserHandle,
99 OUT PULONG RelativeId);
100
101 NTSTATUS
102 NTAPI
103 SamFreeMemory(IN PVOID Buffer);
104
105 NTSTATUS
106 NTAPI
107 SamLookupDomainInSamServer(IN SAM_HANDLE ServerHandle,
108 IN PUNICODE_STRING Name,
109 OUT PSID *DomainId);
110
111 NTSTATUS
112 NTAPI
113 SamOpenDomain(IN SAM_HANDLE ServerHandle,
114 IN ACCESS_MASK DesiredAccess,
115 IN PSID DomainId,
116 OUT PSAM_HANDLE DomainHandle);
117
118 NTSTATUS
119 NTAPI
120 SamOpenUser(IN SAM_HANDLE DomainHandle,
121 IN ACCESS_MASK DesiredAccess,
122 IN ULONG UserId,
123 OUT PSAM_HANDLE UserHandle);
124
125 NTSTATUS
126 NTAPI
127 SamQueryInformationUser(IN SAM_HANDLE UserHandle,
128 IN USER_INFORMATION_CLASS UserInformationClass,
129 OUT PVOID *Buffer);
130
131 NTSTATUS
132 NTAPI
133 SamSetInformationUser(IN SAM_HANDLE UserHandle,
134 IN USER_INFORMATION_CLASS UserInformationClass,
135 IN PVOID Buffer);
136
137 NTSTATUS
138 NTAPI
139 SamShutdownSamServer(IN SAM_HANDLE ServerHandle);
140
141
142 #ifdef __cplusplus
143 }
144 #endif
145
146 #endif /* _NTSAM_ */