3 Copyright (c) Alex Ionescu. All rights reserved.
11 Functions definitions for the Kernel services.
15 Alex Ionescu (alexi@tinykrnl.org) - Updated - 27-Feb-2006
28 #ifndef NTOS_MODE_USER
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
,
50 IN PVOID SystemArgument1
,
51 IN PVOID SystemArgument2
,
52 IN KPRIORITY PriorityBoost
58 IN KPROCESSOR_MODE PreviousMode
,
59 IN PKEXCEPTION_FRAME ExceptionFrame
,
60 IN PKTRAP_FRAME TrapFrame
64 // Process/Thread Functions
69 IN KPRIORITY Increment
80 KeSetEventBoostPriority(
82 IN PKTHREAD
*Thread OPTIONAL
100 KeAddSystemServiceTable(
102 PULONG Count OPTIONAL
,
109 // Spinlock Functions
125 KeAcquireQueuedSpinLockRaiseToSynch(
126 IN KSPIN_LOCK_QUEUE_NUMBER LockNumber
131 KeAcquireInStackQueuedSpinLockRaiseToSynch(
132 IN PKSPIN_LOCK SpinLock
,
133 IN PKLOCK_QUEUE_HANDLE LockHandle
138 // Interrupt Functions
142 KeInitializeInterrupt(
143 PKINTERRUPT InterruptObject
,
144 PKSERVICE_ROUTINE ServiceRoutine
,
145 PVOID ServiceContext
,
146 PKSPIN_LOCK SpinLock
,
149 KIRQL SynchronizeIrql
,
150 KINTERRUPT_MODE InterruptMode
,
152 CHAR ProcessorNumber
,
159 PKINTERRUPT InterruptObject
164 KeDisconnectInterrupt(
165 PKINTERRUPT InterruptObject
182 KiUnexpectedInterrupt(
188 KeEnterKernelDebugger(
207 IN PKTRAP_FRAME TrapFrame
,
208 IN PVOID ExceptionFrame
212 // ARC Configuration Functions. Only enabled if you have ARC Support
215 PCONFIGURATION_COMPONENT_DATA
217 KeFindConfigurationNextEntry(
218 IN PCONFIGURATION_COMPONENT_DATA Child
,
219 IN CONFIGURATION_CLASS Class
,
220 IN CONFIGURATION_TYPE Type
,
221 IN PULONG ComponentKey OPTIONAL
,
222 IN PCONFIGURATION_COMPONENT_DATA
*NextLink
225 PCONFIGURATION_COMPONENT_DATA
227 KeFindConfigurationEntry(
228 IN PCONFIGURATION_COMPONENT_DATA Child
,
229 IN CONFIGURATION_CLASS Class
,
230 IN CONFIGURATION_TYPE Type
,
231 IN PULONG ComponentKey OPTIONAL
236 // Low-level Hardware/CPU Control Functions
242 IN BOOLEAN AllProcessors
248 PKTRAP_FRAME TrapFrame
,
256 PKTRAP_FRAME TrapFrame
,
282 IN ULONG MaxIncrement
,
283 IN ULONG MinIncrement
289 IN ULONG BiosCommand
,
290 IN OUT PCONTEXT BiosArguments
300 IN PVOID InputBuffer
,
301 IN ULONG InputLength
,
302 OUT PVOID
*OutputBuffer
,
303 OUT PULONG OutputLength
308 KeRaiseUserException(
309 IN NTSTATUS ExceptionCode
338 OUT PHANDLE ProfileHandle
,
339 IN HANDLE ProcessHandle
,
342 IN ULONG Granularity
,
344 IN ULONG ProfilingSize
,
345 IN KPROFILE_SOURCE Source
,
346 IN KAFFINITY ProcessorMask
353 IN BOOLEAN Alertable
,
354 IN LARGE_INTEGER
*Interval
360 NtFlushInstructionCache(
361 IN HANDLE ProcessHandle
,
362 IN PVOID BaseAddress
,
363 IN ULONG NumberOfBytesToFlush
368 NtGetCurrentProcessorNumber(
376 IN HANDLE ThreadHandle
,
390 NtQueryIntervalProfile(
391 IN KPROFILE_SOURCE ProfileSource
,
398 NtQueryPerformanceCounter(
399 IN PLARGE_INTEGER Counter
,
400 IN PLARGE_INTEGER Frequency
407 OUT PLARGE_INTEGER CurrentTime
413 NtQueryTimerResolution(
414 OUT PULONG MinimumResolution
,
415 OUT PULONG MaximumResolution
,
416 OUT PULONG ActualResolution
424 PKNORMAL_ROUTINE ApcRoutine
,
426 PVOID SystemArgument1
,
427 PVOID SystemArgument2
434 IN PEXCEPTION_RECORD ExceptionRecord
,
436 IN BOOLEAN SearchFrames
443 IN HANDLE ThreadHandle
,
450 NtSetIntervalProfile(
452 KPROFILE_SOURCE ClockSource
469 IN PLARGE_INTEGER SystemTime
,
470 IN PLARGE_INTEGER NewSystemTime OPTIONAL
476 NtSetTimerResolution(
477 IN ULONG RequestedResolution
,
478 IN BOOLEAN SetOrUnset
,
479 OUT PULONG ActualResolution
486 IN HANDLE ProfileHandle
493 IN HANDLE ProfileHandle
515 IN ULONG RoutineIndex
,
517 IN ULONG ArgumentLength
,
518 OUT PVOID
* Result OPTIONAL
,
519 OUT PULONG ResultLength OPTIONAL
550 OUT PHANDLE ProfileHandle
,
551 IN HANDLE ProcessHandle
,
554 IN ULONG Granularity
,
556 IN ULONG ProfilingSize
,
557 IN KPROFILE_SOURCE Source
,
558 IN KAFFINITY ProcessorMask
565 IN BOOLEAN Alertable
,
566 IN LARGE_INTEGER
*Interval
572 ZwFlushInstructionCache(
573 IN HANDLE ProcessHandle
,
574 IN PVOID BaseAddress
,
575 IN ULONG NumberOfBytesToFlush
582 IN HANDLE ThreadHandle
,
596 ZwQueryIntervalProfile(
597 IN KPROFILE_SOURCE ProfileSource
,
604 ZwQueryPerformanceCounter(
605 IN PLARGE_INTEGER Counter
,
606 IN PLARGE_INTEGER Frequency
613 OUT PLARGE_INTEGER CurrentTime
619 ZwQueryTimerResolution(
620 OUT PULONG MinimumResolution
,
621 OUT PULONG MaximumResolution
,
622 OUT PULONG ActualResolution
630 PKNORMAL_ROUTINE ApcRoutine
,
632 PVOID SystemArgument1
,
633 PVOID SystemArgument2
640 IN PEXCEPTION_RECORD ExceptionRecord
,
642 IN BOOLEAN SearchFrames
649 IN HANDLE ThreadHandle
,
656 ZwSetIntervalProfile(
658 KPROFILE_SOURCE ClockSource
675 IN PLARGE_INTEGER SystemTime
,
676 IN PLARGE_INTEGER NewSystemTime OPTIONAL
682 ZwSetTimerResolution(
683 IN ULONG RequestedResolution
,
684 IN BOOLEAN SetOrUnset
,
685 OUT PULONG ActualResolution
692 IN HANDLE ProfileHandle
699 IN HANDLE ProfileHandle
721 IN ULONG RoutineIndex
,
723 IN ULONG ArgumentLength
,
724 OUT PVOID
* Result OPTIONAL
,
725 OUT PULONG ResultLength OPTIONAL