Add .gitattributes and .gitignore files and normalize line endings in the repository...
[reactos.git] / sdk / include / ndk / kefuncs.h
1 /*++ NDK Version: 0098
2
3 Copyright (c) Alex Ionescu. All rights reserved.
4
5 Header Name:
6
7 kefuncs.h
8
9 Abstract:
10
11 Functions definitions for the Kernel services.
12
13 Author:
14
15 Alex Ionescu (alexi@tinykrnl.org) - Updated - 27-Feb-2006
16
17 --*/
18
19 #ifndef _KEFUNCS_H
20 #define _KEFUNCS_H
21
22 //
23 // Dependencies
24 //
25 #include <umtypes.h>
26 #include <ketypes.h>
27
28 #ifndef NTOS_MODE_USER
29
30 //
31 // APC Functions
32 //
33 VOID
34 NTAPI
35 KeInitializeApc(
36 _In_ PKAPC Apc,
37 _In_ PKTHREAD Thread,
38 _In_ KAPC_ENVIRONMENT TargetEnvironment,
39 _In_ PKKERNEL_ROUTINE KernelRoutine,
40 _In_opt_ PKRUNDOWN_ROUTINE RundownRoutine,
41 _In_ PKNORMAL_ROUTINE NormalRoutine,
42 _In_ KPROCESSOR_MODE Mode,
43 _In_ PVOID Context
44 );
45
46 BOOLEAN
47 NTAPI
48 KeInsertQueueApc(
49 _In_ PKAPC Apc,
50 _In_ PVOID SystemArgument1,
51 _In_ PVOID SystemArgument2,
52 _In_ KPRIORITY PriorityBoost
53 );
54
55 VOID
56 NTAPI
57 KiDeliverApc(
58 _In_ KPROCESSOR_MODE PreviousMode,
59 #ifdef _M_AMD64
60 _In_ PKEXCEPTION_FRAME ExceptionFrame,
61 #else
62 _Reserved_ PKEXCEPTION_FRAME ExceptionFrame,
63 #endif
64 _In_ PKTRAP_FRAME TrapFrame
65 );
66
67 //
68 // Process/Thread Functions
69 //
70 VOID
71 NTAPI
72 KeTerminateThread(
73 _In_ KPRIORITY Increment
74 );
75
76 BOOLEAN
77 NTAPI
78 KeIsAttachedProcess(
79 VOID
80 );
81
82 VOID
83 NTAPI
84 KeSetEventBoostPriority(
85 _In_ PKEVENT Event,
86 _In_opt_ PKTHREAD *Thread
87 );
88
89 KAFFINITY
90 NTAPI
91 KeSetAffinityThread(
92 _Inout_ PKTHREAD Thread,
93 _In_ KAFFINITY Affinity
94 );
95
96 PKPROCESS
97 NTAPI
98 KeGetCurrentProcess(
99 VOID
100 );
101
102 BOOLEAN
103 NTAPI
104 KeAddSystemServiceTable(
105 _In_ PULONG_PTR Base,
106 _In_opt_ PULONG Count,
107 _In_ ULONG Limit,
108 _In_ PUCHAR Number,
109 _In_ ULONG Index
110 );
111
112 //
113 // Spinlock Functions
114 //
115 VOID
116 FASTCALL
117 KiAcquireSpinLock(
118 _Inout_ PKSPIN_LOCK SpinLock
119 );
120
121 VOID
122 FASTCALL
123 KiReleaseSpinLock(
124 _Inout_ PKSPIN_LOCK SpinLock
125 );
126
127 KIRQL
128 FASTCALL
129 KeAcquireQueuedSpinLockRaiseToSynch(
130 _In_ KSPIN_LOCK_QUEUE_NUMBER LockNumber
131 );
132
133 BOOLEAN
134 FASTCALL
135 KeTryToAcquireQueuedSpinLockRaiseToSynch(
136 _In_ KSPIN_LOCK_QUEUE_NUMBER LockNumber,
137 _In_ PKIRQL OldIrql
138 );
139
140 VOID
141 FASTCALL
142 KeAcquireInStackQueuedSpinLockRaiseToSynch(
143 _In_ PKSPIN_LOCK SpinLock,
144 _In_ PKLOCK_QUEUE_HANDLE LockHandle
145 );
146
147
148 //
149 // Interrupt Functions
150 //
151 VOID
152 NTAPI
153 KeInitializeInterrupt(
154 _Out_ PKINTERRUPT InterruptObject,
155 _In_ PKSERVICE_ROUTINE ServiceRoutine,
156 _In_ PVOID ServiceContext,
157 _In_ PKSPIN_LOCK SpinLock,
158 _In_ ULONG Vector,
159 _In_ KIRQL Irql,
160 _In_ KIRQL SynchronizeIrql,
161 _In_ KINTERRUPT_MODE InterruptMode,
162 _In_ BOOLEAN ShareVector,
163 _In_ CHAR ProcessorNumber,
164 _In_ BOOLEAN FloatingSave
165 );
166
167 BOOLEAN
168 NTAPI
169 KeConnectInterrupt(
170 _Inout_ PKINTERRUPT InterruptObject
171 );
172
173 BOOLEAN
174 NTAPI
175 KeDisconnectInterrupt(
176 _Inout_ PKINTERRUPT InterruptObject
177 );
178
179 VOID
180 NTAPI
181 KiDispatchInterrupt(
182 VOID
183 );
184
185 VOID
186 NTAPI
187 KiCoprocessorError(
188 VOID
189 );
190
191 DECLSPEC_NORETURN
192 VOID
193 __cdecl
194 KiUnexpectedInterrupt(
195 VOID
196 );
197
198 VOID
199 NTAPI
200 KeEnterKernelDebugger(
201 VOID
202 );
203
204 BOOLEAN
205 NTAPI
206 KeIsExecutingDpc(
207 VOID
208 );
209
210 BOOLEAN
211 NTAPI
212 KiIpiServiceRoutine(
213 _In_ PKTRAP_FRAME TrapFrame,
214 #ifdef _M_AMD64
215 _In_ PKEXCEPTION_FRAME ExceptionFrame
216 #else
217 _Reserved_ PKEXCEPTION_FRAME ExceptionFrame
218 #endif
219 );
220
221 //
222 // Generic DPC Routines
223 //
224 VOID
225 NTAPI
226 KeGenericCallDpc(
227 _In_ PKDEFERRED_ROUTINE Routine,
228 _In_ PVOID Context
229 );
230
231 VOID
232 NTAPI
233 KeSignalCallDpcDone(
234 _In_ PVOID SystemArgument1
235 );
236
237 BOOLEAN
238 NTAPI
239 KeSignalCallDpcSynchronize(
240 _In_ PVOID SystemArgument2
241 );
242
243 //
244 // ARC Configuration Functions. Only enabled if you have ARC Support
245 //
246 #ifdef _ARC_
247 PCONFIGURATION_COMPONENT_DATA
248 NTAPI
249 KeFindConfigurationNextEntry(
250 _In_ PCONFIGURATION_COMPONENT_DATA Child,
251 _In_ CONFIGURATION_CLASS Class,
252 _In_ CONFIGURATION_TYPE Type,
253 _In_opt_ PULONG ComponentKey,
254 _In_ PCONFIGURATION_COMPONENT_DATA *NextLink
255 );
256
257 PCONFIGURATION_COMPONENT_DATA
258 NTAPI
259 KeFindConfigurationEntry(
260 _In_ PCONFIGURATION_COMPONENT_DATA Child,
261 _In_ CONFIGURATION_CLASS Class,
262 _In_ CONFIGURATION_TYPE Type,
263 _In_opt_ PULONG ComponentKey
264 );
265 #endif
266
267 //
268 // Low-level Hardware/CPU Control Functions
269 //
270 VOID
271 NTAPI
272 KeFlushEntireTb(
273 _In_ BOOLEAN Invalid,
274 _In_ BOOLEAN AllProcessors
275 );
276
277 VOID
278 NTAPI
279 KeSetDmaIoCoherency(
280 _In_ ULONG Coherency
281 );
282
283 VOID
284 KeSetGdtSelector(
285 _In_ ULONG Entry,
286 _In_ ULONG Value1,
287 _In_ ULONG Value2
288 );
289
290 VOID
291 NTAPI
292 KeProfileInterrupt(
293 _In_ PKTRAP_FRAME TrapFrame
294 );
295
296 VOID
297 NTAPI
298 KeProfileInterruptWithSource(
299 _In_ PKTRAP_FRAME TrapFrame,
300 _In_ KPROFILE_SOURCE Source
301 );
302
303 VOID
304 NTAPI
305 KeSetProfileIrql(
306 _In_ KIRQL ProfileIrql
307 );
308
309 VOID
310 NTAPI
311 KeSetTimeIncrement(
312 _In_ ULONG MaxIncrement,
313 _In_ ULONG MinIncrement
314 );
315
316 NTSTATUS
317 NTAPI
318 Ke386CallBios(
319 _In_ ULONG BiosCommand,
320 _Inout_ PCONTEXT BiosArguments
321 );
322
323 //
324 // Misc. Functions
325 //
326 NTSTATUS
327 NTAPI
328 KeUserModeCallback(
329 _In_ ULONG FunctionID,
330 _In_reads_opt_(InputLength) PVOID InputBuffer,
331 _In_ ULONG InputLength,
332 _Outptr_result_buffer_(*OutputLength) PVOID *OutputBuffer,
333 _Out_ PULONG OutputLength
334 );
335
336 NTSTATUS
337 NTAPI
338 KeRaiseUserException(
339 _In_ NTSTATUS ExceptionCode
340 );
341
342 #endif
343
344 //
345 // Native Calls
346 //
347 NTSYSCALLAPI
348 NTSTATUS
349 NTAPI
350 NtContinue(
351 _In_ PCONTEXT Context,
352 _In_ BOOLEAN TestAlert
353 );
354
355 NTSYSCALLAPI
356 NTSTATUS
357 NTAPI
358 NtCallbackReturn(
359 _In_ PVOID Result,
360 _In_ ULONG ResultLength,
361 _In_ NTSTATUS Status
362 );
363
364 NTSYSCALLAPI
365 NTSTATUS
366 NTAPI
367 NtCreateProfile(
368 _Out_ PHANDLE ProfileHandle,
369 _In_ HANDLE ProcessHandle,
370 _In_ PVOID ImageBase,
371 _In_ SIZE_T ImageSize,
372 _In_ ULONG Granularity,
373 _Out_ PVOID Buffer,
374 _In_ ULONG ProfilingSize,
375 _In_ KPROFILE_SOURCE Source,
376 _In_ KAFFINITY ProcessorMask
377 );
378
379 NTSYSCALLAPI
380 NTSTATUS
381 NTAPI
382 NtCreateProfileEx(
383 _Out_ PHANDLE ProfileHandle,
384 _In_ HANDLE ProcessHandle,
385 _In_ PVOID ImageBase,
386 _In_ SIZE_T ImageSize,
387 _In_ ULONG Granularity,
388 _Out_ PVOID Buffer,
389 _In_ ULONG ProfilingSize,
390 _In_ KPROFILE_SOURCE Source,
391 _In_ USHORT GroupCount,
392 _In_reads_(GroupCount) PGROUP_AFFINITY Affinity
393 );
394
395 NTSYSCALLAPI
396 NTSTATUS
397 NTAPI
398 NtDelayExecution(
399 _In_ BOOLEAN Alertable,
400 _In_ LARGE_INTEGER *Interval
401 );
402
403 ULONG
404 NTAPI
405 NtGetCurrentProcessorNumber(
406 VOID
407 );
408
409 NTSYSCALLAPI
410 NTSTATUS
411 NTAPI
412 NtGetContextThread(
413 _In_ HANDLE ThreadHandle,
414 _Out_ PCONTEXT Context
415 );
416
417 NTSYSCALLAPI
418 ULONG
419 NTAPI
420 NtGetTickCount(
421 VOID
422 );
423
424 NTSYSCALLAPI
425 NTSTATUS
426 NTAPI
427 NtQueryIntervalProfile(
428 _In_ KPROFILE_SOURCE ProfileSource,
429 _Out_ PULONG Interval
430 );
431
432 NTSYSCALLAPI
433 NTSTATUS
434 NTAPI
435 NtQueryPerformanceCounter(
436 _Out_ PLARGE_INTEGER Counter,
437 _Out_opt_ PLARGE_INTEGER Frequency
438 );
439
440 NTSYSCALLAPI
441 NTSTATUS
442 NTAPI
443 NtQuerySystemTime(
444 _Out_ PLARGE_INTEGER CurrentTime
445 );
446
447 NTSYSCALLAPI
448 NTSTATUS
449 NTAPI
450 NtQueryTimerResolution(
451 _Out_ PULONG MinimumResolution,
452 _Out_ PULONG MaximumResolution,
453 _Out_ PULONG ActualResolution
454 );
455
456 NTSYSCALLAPI
457 NTSTATUS
458 NTAPI
459 NtQueueApcThread(
460 _In_ HANDLE ThreadHandle,
461 _In_ PKNORMAL_ROUTINE ApcRoutine,
462 _In_opt_ PVOID NormalContext,
463 _In_opt_ PVOID SystemArgument1,
464 _In_opt_ PVOID SystemArgument2
465 );
466
467 NTSYSCALLAPI
468 NTSTATUS
469 NTAPI
470 NtRaiseException(
471 _In_ PEXCEPTION_RECORD ExceptionRecord,
472 _In_ PCONTEXT Context,
473 _In_ BOOLEAN SearchFrames
474 );
475
476 NTSYSCALLAPI
477 NTSTATUS
478 NTAPI
479 NtSetContextThread(
480 _In_ HANDLE ThreadHandle,
481 _In_ PCONTEXT Context
482 );
483
484 NTSYSCALLAPI
485 NTSTATUS
486 NTAPI
487 NtSetIntervalProfile(
488 _In_ ULONG Interval,
489 _In_ KPROFILE_SOURCE ClockSource
490 );
491
492 NTSYSCALLAPI
493 NTSTATUS
494 NTAPI
495 NtSetLdtEntries(
496 _In_ ULONG Selector1,
497 _In_ LDT_ENTRY LdtEntry1,
498 _In_ ULONG Selector2,
499 _In_ LDT_ENTRY LdtEntry2
500 );
501
502 NTSYSCALLAPI
503 NTSTATUS
504 NTAPI
505 NtSetSystemTime(
506 _In_ PLARGE_INTEGER SystemTime,
507 _In_opt_ PLARGE_INTEGER NewSystemTime
508 );
509
510 NTSYSCALLAPI
511 NTSTATUS
512 NTAPI
513 NtSetTimerResolution(
514 _In_ ULONG RequestedResolution,
515 _In_ BOOLEAN SetOrUnset,
516 _Out_ PULONG ActualResolution
517 );
518
519 NTSYSCALLAPI
520 NTSTATUS
521 NTAPI
522 NtStartProfile(
523 _In_ HANDLE ProfileHandle
524 );
525
526 NTSYSCALLAPI
527 NTSTATUS
528 NTAPI
529 NtStopProfile(
530 _In_ HANDLE ProfileHandle
531 );
532
533 NTSYSCALLAPI
534 NTSTATUS
535 NTAPI
536 NtTestAlert(
537 VOID
538 );
539
540 NTSYSCALLAPI
541 NTSTATUS
542 NTAPI
543 NtVdmControl(
544 _In_ ULONG ControlCode,
545 _In_ PVOID ControlData
546 );
547
548 NTSYSCALLAPI
549 NTSTATUS
550 NTAPI
551 NtW32Call(
552 _In_ ULONG RoutineIndex,
553 _In_ PVOID Argument,
554 _In_ ULONG ArgumentLength,
555 _Out_opt_ PVOID* Result,
556 _Out_opt_ PULONG ResultLength
557 );
558
559 NTSYSCALLAPI
560 NTSTATUS
561 NTAPI
562 NtYieldExecution(
563 VOID
564 );
565
566 NTSYSAPI
567 NTSTATUS
568 NTAPI
569 ZwContinue(
570 _In_ PCONTEXT Context,
571 _In_ BOOLEAN TestAlert
572 );
573
574 NTSYSAPI
575 NTSTATUS
576 NTAPI
577 ZwCallbackReturn(
578 _In_ PVOID Result,
579 _In_ ULONG ResultLength,
580 _In_ NTSTATUS Status
581 );
582
583 NTSYSAPI
584 NTSTATUS
585 NTAPI
586 ZwCreateProfile(
587 _Out_ PHANDLE ProfileHandle,
588 _In_ HANDLE ProcessHandle,
589 _In_ PVOID ImageBase,
590 _In_ ULONG ImageSize,
591 _In_ ULONG Granularity,
592 _Out_ PVOID Buffer,
593 _In_ ULONG ProfilingSize,
594 _In_ KPROFILE_SOURCE Source,
595 _In_ KAFFINITY ProcessorMask
596 );
597
598 NTSYSAPI
599 NTSTATUS
600 NTAPI
601 ZwDelayExecution(
602 _In_ BOOLEAN Alertable,
603 _In_ LARGE_INTEGER *Interval
604 );
605
606 NTSYSAPI
607 NTSTATUS
608 NTAPI
609 ZwFlushInstructionCache(
610 _In_ HANDLE ProcessHandle,
611 _In_ PVOID BaseAddress,
612 _In_ ULONG NumberOfBytesToFlush
613 );
614
615 NTSYSAPI
616 NTSTATUS
617 NTAPI
618 ZwGetContextThread(
619 _In_ HANDLE ThreadHandle,
620 _Out_ PCONTEXT Context
621 );
622
623 NTSYSAPI
624 ULONG
625 NTAPI
626 ZwGetTickCount(
627 VOID
628 );
629
630 NTSYSAPI
631 NTSTATUS
632 NTAPI
633 ZwQueryIntervalProfile(
634 _In_ KPROFILE_SOURCE ProfileSource,
635 _Out_ PULONG Interval
636 );
637
638 NTSYSAPI
639 NTSTATUS
640 NTAPI
641 ZwQueryPerformanceCounter(
642 _Out_ PLARGE_INTEGER Counter,
643 _Out_opt_ PLARGE_INTEGER Frequency
644 );
645
646 NTSYSAPI
647 NTSTATUS
648 NTAPI
649 ZwQuerySystemTime(
650 _Out_ PLARGE_INTEGER CurrentTime
651 );
652
653 NTSYSAPI
654 NTSTATUS
655 NTAPI
656 ZwQueryTimerResolution(
657 _Out_ PULONG MinimumResolution,
658 _Out_ PULONG MaximumResolution,
659 _Out_ PULONG ActualResolution
660 );
661
662 NTSYSAPI
663 NTSTATUS
664 NTAPI
665 ZwQueueApcThread(
666 _In_ HANDLE ThreadHandle,
667 _In_ PKNORMAL_ROUTINE ApcRoutine,
668 _In_opt_ PVOID NormalContext,
669 _In_opt_ PVOID SystemArgument1,
670 _In_opt_ PVOID SystemArgument2
671 );
672
673 NTSYSAPI
674 NTSTATUS
675 NTAPI
676 ZwRaiseException(
677 _In_ PEXCEPTION_RECORD ExceptionRecord,
678 _In_ PCONTEXT Context,
679 _In_ BOOLEAN SearchFrames
680 );
681
682 NTSYSAPI
683 NTSTATUS
684 NTAPI
685 ZwSetContextThread(
686 _In_ HANDLE ThreadHandle,
687 _In_ PCONTEXT Context
688 );
689
690 NTSYSAPI
691 NTSTATUS
692 NTAPI
693 ZwSetIntervalProfile(
694 _In_ ULONG Interval,
695 _In_ KPROFILE_SOURCE ClockSource
696 );
697
698 NTSYSAPI
699 NTSTATUS
700 NTAPI
701 ZwSetLdtEntries(
702 _In_ ULONG Selector1,
703 _In_ LDT_ENTRY LdtEntry1,
704 _In_ ULONG Selector2,
705 _In_ LDT_ENTRY LdtEntry2
706 );
707
708 NTSYSAPI
709 NTSTATUS
710 NTAPI
711 ZwSetSystemTime(
712 _In_ PLARGE_INTEGER SystemTime,
713 _In_opt_ PLARGE_INTEGER NewSystemTime
714 );
715
716 NTSYSAPI
717 NTSTATUS
718 NTAPI
719 ZwSetTimerResolution(
720 _In_ ULONG RequestedResolution,
721 _In_ BOOLEAN SetOrUnset,
722 _Out_ PULONG ActualResolution
723 );
724
725 NTSYSAPI
726 NTSTATUS
727 NTAPI
728 ZwStartProfile(
729 _In_ HANDLE ProfileHandle
730 );
731
732 NTSYSAPI
733 NTSTATUS
734 NTAPI
735 ZwStopProfile(
736 _In_ HANDLE ProfileHandle
737 );
738
739 NTSYSAPI
740 NTSTATUS
741 NTAPI
742 ZwTestAlert(
743 VOID
744 );
745
746 NTSYSAPI
747 NTSTATUS
748 NTAPI
749 ZwVdmControl(
750 _In_ ULONG ControlCode,
751 _In_ PVOID ControlData
752 );
753
754 NTSYSAPI
755 NTSTATUS
756 NTAPI
757 ZwW32Call(
758 _In_ ULONG RoutineIndex,
759 _In_ PVOID Argument,
760 _In_ ULONG ArgumentLength,
761 _Out_opt_ PVOID* Result,
762 _Out_opt_ PULONG ResultLength
763 );
764
765 NTSYSAPI
766 NTSTATUS
767 NTAPI
768 ZwYieldExecution(
769 VOID
770 );
771 #endif