- Add the real NT Object Callbacks and #ifdef out the ReactOS ones.
[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 NtOpenObjectAuditAlarm(
185 IN PUNICODE_STRING SubsystemName,
186 IN PVOID HandleId,
187 IN PUNICODE_STRING ObjectTypeName,
188 IN PUNICODE_STRING ObjectName,
189 IN PSECURITY_DESCRIPTOR SecurityDescriptor,
190 IN HANDLE ClientToken,
191 IN ULONG DesiredAccess,
192 IN ULONG GrantedAccess,
193 IN PPRIVILEGE_SET Privileges,
194 IN BOOLEAN ObjectCreation,
195 IN BOOLEAN AccessGranted,
196 OUT PBOOLEAN GenerateOnClose
197 );
198
199 NTSYSCALLAPI
200 NTSTATUS
201 NTAPI
202 NtOpenProcessToken(
203 IN HANDLE ProcessHandle,
204 IN ACCESS_MASK DesiredAccess,
205 OUT PHANDLE TokenHandle
206 );
207
208 NTSYSCALLAPI
209 NTSTATUS
210 NTAPI
211 NtOpenProcessTokenEx(
212 IN HANDLE ProcessHandle,
213 IN ACCESS_MASK DesiredAccess,
214 IN ULONG HandleAttributes,
215 OUT PHANDLE TokenHandle
216 );
217
218 NTSYSCALLAPI
219 NTSTATUS
220 NTAPI
221 NtPrivilegeCheck(
222 IN HANDLE ClientToken,
223 IN PPRIVILEGE_SET RequiredPrivileges,
224 IN PBOOLEAN Result
225 );
226
227 NTSYSCALLAPI
228 NTSTATUS
229 NTAPI
230 NtPrivilegedServiceAuditAlarm(
231 IN PUNICODE_STRING SubsystemName,
232 IN PUNICODE_STRING ServiceName,
233 IN HANDLE ClientToken,
234 IN PPRIVILEGE_SET Privileges,
235 IN BOOLEAN AccessGranted
236 );
237
238 NTSYSCALLAPI
239 NTSTATUS
240 NTAPI
241 NtPrivilegeObjectAuditAlarm(
242 IN PUNICODE_STRING SubsystemName,
243 IN PVOID HandleId,
244 IN HANDLE ClientToken,
245 IN ULONG DesiredAccess,
246 IN PPRIVILEGE_SET Privileges,
247 IN BOOLEAN AccessGranted
248 );
249
250 NTSYSCALLAPI
251 NTSTATUS
252 NTAPI
253 NtQueryInformationToken(
254 IN HANDLE TokenHandle,
255 IN TOKEN_INFORMATION_CLASS TokenInformationClass,
256 OUT PVOID TokenInformation,
257 IN ULONG TokenInformationLength,
258 OUT PULONG ReturnLength
259 );
260
261 NTSYSCALLAPI
262 NTSTATUS
263 NTAPI
264 NtSetInformationToken(
265 IN HANDLE TokenHandle,
266 IN TOKEN_INFORMATION_CLASS TokenInformationClass,
267 OUT PVOID TokenInformation,
268 IN ULONG TokenInformationLength
269 );
270
271 NTSTATUS
272 NTAPI
273 ZwAccessCheck(
274 IN PSECURITY_DESCRIPTOR SecurityDescriptor,
275 IN HANDLE ClientToken,
276 IN ACCESS_MASK DesiredAccess,
277 IN PGENERIC_MAPPING GenericMapping,
278 OUT PPRIVILEGE_SET PrivilegeSet,
279 OUT PULONG ReturnLength,
280 OUT PACCESS_MASK GrantedAccess,
281 OUT PNTSTATUS AccessStatus
282 );
283
284 NTSYSCALLAPI
285 NTSTATUS
286 NTAPI
287 ZwAdjustGroupsToken(
288 IN HANDLE TokenHandle,
289 IN BOOLEAN ResetToDefault,
290 IN PTOKEN_GROUPS NewState,
291 IN ULONG BufferLength,
292 OUT PTOKEN_GROUPS PreviousState OPTIONAL,
293 OUT PULONG ReturnLength
294 );
295
296 NTSYSCALLAPI
297 NTSTATUS
298 NTAPI
299 ZwAdjustPrivilegesToken(
300 IN HANDLE TokenHandle,
301 IN BOOLEAN DisableAllPrivileges,
302 IN PTOKEN_PRIVILEGES NewState,
303 IN ULONG BufferLength,
304 OUT PTOKEN_PRIVILEGES PreviousState,
305 OUT PULONG ReturnLength
306 );
307
308 NTSTATUS
309 NTAPI
310 ZwAllocateLocallyUniqueId(
311 OUT LUID *LocallyUniqueId
312 );
313
314 NTSTATUS
315 NTAPI
316 ZwAllocateUuids(
317 PULARGE_INTEGER Time,
318 PULONG Range,
319 PULONG Sequence,
320 PUCHAR Seed
321 );
322
323 NTSTATUS
324 NTAPI
325 ZwCreateToken(
326 OUT PHANDLE TokenHandle,
327 IN ACCESS_MASK DesiredAccess,
328 IN POBJECT_ATTRIBUTES ObjectAttributes,
329 IN TOKEN_TYPE TokenType,
330 IN PLUID AuthenticationId,
331 IN PLARGE_INTEGER ExpirationTime,
332 IN PTOKEN_USER TokenUser,
333 IN PTOKEN_GROUPS TokenGroups,
334 IN PTOKEN_PRIVILEGES TokenPrivileges,
335 IN PTOKEN_OWNER TokenOwner,
336 IN PTOKEN_PRIMARY_GROUP TokenPrimaryGroup,
337 IN PTOKEN_DEFAULT_DACL TokenDefaultDacl,
338 IN PTOKEN_SOURCE TokenSource
339 );
340
341 NTSYSCALLAPI
342 NTSTATUS
343 NTAPI
344 ZwDuplicateToken(
345 IN HANDLE ExistingTokenHandle,
346 IN ACCESS_MASK DesiredAccess,
347 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
348 IN BOOLEAN EffectiveOnly,
349 IN TOKEN_TYPE TokenType,
350 OUT PHANDLE NewTokenHandle
351 );
352
353 NTSYSCALLAPI
354 NTSTATUS
355 NTAPI
356 ZwOpenObjectAuditAlarm(
357 IN PUNICODE_STRING SubsystemName,
358 IN PVOID HandleId,
359 IN PUNICODE_STRING ObjectTypeName,
360 IN PUNICODE_STRING ObjectName,
361 IN PSECURITY_DESCRIPTOR SecurityDescriptor,
362 IN HANDLE ClientToken,
363 IN ULONG DesiredAccess,
364 IN ULONG GrantedAccess,
365 IN PPRIVILEGE_SET Privileges,
366 IN BOOLEAN ObjectCreation,
367 IN BOOLEAN AccessGranted,
368 OUT PBOOLEAN GenerateOnClose
369 );
370
371 NTSYSCALLAPI
372 NTSTATUS
373 NTAPI
374 ZwOpenProcessToken(
375 IN HANDLE ProcessHandle,
376 IN ACCESS_MASK DesiredAccess,
377 OUT PHANDLE TokenHandle
378 );
379
380 NTSYSCALLAPI
381 NTSTATUS
382 NTAPI
383 ZwOpenProcessTokenEx(
384 IN HANDLE ProcessHandle,
385 IN ACCESS_MASK DesiredAccess,
386 IN ULONG HandleAttributes,
387 OUT PHANDLE TokenHandle
388 );
389
390 NTSYSCALLAPI
391 NTSTATUS
392 NTAPI
393 ZwPrivilegeCheck(
394 IN HANDLE ClientToken,
395 IN PPRIVILEGE_SET RequiredPrivileges,
396 IN PBOOLEAN Result
397 );
398
399 NTSYSCALLAPI
400 NTSTATUS
401 NTAPI
402 ZwPrivilegedServiceAuditAlarm(
403 IN PUNICODE_STRING SubsystemName,
404 IN PUNICODE_STRING ServiceName,
405 IN HANDLE ClientToken,
406 IN PPRIVILEGE_SET Privileges,
407 IN BOOLEAN AccessGranted
408 );
409
410 NTSYSCALLAPI
411 NTSTATUS
412 NTAPI
413 ZwPrivilegeObjectAuditAlarm(
414 IN PUNICODE_STRING SubsystemName,
415 IN PVOID HandleId,
416 IN HANDLE ClientToken,
417 IN ULONG DesiredAccess,
418 IN PPRIVILEGE_SET Privileges,
419 IN BOOLEAN AccessGranted
420 );
421
422 NTSYSCALLAPI
423 NTSTATUS
424 NTAPI
425 ZwQueryInformationToken(
426 IN HANDLE TokenHandle,
427 IN TOKEN_INFORMATION_CLASS TokenInformationClass,
428 OUT PVOID TokenInformation,
429 IN ULONG TokenInformationLength,
430 OUT PULONG ReturnLength
431 );
432
433 NTSYSCALLAPI
434 NTSTATUS
435 NTAPI
436 ZwSetInformationToken(
437 IN HANDLE TokenHandle,
438 IN TOKEN_INFORMATION_CLASS TokenInformationClass,
439 OUT PVOID TokenInformation,
440 IN ULONG TokenInformationLength
441 );
442 #endif