[PSDK/NDK]: Fix KPCR/KIPCR for ARM to match x86 more closely. Add KeGetTickCount...
[reactos.git] / reactos / include / ndk / obfuncs.h
1 /*++ NDK Version: 0098
2
3 Copyright (c) Alex Ionescu. All rights reserved.
4
5 Header Name:
6
7 obtypes.h
8
9 Abstract:
10
11 Type definitions for the Object Manager
12
13 Author:
14
15 Alex Ionescu (alexi@tinykrnl.org) - Updated - 27-Feb-2006
16
17 --*/
18
19 #ifndef _OBFUNCS_H
20 #define _OBFUNCS_H
21
22 //
23 // Dependencies
24 //
25 #include <umtypes.h>
26 #include <pstypes.h>
27 #include <obtypes.h>
28
29 #ifndef NTOS_MODE_USER
30
31 //
32 // Object Functions
33 //
34 NTKERNELAPI
35 NTSTATUS
36 NTAPI
37 ObAssignSecurity(
38 IN PACCESS_STATE AccessState,
39 IN PSECURITY_DESCRIPTOR SecurityDescriptor,
40 IN PVOID Object,
41 IN POBJECT_TYPE Type
42 );
43
44 NTKERNELAPI
45 NTSTATUS
46 NTAPI
47 ObCloseHandle(
48 IN HANDLE Handle,
49 IN KPROCESSOR_MODE AccessMode
50 );
51
52 NTKERNELAPI
53 NTSTATUS
54 NTAPI
55 ObCreateObject(
56 IN KPROCESSOR_MODE ObjectAttributesAccessMode OPTIONAL,
57 IN POBJECT_TYPE ObjectType,
58 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
59 IN KPROCESSOR_MODE AccessMode,
60 IN OUT PVOID ParseContext OPTIONAL,
61 IN ULONG ObjectSize,
62 IN ULONG PagedPoolCharge OPTIONAL,
63 IN ULONG NonPagedPoolCharge OPTIONAL,
64 OUT PVOID *Object
65 );
66
67 NTKERNELAPI
68 NTSTATUS
69 NTAPI
70 ObCreateObjectType(
71 IN PUNICODE_STRING TypeName,
72 IN POBJECT_TYPE_INITIALIZER ObjectTypeInitializer,
73 IN PVOID Reserved,
74 OUT POBJECT_TYPE *ObjectType
75 );
76
77 NTKERNELAPI
78 VOID
79 NTAPI
80 ObDereferenceSecurityDescriptor(
81 PSECURITY_DESCRIPTOR SecurityDescriptor,
82 ULONG Count
83 );
84
85 NTKERNELAPI
86 ULONG
87 NTAPI
88 ObGetObjectPointerCount(
89 IN PVOID Object
90 );
91
92 NTKERNELAPI
93 NTSTATUS
94 NTAPI
95 ObLogSecurityDescriptor(
96 IN PSECURITY_DESCRIPTOR InputSecurityDescriptor,
97 OUT PSECURITY_DESCRIPTOR *OutputSecurityDescriptor,
98 IN ULONG RefBias
99 );
100
101 NTKERNELAPI
102 NTSTATUS
103 NTAPI
104 ObOpenObjectByName(
105 IN POBJECT_ATTRIBUTES ObjectAttributes,
106 IN POBJECT_TYPE ObjectType,
107 IN KPROCESSOR_MODE AccessMode,
108 IN PACCESS_STATE PassedAccessState,
109 IN ACCESS_MASK DesiredAccess,
110 IN OUT PVOID ParseContext,
111 OUT PHANDLE Handle
112 );
113
114 NTKERNELAPI
115 NTSTATUS
116 NTAPI
117 ObReferenceObjectByName(
118 IN PUNICODE_STRING ObjectName,
119 IN ULONG Attributes,
120 IN PACCESS_STATE PassedAccessState OPTIONAL,
121 IN ACCESS_MASK DesiredAccess OPTIONAL,
122 IN POBJECT_TYPE ObjectType,
123 IN KPROCESSOR_MODE AccessMode,
124 IN OUT PVOID ParseContext OPTIONAL,
125 OUT PVOID *Object
126 );
127
128 NTKERNELAPI
129 VOID
130 NTAPI
131 ObReferenceSecurityDescriptor(
132 IN PSECURITY_DESCRIPTOR SecurityDescriptor,
133 IN ULONG Count
134 );
135
136 NTKERNELAPI
137 NTSTATUS
138 NTAPI
139 ObSetSecurityObjectByPointer(
140 IN PVOID Object,
141 IN SECURITY_INFORMATION SecurityInformation,
142 IN PSECURITY_DESCRIPTOR SecurityDescriptor
143 );
144
145 NTKERNELAPI
146 BOOLEAN
147 NTAPI
148 ObFindHandleForObject(
149 IN PEPROCESS Process,
150 IN PVOID Object,
151 IN POBJECT_TYPE ObjectType,
152 IN POBJECT_HANDLE_INFORMATION HandleInformation,
153 OUT PHANDLE Handle
154 );
155
156 VOID
157 NTAPI
158 ObDereferenceObjectDeferDelete(
159 IN PVOID Object
160 );
161
162 #endif
163
164 //
165 // Native Calls
166 //
167 NTSYSCALLAPI
168 NTSTATUS
169 NTAPI
170 NtClose(
171 IN HANDLE Handle
172 );
173
174 NTSYSCALLAPI
175 NTSTATUS
176 NTAPI
177 NtCloseObjectAuditAlarm(
178 IN PUNICODE_STRING SubsystemName,
179 IN PVOID HandleId,
180 IN BOOLEAN GenerateOnClose
181 );
182
183 NTSYSCALLAPI
184 NTSTATUS
185 NTAPI
186 NtCreateDirectoryObject(
187 OUT PHANDLE DirectoryHandle,
188 IN ACCESS_MASK DesiredAccess,
189 IN POBJECT_ATTRIBUTES ObjectAttributes
190 );
191
192 NTSYSCALLAPI
193 NTSTATUS
194 NTAPI
195 NtCreateSymbolicLinkObject(
196 OUT PHANDLE SymbolicLinkHandle,
197 IN ACCESS_MASK DesiredAccess,
198 IN POBJECT_ATTRIBUTES ObjectAttributes,
199 IN PUNICODE_STRING Name
200 );
201
202 NTSYSCALLAPI
203 NTSTATUS
204 NTAPI
205 NtDeleteObjectAuditAlarm(
206 IN PUNICODE_STRING SubsystemName,
207 IN PVOID HandleId,
208 IN BOOLEAN GenerateOnClose
209 );
210
211 NTSYSCALLAPI
212 NTSTATUS
213 NTAPI
214 NtDuplicateObject(
215 IN HANDLE SourceProcessHandle,
216 IN HANDLE SourceHandle,
217 IN HANDLE TargetProcessHandle,
218 OUT PHANDLE TargetHandle,
219 IN ACCESS_MASK DesiredAccess,
220 IN ULONG HandleAttributes,
221 IN ULONG Options
222 );
223
224 NTSYSCALLAPI
225 NTSTATUS
226 NTAPI
227 NtMakePermanentObject(
228 IN HANDLE Object
229 );
230
231 NTSYSCALLAPI
232 NTSTATUS
233 NTAPI
234 NtMakeTemporaryObject(
235 IN HANDLE Handle
236 );
237
238 NTSYSCALLAPI
239 NTSTATUS
240 NTAPI
241 NtOpenDirectoryObject(
242 OUT PHANDLE FileHandle,
243 IN ACCESS_MASK DesiredAccess,
244 IN POBJECT_ATTRIBUTES ObjectAttributes
245 );
246
247 NTSYSCALLAPI
248 NTSTATUS
249 NTAPI
250 NtOpenJobObject(
251 PHANDLE JobHandle,
252 ACCESS_MASK DesiredAccess,
253 POBJECT_ATTRIBUTES ObjectAttributes
254 );
255
256 NTSYSCALLAPI
257 NTSTATUS
258 NTAPI
259 NtOpenSymbolicLinkObject(
260 OUT PHANDLE SymbolicLinkHandle,
261 IN ACCESS_MASK DesiredAccess,
262 IN POBJECT_ATTRIBUTES ObjectAttributes
263 );
264
265 NTSYSCALLAPI
266 NTSTATUS
267 NTAPI
268 NtQueryDirectoryObject(
269 IN HANDLE DirectoryHandle,
270 OUT PVOID Buffer,
271 IN ULONG BufferLength,
272 IN BOOLEAN ReturnSingleEntry,
273 IN BOOLEAN RestartScan,
274 IN OUT PULONG Context,
275 OUT PULONG ReturnLength OPTIONAL
276 );
277
278 NTSYSCALLAPI
279 NTSTATUS
280 NTAPI
281 NtQueryObject(
282 IN HANDLE ObjectHandle,
283 IN OBJECT_INFORMATION_CLASS ObjectInformationClass,
284 OUT PVOID ObjectInformation,
285 IN ULONG Length,
286 OUT PULONG ResultLength OPTIONAL
287 );
288
289 NTSYSCALLAPI
290 NTSTATUS
291 NTAPI
292 NtQuerySecurityObject(
293 IN HANDLE Handle,
294 IN SECURITY_INFORMATION SecurityInformation,
295 OUT PSECURITY_DESCRIPTOR SecurityDescriptor,
296 IN ULONG Length,
297 OUT PULONG ResultLength
298 );
299
300 NTSYSCALLAPI
301 NTSTATUS
302 NTAPI
303 NtQuerySymbolicLinkObject(
304 IN HANDLE SymLinkObjHandle,
305 OUT PUNICODE_STRING LinkTarget,
306 OUT PULONG DataWritten OPTIONAL
307 );
308
309 NTSYSCALLAPI
310 NTSTATUS
311 NTAPI
312 NtSetInformationObject(
313 IN HANDLE ObjectHandle,
314 IN OBJECT_INFORMATION_CLASS ObjectInformationClass,
315 IN PVOID ObjectInformation,
316 IN ULONG Length
317 );
318
319 NTSYSCALLAPI
320 NTSTATUS
321 NTAPI
322 NtSetSecurityObject(
323 IN HANDLE Handle,
324 IN SECURITY_INFORMATION SecurityInformation,
325 IN PSECURITY_DESCRIPTOR SecurityDescriptor
326 );
327
328 NTSYSCALLAPI
329 NTSTATUS
330 NTAPI
331 NtSignalAndWaitForSingleObject(
332 IN HANDLE SignalObject,
333 IN HANDLE WaitObject,
334 IN BOOLEAN Alertable,
335 IN PLARGE_INTEGER Time
336 );
337
338 NTSYSCALLAPI
339 NTSTATUS
340 NTAPI
341 NtWaitForMultipleObjects(
342 IN ULONG Count,
343 IN HANDLE Object[],
344 IN WAIT_TYPE WaitType,
345 IN BOOLEAN Alertable,
346 IN PLARGE_INTEGER Time
347 );
348
349 NTSTATUS
350 NTAPI
351 NtWaitForMultipleObjects32(
352 IN ULONG ObjectCount,
353 IN PLONG Handles,
354 IN WAIT_TYPE WaitType,
355 IN BOOLEAN Alertable,
356 IN PLARGE_INTEGER TimeOut OPTIONAL
357 );
358
359 NTSYSCALLAPI
360 NTSTATUS
361 NTAPI
362 NtWaitForSingleObject(
363 IN HANDLE Object,
364 IN BOOLEAN Alertable,
365 IN PLARGE_INTEGER Time
366 );
367
368 NTSYSAPI
369 NTSTATUS
370 NTAPI
371 ZwClose(
372 IN HANDLE Handle
373 );
374
375 NTSYSAPI
376 NTSTATUS
377 NTAPI
378 ZwCloseObjectAuditAlarm(
379 IN PUNICODE_STRING SubsystemName,
380 IN PVOID HandleId,
381 IN BOOLEAN GenerateOnClose
382 );
383
384 NTSYSAPI
385 NTSTATUS
386 NTAPI
387 ZwCreateDirectoryObject(
388 OUT PHANDLE DirectoryHandle,
389 IN ACCESS_MASK DesiredAccess,
390 IN POBJECT_ATTRIBUTES ObjectAttributes
391 );
392
393 NTSYSAPI
394 NTSTATUS
395 NTAPI
396 ZwCreateSymbolicLinkObject(
397 OUT PHANDLE SymbolicLinkHandle,
398 IN ACCESS_MASK DesiredAccess,
399 IN POBJECT_ATTRIBUTES ObjectAttributes,
400 IN PUNICODE_STRING Name
401 );
402
403 NTSYSAPI
404 NTSTATUS
405 NTAPI
406 ZwDeleteObjectAuditAlarm(
407 IN PUNICODE_STRING SubsystemName,
408 IN PVOID HandleId,
409 IN BOOLEAN GenerateOnClose
410 );
411
412 NTSYSAPI
413 NTSTATUS
414 NTAPI
415 ZwDuplicateObject(
416 IN HANDLE SourceProcessHandle,
417 IN HANDLE SourceHandle,
418 IN HANDLE TargetProcessHandle,
419 OUT PHANDLE TargetHandle,
420 IN ACCESS_MASK DesiredAccess,
421 IN ULONG HandleAttributes,
422 IN ULONG Options
423 );
424
425 NTSYSAPI
426 NTSTATUS
427 NTAPI
428 ZwMakePermanentObject(
429 IN HANDLE Object
430 );
431
432 NTSYSAPI
433 NTSTATUS
434 NTAPI
435 ZwMakeTemporaryObject(
436 IN HANDLE Handle
437 );
438
439 NTSYSAPI
440 NTSTATUS
441 NTAPI
442 ZwOpenDirectoryObject(
443 OUT PHANDLE FileHandle,
444 IN ACCESS_MASK DesiredAccess,
445 IN POBJECT_ATTRIBUTES ObjectAttributes
446 );
447
448 NTSYSAPI
449 NTSTATUS
450 NTAPI
451 ZwOpenJobObject(
452 PHANDLE JobHandle,
453 ACCESS_MASK DesiredAccess,
454 POBJECT_ATTRIBUTES ObjectAttributes
455 );
456
457 NTSYSAPI
458 NTSTATUS
459 NTAPI
460 ZwOpenSymbolicLinkObject(
461 OUT PHANDLE SymbolicLinkHandle,
462 IN ACCESS_MASK DesiredAccess,
463 IN POBJECT_ATTRIBUTES ObjectAttributes
464 );
465
466 NTSYSAPI
467 NTSTATUS
468 NTAPI
469 ZwQueryDirectoryObject(
470 IN HANDLE DirectoryHandle,
471 OUT PVOID Buffer,
472 IN ULONG BufferLength,
473 IN BOOLEAN ReturnSingleEntry,
474 IN BOOLEAN RestartScan,
475 IN OUT PULONG Context,
476 OUT PULONG ReturnLength OPTIONAL
477 );
478
479 NTSYSAPI
480 NTSTATUS
481 NTAPI
482 ZwQueryObject(
483 IN HANDLE ObjectHandle,
484 IN OBJECT_INFORMATION_CLASS ObjectInformationClass,
485 OUT PVOID ObjectInformation,
486 IN ULONG Length,
487 OUT PULONG ResultLength OPTIONAL
488 );
489
490 NTSYSAPI
491 NTSTATUS
492 NTAPI
493 ZwQuerySecurityObject(
494 IN HANDLE Handle,
495 IN SECURITY_INFORMATION SecurityInformation,
496 OUT PSECURITY_DESCRIPTOR SecurityDescriptor,
497 IN ULONG Length,
498 OUT PULONG ResultLength
499 );
500
501 NTSYSAPI
502 NTSTATUS
503 NTAPI
504 ZwQuerySymbolicLinkObject(
505 IN HANDLE SymLinkObjHandle,
506 OUT PUNICODE_STRING LinkTarget,
507 OUT PULONG DataWritten OPTIONAL
508 );
509
510 NTSYSAPI
511 NTSTATUS
512 NTAPI
513 ZwSetInformationObject(
514 IN HANDLE ObjectHandle,
515 IN OBJECT_INFORMATION_CLASS ObjectInformationClass,
516 IN PVOID ObjectInformation,
517 IN ULONG Length
518 );
519
520 NTSYSAPI
521 NTSTATUS
522 NTAPI
523 ZwSetSecurityObject(
524 IN HANDLE Handle,
525 IN SECURITY_INFORMATION SecurityInformation,
526 IN PSECURITY_DESCRIPTOR SecurityDescriptor
527 );
528
529 NTSYSAPI
530 NTSTATUS
531 NTAPI
532 ZwSignalAndWaitForSingleObject(
533 IN HANDLE SignalObject,
534 IN HANDLE WaitObject,
535 IN BOOLEAN Alertable,
536 IN PLARGE_INTEGER Time
537 );
538
539 NTSYSAPI
540 NTSTATUS
541 NTAPI
542 ZwWaitForMultipleObjects(
543 IN ULONG Count,
544 IN HANDLE Object[],
545 IN WAIT_TYPE WaitType,
546 IN BOOLEAN Alertable,
547 IN PLARGE_INTEGER Time
548 );
549
550 NTSYSAPI
551 NTSTATUS
552 NTAPI
553 ZwWaitForSingleObject(
554 IN HANDLE Object,
555 IN BOOLEAN Alertable,
556 IN PLARGE_INTEGER Time
557 );
558
559 #endif