0d3a268d6110c8166e00ba3ed0f12f1083d494df
[reactos.git] / reactos / include / ndk / sefuncs.h
1 /*++ NDK Version: 0095
2
3 Copyright (c) Alex Ionescu. All rights reserved.
4
5 Header Name:
6
7 sefuncs.h
8
9 Abstract:
10
11 Function definitions for the security manager.
12
13 Author:
14
15 Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
16
17 --*/
18
19 #ifndef _SEFUNCS_H
20 #define _SEFUNCS_H
21
22 //
23 // Dependencies
24 //
25 #include <umtypes.h>
26
27 #ifndef NTOS_MODE_USER
28
29 //
30 // Security Descriptors
31 //
32 NTSTATUS
33 NTAPI
34 SeCaptureSecurityDescriptor(
35 IN PSECURITY_DESCRIPTOR OriginalSecurityDescriptor,
36 IN KPROCESSOR_MODE CurrentMode,
37 IN POOL_TYPE PoolType,
38 IN BOOLEAN CaptureIfKernel,
39 OUT PSECURITY_DESCRIPTOR *CapturedSecurityDescriptor
40 );
41
42 NTSTATUS
43 NTAPI
44 SeReleaseSecurityDescriptor(
45 IN PSECURITY_DESCRIPTOR CapturedSecurityDescriptor,
46 IN KPROCESSOR_MODE CurrentMode,
47 IN BOOLEAN CaptureIfKernelMode
48 );
49
50 //
51 // Access States
52 //
53 NTSTATUS
54 NTAPI
55 SeCreateAccessState(
56 PACCESS_STATE AccessState,
57 PAUX_DATA AuxData,
58 ACCESS_MASK Access,
59 PGENERIC_MAPPING GenericMapping
60 );
61
62 VOID
63 NTAPI
64 SeDeleteAccessState(
65 IN PACCESS_STATE AccessState
66 );
67
68 //
69 // Impersonation
70 //
71 SECURITY_IMPERSONATION_LEVEL
72 NTAPI
73 SeTokenImpersonationLevel(
74 IN PACCESS_TOKEN Token
75 );
76
77 #endif
78
79 //
80 // Native Calls
81 //
82 NTSTATUS
83 NTAPI
84 NtAccessCheck(
85 IN PSECURITY_DESCRIPTOR SecurityDescriptor,
86 IN HANDLE ClientToken,
87 IN ACCESS_MASK DesiredAccess,
88 IN PGENERIC_MAPPING GenericMapping,
89 OUT PPRIVILEGE_SET PrivilegeSet,
90 OUT PULONG ReturnLength,
91 OUT PACCESS_MASK GrantedAccess,
92 OUT PNTSTATUS AccessStatus
93 );
94
95 NTSYSCALLAPI
96 NTSTATUS
97 NTAPI
98 NtAccessCheckAndAuditAlarm(
99 IN PUNICODE_STRING SubsystemName,
100 IN PVOID HandleId,
101 IN PUNICODE_STRING ObjectTypeName,
102 IN PUNICODE_STRING ObjectName,
103 IN PSECURITY_DESCRIPTOR SecurityDescriptor,
104 IN ACCESS_MASK DesiredAccess,
105 IN PGENERIC_MAPPING GenericMapping,
106 IN BOOLEAN ObjectCreation,
107 OUT PACCESS_MASK GrantedAccess,
108 OUT PNTSTATUS AccessStatus,
109 OUT PBOOLEAN GenerateOnClose
110 );
111
112 NTSYSCALLAPI
113 NTSTATUS
114 NTAPI
115 NtAdjustGroupsToken(
116 IN HANDLE TokenHandle,
117 IN BOOLEAN ResetToDefault,
118 IN PTOKEN_GROUPS NewState,
119 IN ULONG BufferLength,
120 OUT PTOKEN_GROUPS PreviousState OPTIONAL,
121 OUT PULONG ReturnLength
122 );
123
124 NTSYSCALLAPI
125 NTSTATUS
126 NTAPI
127 NtAdjustPrivilegesToken(
128 IN HANDLE TokenHandle,
129 IN BOOLEAN DisableAllPrivileges,
130 IN PTOKEN_PRIVILEGES NewState,
131 IN ULONG BufferLength,
132 OUT PTOKEN_PRIVILEGES PreviousState,
133 OUT PULONG ReturnLength
134 );
135
136 NTSTATUS
137 NTAPI
138 NtAllocateLocallyUniqueId(
139 OUT LUID *LocallyUniqueId
140 );
141
142 NTSTATUS
143 NTAPI
144 NtAllocateUuids(
145 PULARGE_INTEGER Time,
146 PULONG Range,
147 PULONG Sequence,
148 PUCHAR Seed
149 );
150
151 NTSTATUS
152 NTAPI
153 NtCreateToken(
154 OUT PHANDLE TokenHandle,
155 IN ACCESS_MASK DesiredAccess,
156 IN POBJECT_ATTRIBUTES ObjectAttributes,
157 IN TOKEN_TYPE TokenType,
158 IN PLUID AuthenticationId,
159 IN PLARGE_INTEGER ExpirationTime,
160 IN PTOKEN_USER TokenUser,
161 IN PTOKEN_GROUPS TokenGroups,
162 IN PTOKEN_PRIVILEGES TokenPrivileges,
163 IN PTOKEN_OWNER TokenOwner,
164 IN PTOKEN_PRIMARY_GROUP TokenPrimaryGroup,
165 IN PTOKEN_DEFAULT_DACL TokenDefaultDacl,
166 IN PTOKEN_SOURCE TokenSource
167 );
168
169 NTSYSCALLAPI
170 NTSTATUS
171 NTAPI
172 NtDuplicateToken(
173 IN HANDLE ExistingTokenHandle,
174 IN ACCESS_MASK DesiredAccess,
175 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
176 IN BOOLEAN EffectiveOnly,
177 IN TOKEN_TYPE TokenType,
178 OUT PHANDLE NewTokenHandle
179 );
180
181 NTSYSCALLAPI
182 NTSTATUS
183 NTAPI
184 NtImpersonateAnonymousToken(
185 IN HANDLE Thread
186 );
187
188 NTSYSCALLAPI
189 NTSTATUS
190 NTAPI
191 NtOpenObjectAuditAlarm(
192 IN PUNICODE_STRING SubsystemName,
193 IN PVOID HandleId,
194 IN PUNICODE_STRING ObjectTypeName,
195 IN PUNICODE_STRING ObjectName,
196 IN PSECURITY_DESCRIPTOR SecurityDescriptor,
197 IN HANDLE ClientToken,
198 IN ULONG DesiredAccess,
199 IN ULONG GrantedAccess,
200 IN PPRIVILEGE_SET Privileges,
201 IN BOOLEAN ObjectCreation,
202 IN BOOLEAN AccessGranted,
203 OUT PBOOLEAN GenerateOnClose
204 );
205
206 NTSYSCALLAPI
207 NTSTATUS
208 NTAPI
209 NtOpenProcessToken(
210 IN HANDLE ProcessHandle,
211 IN ACCESS_MASK DesiredAccess,
212 OUT PHANDLE TokenHandle
213 );
214
215 NTSYSCALLAPI
216 NTSTATUS
217 NTAPI
218 NtOpenProcessTokenEx(
219 IN HANDLE ProcessHandle,
220 IN ACCESS_MASK DesiredAccess,
221 IN ULONG HandleAttributes,
222 OUT PHANDLE TokenHandle
223 );
224
225 NTSYSCALLAPI
226 NTSTATUS
227 NTAPI
228 NtPrivilegeCheck(
229 IN HANDLE ClientToken,
230 IN PPRIVILEGE_SET RequiredPrivileges,
231 IN PBOOLEAN Result
232 );
233
234 NTSYSCALLAPI
235 NTSTATUS
236 NTAPI
237 NtPrivilegedServiceAuditAlarm(
238 IN PUNICODE_STRING SubsystemName,
239 IN PUNICODE_STRING ServiceName,
240 IN HANDLE ClientToken,
241 IN PPRIVILEGE_SET Privileges,
242 IN BOOLEAN AccessGranted
243 );
244
245 NTSYSCALLAPI
246 NTSTATUS
247 NTAPI
248 NtPrivilegeObjectAuditAlarm(
249 IN PUNICODE_STRING SubsystemName,
250 IN PVOID HandleId,
251 IN HANDLE ClientToken,
252 IN ULONG DesiredAccess,
253 IN PPRIVILEGE_SET Privileges,
254 IN BOOLEAN AccessGranted
255 );
256
257 NTSYSCALLAPI
258 NTSTATUS
259 NTAPI
260 NtQueryInformationToken(
261 IN HANDLE TokenHandle,
262 IN TOKEN_INFORMATION_CLASS TokenInformationClass,
263 OUT PVOID TokenInformation,
264 IN ULONG TokenInformationLength,
265 OUT PULONG ReturnLength
266 );
267
268 NTSYSCALLAPI
269 NTSTATUS
270 NTAPI
271 NtSetInformationToken(
272 IN HANDLE TokenHandle,
273 IN TOKEN_INFORMATION_CLASS TokenInformationClass,
274 OUT PVOID TokenInformation,
275 IN ULONG TokenInformationLength
276 );
277
278 NTSTATUS
279 NTAPI
280 ZwAccessCheck(
281 IN PSECURITY_DESCRIPTOR SecurityDescriptor,
282 IN HANDLE ClientToken,
283 IN ACCESS_MASK DesiredAccess,
284 IN PGENERIC_MAPPING GenericMapping,
285 OUT PPRIVILEGE_SET PrivilegeSet,
286 OUT PULONG ReturnLength,
287 OUT PACCESS_MASK GrantedAccess,
288 OUT PNTSTATUS AccessStatus
289 );
290
291 NTSYSCALLAPI
292 NTSTATUS
293 NTAPI
294 ZwAdjustGroupsToken(
295 IN HANDLE TokenHandle,
296 IN BOOLEAN ResetToDefault,
297 IN PTOKEN_GROUPS NewState,
298 IN ULONG BufferLength,
299 OUT PTOKEN_GROUPS PreviousState OPTIONAL,
300 OUT PULONG ReturnLength
301 );
302
303 NTSYSCALLAPI
304 NTSTATUS
305 NTAPI
306 ZwAdjustPrivilegesToken(
307 IN HANDLE TokenHandle,
308 IN BOOLEAN DisableAllPrivileges,
309 IN PTOKEN_PRIVILEGES NewState,
310 IN ULONG BufferLength,
311 OUT PTOKEN_PRIVILEGES PreviousState,
312 OUT PULONG ReturnLength
313 );
314
315 NTSTATUS
316 NTAPI
317 ZwAllocateLocallyUniqueId(
318 OUT LUID *LocallyUniqueId
319 );
320
321 NTSTATUS
322 NTAPI
323 ZwAllocateUuids(
324 PULARGE_INTEGER Time,
325 PULONG Range,
326 PULONG Sequence,
327 PUCHAR Seed
328 );
329
330 NTSTATUS
331 NTAPI
332 ZwCreateToken(
333 OUT PHANDLE TokenHandle,
334 IN ACCESS_MASK DesiredAccess,
335 IN POBJECT_ATTRIBUTES ObjectAttributes,
336 IN TOKEN_TYPE TokenType,
337 IN PLUID AuthenticationId,
338 IN PLARGE_INTEGER ExpirationTime,
339 IN PTOKEN_USER TokenUser,
340 IN PTOKEN_GROUPS TokenGroups,
341 IN PTOKEN_PRIVILEGES TokenPrivileges,
342 IN PTOKEN_OWNER TokenOwner,
343 IN PTOKEN_PRIMARY_GROUP TokenPrimaryGroup,
344 IN PTOKEN_DEFAULT_DACL TokenDefaultDacl,
345 IN PTOKEN_SOURCE TokenSource
346 );
347
348 NTSYSCALLAPI
349 NTSTATUS
350 NTAPI
351 ZwDuplicateToken(
352 IN HANDLE ExistingTokenHandle,
353 IN ACCESS_MASK DesiredAccess,
354 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
355 IN BOOLEAN EffectiveOnly,
356 IN TOKEN_TYPE TokenType,
357 OUT PHANDLE NewTokenHandle
358 );
359
360 NTSYSCALLAPI
361 NTSTATUS
362 NTAPI
363 ZwImpersonateAnonymousToken(
364 IN HANDLE Thread
365 );
366
367 NTSYSCALLAPI
368 NTSTATUS
369 NTAPI
370 ZwOpenObjectAuditAlarm(
371 IN PUNICODE_STRING SubsystemName,
372 IN PVOID HandleId,
373 IN PUNICODE_STRING ObjectTypeName,
374 IN PUNICODE_STRING ObjectName,
375 IN PSECURITY_DESCRIPTOR SecurityDescriptor,
376 IN HANDLE ClientToken,
377 IN ULONG DesiredAccess,
378 IN ULONG GrantedAccess,
379 IN PPRIVILEGE_SET Privileges,
380 IN BOOLEAN ObjectCreation,
381 IN BOOLEAN AccessGranted,
382 OUT PBOOLEAN GenerateOnClose
383 );
384
385 NTSYSCALLAPI
386 NTSTATUS
387 NTAPI
388 ZwOpenProcessToken(
389 IN HANDLE ProcessHandle,
390 IN ACCESS_MASK DesiredAccess,
391 OUT PHANDLE TokenHandle
392 );
393
394 NTSYSCALLAPI
395 NTSTATUS
396 NTAPI
397 ZwOpenProcessTokenEx(
398 IN HANDLE ProcessHandle,
399 IN ACCESS_MASK DesiredAccess,
400 IN ULONG HandleAttributes,
401 OUT PHANDLE TokenHandle
402 );
403
404 NTSYSCALLAPI
405 NTSTATUS
406 NTAPI
407 ZwPrivilegeCheck(
408 IN HANDLE ClientToken,
409 IN PPRIVILEGE_SET RequiredPrivileges,
410 IN PBOOLEAN Result
411 );
412
413 NTSYSCALLAPI
414 NTSTATUS
415 NTAPI
416 ZwPrivilegedServiceAuditAlarm(
417 IN PUNICODE_STRING SubsystemName,
418 IN PUNICODE_STRING ServiceName,
419 IN HANDLE ClientToken,
420 IN PPRIVILEGE_SET Privileges,
421 IN BOOLEAN AccessGranted
422 );
423
424 NTSYSCALLAPI
425 NTSTATUS
426 NTAPI
427 ZwPrivilegeObjectAuditAlarm(
428 IN PUNICODE_STRING SubsystemName,
429 IN PVOID HandleId,
430 IN HANDLE ClientToken,
431 IN ULONG DesiredAccess,
432 IN PPRIVILEGE_SET Privileges,
433 IN BOOLEAN AccessGranted
434 );
435
436 NTSYSCALLAPI
437 NTSTATUS
438 NTAPI
439 ZwQueryInformationToken(
440 IN HANDLE TokenHandle,
441 IN TOKEN_INFORMATION_CLASS TokenInformationClass,
442 OUT PVOID TokenInformation,
443 IN ULONG TokenInformationLength,
444 OUT PULONG ReturnLength
445 );
446
447 NTSYSCALLAPI
448 NTSTATUS
449 NTAPI
450 ZwSetInformationToken(
451 IN HANDLE TokenHandle,
452 IN TOKEN_INFORMATION_CLASS TokenInformationClass,
453 OUT PVOID TokenInformation,
454 IN ULONG TokenInformationLength
455 );
456 #endif