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