[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 ALIAS_ADD_MEMBER 1
10 #define ALIAS_REMOVE_MEMBER 2
11 #define ALIAS_LIST_MEMBERS 4
12 #define ALIAS_READ_INFORMATION 8
13 #define ALIAS_WRITE_ACCOUNT 16
14
15 #define DOMAIN_READ_PASSWORD_PARAMETERS 1
16 #define DOMAIN_WRITE_PASSWORD_PARAMS 2
17 #define DOMAIN_READ_OTHER_PARAMETERS 4
18 #define DOMAIN_WRITE_OTHER_PARAMETERS 8
19 #define DOMAIN_CREATE_USER 16
20 #define DOMAIN_CREATE_GROUP 32
21 #define DOMAIN_CREATE_ALIAS 64
22 #define DOMAIN_GET_ALIAS_MEMBERSHIP 128
23 #define DOMAIN_LIST_ACCOUNTS 256
24 #define DOMAIN_LOOKUP 512
25 #define DOMAIN_ADMINISTER_SERVER 1024
26
27 #define SAM_SERVER_CONNECT 1
28 #define SAM_SERVER_SHUTDOWN 2
29 #define SAM_SERVER_INITIALIZE 4
30 #define SAM_SERVER_CREATE_DOMAIN 8
31 #define SAM_SERVER_ENUMERATE_DOMAINS 16
32 #define SAM_SERVER_LOOKUP_DOMAIN 32
33
34 #define USER_READ_GENERAL 1
35 #define USER_READ_PREFERENCES 2
36 #define USER_WRITE_PREFERENCES 4
37 #define USER_READ_LOGON 8
38 #define USER_READ_ACCOUNT 16
39 #define USER_WRITE_ACCOUNT 32
40 #define USER_CHANGE_PASSWORD 64
41 #define USER_FORCE_PASSWORD_CHANGE 128
42 #define USER_LIST_GROUPS 256
43 #define USER_READ_GROUP_INFORMATION 512
44 #define USER_WRITE_GROUP_INFORMATION 1024
45
46 typedef PVOID SAM_HANDLE, *PSAM_HANDLE;
47 typedef ULONG SAM_ENUMERATE_HANDLE, *PSAM_ENUMERATE_HANDLE;
48
49 typedef struct _SAM_RID_ENUMERATION
50 {
51 ULONG RelativeId;
52 UNICODE_STRING Name;
53 } SAM_RID_ENUMERATION, *PSAM_RID_ENUMERATION;
54
55 typedef struct _SAM_SID_ENUMERATION
56 {
57 PSID Sid;
58 UNICODE_STRING Name;
59 } SAM_SID_ENUMERATION, *PSAM_SID_ENUMERATION;
60
61 typedef enum _ALIAS_INFORMATION_CLASS
62 {
63 AliasGeneralInformation = 1,
64 AliasNameInformation,
65 AliasAdminCommentInformation
66 } ALIAS_INFORMATION_CLASS, *PALIAS_INFORMATION_CLASS;
67
68 typedef struct _SAMPR_ALIAS_GENERAL_INFORMATION
69 {
70 UNICODE_STRING Name;
71 ULONG MemberCount;
72 UNICODE_STRING AdminComment;
73 } SAMPR_ALIAS_GENERAL_INFORMATION, *PSAMPR_ALIAS_GENERAL_INFORMATION;
74
75 typedef struct _SAMPR_ALIAS_NAME_INFORMATION
76 {
77 UNICODE_STRING Name;
78 } SAMPR_ALIAS_NAME_INFORMATION, *PSAMPR_ALIAS_NAME_INFORMATION;
79
80 typedef struct _SAMPR_ALIAS_ADM_COMMENT_INFORMATION
81 {
82 UNICODE_STRING AdminComment;
83 } SAMPR_ALIAS_ADM_COMMENT_INFORMATION, *PSAMPR_ALIAS_ADM_COMMENT_INFORMATION;
84
85
86 typedef enum _DOMAIN_INFORMATION_CLASS
87 {
88 DomainPasswordInformation = 1,
89 DomainGeneralInformation,
90 DomainLogoffInformation,
91 DomainOemInformation,
92 DomainNameInformation,
93 DomainReplicationInformation,
94 DomainServerRoleInformation,
95 DomainModifiedInformation,
96 DomainStateInformation,
97 DomainUasInformation,
98 DomainGeneralInformation2,
99 DomainLockoutInformation,
100 DomainModifiedInformation2
101 } DOMAIN_INFORMATION_CLASS;
102
103 typedef struct _DOMAIN_NAME_INFORMATION
104 {
105 UNICODE_STRING DomainName;
106 } DOMAIN_NAME_INFORMATION, *PDOMAIN_NAME_INFORMATION;
107
108 typedef enum _USER_INFORMATION_CLASS
109 {
110 UserGeneralInformation = 1,
111 UserPreferencesInformation,
112 UserLogonInformation,
113 UserLogonHoursInformation,
114 UserAccountInformation,
115 UserNameInformation,
116 UserAccountNameInformation,
117 UserFullNameInformation,
118 UserPrimaryGroupInformation,
119 UserHomeInformation,
120 UserScriptInformation,
121 UserProfileInformation,
122 UserAdminCommentInformation,
123 UserWorkStationsInformation,
124 UserSetPasswordInformation,
125 UserControlInformation,
126 UserExpiresInformation,
127 UserInternal1Information,
128 UserInternal2Information,
129 UserParametersInformation,
130 UserAllInformation,
131 UserInternal3Information,
132 UserInternal4Information,
133 UserInternal5Information,
134 UserInternal4InformationNew,
135 UserInternal5InformationNew,
136 UserInternal6Information,
137 UserExtendedInformation,
138 UserLogonUIInformation,
139 } USER_INFORMATION_CLASS, *PUSER_INFORMATION_CLASS;
140
141 typedef struct _USER_SET_PASSWORD_INFORMATION
142 {
143 UNICODE_STRING Password;
144 BOOLEAN PasswordExpired;
145 } USER_SET_PASSWORD_INFORMATION, *PUSER_SET_PASSWORD_INFORMATION;
146
147
148 NTSTATUS
149 NTAPI
150 SamAddMemberToAlias(IN SAM_HANDLE AliasHandle,
151 IN PSID MemberId);
152
153 NTSTATUS
154 NTAPI
155 SamCloseHandle(IN SAM_HANDLE SamHandle);
156
157 NTSTATUS
158 NTAPI
159 SamConnect(IN OUT PUNICODE_STRING ServerName,
160 OUT PSAM_HANDLE ServerHandle,
161 IN ACCESS_MASK DesiredAccess,
162 IN POBJECT_ATTRIBUTES ObjectAttributes);
163
164 NTSTATUS
165 NTAPI
166 SamCreateAliasInDomain(IN SAM_HANDLE DomainHandle,
167 IN PUNICODE_STRING AccountName,
168 IN ACCESS_MASK DesiredAccess,
169 OUT PSAM_HANDLE AliasHandle,
170 OUT PULONG RelativeId);
171
172 NTSTATUS
173 NTAPI
174 SamCreateUserInDomain(IN SAM_HANDLE DomainHandle,
175 IN PUNICODE_STRING AccountName,
176 IN ACCESS_MASK DesiredAccess,
177 OUT PSAM_HANDLE UserHandle,
178 OUT PULONG RelativeId);
179
180 NTSTATUS
181 NTAPI
182 SamEnumerateAliasesInDomain(IN SAM_HANDLE DomainHandle,
183 IN OUT PSAM_ENUMERATE_HANDLE EnumerationContext,
184 OUT PVOID *Buffer,
185 IN ULONG PreferedMaximumLength,
186 OUT PULONG CountReturned);
187
188 NTSTATUS
189 NTAPI
190 SamEnumerateDomainsInSamServer(IN SAM_HANDLE ServerHandle,
191 IN OUT PSAM_ENUMERATE_HANDLE EnumerationContext,
192 OUT PVOID *Buffer,
193 IN ULONG PreferedMaximumLength,
194 OUT PULONG CountReturned);
195
196 NTSTATUS
197 NTAPI
198 SamFreeMemory(IN PVOID Buffer);
199
200 NTSTATUS
201 NTAPI
202 SamGetAliasMembership(IN SAM_HANDLE DomainHandle,
203 IN ULONG PassedCount,
204 IN PSID *Sids,
205 OUT PULONG MembershipCount,
206 OUT PULONG *Aliases);
207
208 NTSTATUS
209 NTAPI
210 SamGetMembersInAlias(IN SAM_HANDLE AliasHandle,
211 OUT PSID **MemberIds,
212 OUT PULONG MemberCount);
213
214 NTSTATUS
215 NTAPI
216 SamLookupDomainInSamServer(IN SAM_HANDLE ServerHandle,
217 IN PUNICODE_STRING Name,
218 OUT PSID *DomainId);
219
220 NTSTATUS
221 NTAPI
222 SamLookupNamesInDomain(IN SAM_HANDLE DomainHandle,
223 IN ULONG Count,
224 IN PUNICODE_STRING Names,
225 OUT PULONG *RelativeIds,
226 OUT PSID_NAME_USE *Use);
227
228 NTSTATUS
229 NTAPI
230 SamOpenAlias(IN SAM_HANDLE DomainHandle,
231 IN ACCESS_MASK DesiredAccess,
232 IN ULONG AliasId,
233 OUT PSAM_HANDLE AliasHandle);
234
235 NTSTATUS
236 NTAPI
237 SamOpenDomain(IN SAM_HANDLE ServerHandle,
238 IN ACCESS_MASK DesiredAccess,
239 IN PSID DomainId,
240 OUT PSAM_HANDLE DomainHandle);
241
242 NTSTATUS
243 NTAPI
244 SamOpenUser(IN SAM_HANDLE DomainHandle,
245 IN ACCESS_MASK DesiredAccess,
246 IN ULONG UserId,
247 OUT PSAM_HANDLE UserHandle);
248
249 NTSTATUS
250 NTAPI
251 SamQueryInformationAlias(IN SAM_HANDLE AliasHandle,
252 IN ALIAS_INFORMATION_CLASS AliasInformationClass,
253 OUT PVOID *Buffer);
254
255 NTSTATUS
256 NTAPI
257 SamQueryInformationDomain(IN SAM_HANDLE DomainHandle,
258 IN DOMAIN_INFORMATION_CLASS DomainInformationClass,
259 OUT PVOID *Buffer);
260
261 NTSTATUS
262 NTAPI
263 SamQueryInformationUser(IN SAM_HANDLE UserHandle,
264 IN USER_INFORMATION_CLASS UserInformationClass,
265 OUT PVOID *Buffer);
266
267 NTSTATUS
268 NTAPI
269 SamSetInformationAlias(IN SAM_HANDLE AliasHandle,
270 IN ALIAS_INFORMATION_CLASS AliasInformationClass,
271 IN PVOID Buffer);
272
273 NTSTATUS
274 NTAPI
275 SamSetInformationDomain(IN SAM_HANDLE DomainHandle,
276 IN DOMAIN_INFORMATION_CLASS DomainInformationClass,
277 IN PVOID DomainInformation);
278
279 NTSTATUS
280 NTAPI
281 SamSetInformationUser(IN SAM_HANDLE UserHandle,
282 IN USER_INFORMATION_CLASS UserInformationClass,
283 IN PVOID Buffer);
284
285 NTSTATUS
286 NTAPI
287 SamShutdownSamServer(IN SAM_HANDLE ServerHandle);
288
289
290 #ifdef __cplusplus
291 }
292 #endif
293
294 #endif /* _NTSAM_ */