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
181 KiUnexpectedInterrupt(
187 KeEnterKernelDebugger(
200 IN PKTRAP_FRAME TrapFrame
,
201 IN PKEXCEPTION_FRAME ExceptionFrame
205 // ARC Configuration Functions. Only enabled if you have ARC Support
208 PCONFIGURATION_COMPONENT_DATA
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
218 PCONFIGURATION_COMPONENT_DATA
220 KeFindConfigurationEntry(
221 IN PCONFIGURATION_COMPONENT_DATA Child
,
222 IN CONFIGURATION_CLASS Class
,
223 IN CONFIGURATION_TYPE Type
,
224 IN PULONG ComponentKey OPTIONAL
229 // Low-level Hardware/CPU Control Functions
235 IN BOOLEAN AllProcessors
260 IN ULONG MaxIncrement
,
261 IN ULONG MinIncrement
267 IN ULONG BiosCommand
,
268 IN OUT PCONTEXT BiosArguments
278 IN PVOID InputBuffer
,
279 IN ULONG InputLength
,
280 OUT PVOID
*OutputBuffer
,
281 OUT PULONG OutputLength
286 KeRaiseUserException(
287 IN NTSTATUS ExceptionCode
316 OUT PHANDLE ProfileHandle
,
317 IN HANDLE ProcessHandle
,
320 IN ULONG Granularity
,
322 IN ULONG ProfilingSize
,
323 IN KPROFILE_SOURCE Source
,
324 IN KAFFINITY ProcessorMask
331 IN BOOLEAN Alertable
,
332 IN LARGE_INTEGER
*Interval
338 NtFlushInstructionCache(
339 IN HANDLE ProcessHandle
,
340 IN PVOID BaseAddress
,
341 IN ULONG NumberOfBytesToFlush
346 NtGetCurrentProcessorNumber(
354 IN HANDLE ThreadHandle
,
368 NtQueryIntervalProfile(
369 IN KPROFILE_SOURCE ProfileSource
,
376 NtQueryPerformanceCounter(
377 IN PLARGE_INTEGER Counter
,
378 IN PLARGE_INTEGER Frequency
385 OUT PLARGE_INTEGER CurrentTime
391 NtQueryTimerResolution(
392 OUT PULONG MinimumResolution
,
393 OUT PULONG MaximumResolution
,
394 OUT PULONG ActualResolution
402 PKNORMAL_ROUTINE ApcRoutine
,
404 PVOID SystemArgument1
,
405 PVOID SystemArgument2
412 IN PEXCEPTION_RECORD ExceptionRecord
,
414 IN BOOLEAN SearchFrames
421 IN HANDLE ThreadHandle
,
428 NtSetIntervalProfile(
430 IN KPROFILE_SOURCE ClockSource
438 IN LDT_ENTRY LdtEntry1
,
440 IN LDT_ENTRY LdtEntry2
447 IN PLARGE_INTEGER SystemTime
,
448 IN PLARGE_INTEGER NewSystemTime OPTIONAL
454 NtSetTimerResolution(
455 IN ULONG RequestedResolution
,
456 IN BOOLEAN SetOrUnset
,
457 OUT PULONG ActualResolution
464 IN HANDLE ProfileHandle
471 IN HANDLE ProfileHandle
493 IN ULONG RoutineIndex
,
495 IN ULONG ArgumentLength
,
496 OUT PVOID
* Result OPTIONAL
,
497 OUT PULONG ResultLength OPTIONAL
528 OUT PHANDLE ProfileHandle
,
529 IN HANDLE ProcessHandle
,
532 IN ULONG Granularity
,
534 IN ULONG ProfilingSize
,
535 IN KPROFILE_SOURCE Source
,
536 IN KAFFINITY ProcessorMask
543 IN BOOLEAN Alertable
,
544 IN LARGE_INTEGER
*Interval
550 ZwFlushInstructionCache(
551 IN HANDLE ProcessHandle
,
552 IN PVOID BaseAddress
,
553 IN ULONG NumberOfBytesToFlush
560 IN HANDLE ThreadHandle
,
574 ZwQueryIntervalProfile(
575 IN KPROFILE_SOURCE ProfileSource
,
582 ZwQueryPerformanceCounter(
583 IN PLARGE_INTEGER Counter
,
584 IN PLARGE_INTEGER Frequency
591 OUT PLARGE_INTEGER CurrentTime
597 ZwQueryTimerResolution(
598 OUT PULONG MinimumResolution
,
599 OUT PULONG MaximumResolution
,
600 OUT PULONG ActualResolution
608 PKNORMAL_ROUTINE ApcRoutine
,
610 PVOID SystemArgument1
,
611 PVOID SystemArgument2
618 IN PEXCEPTION_RECORD ExceptionRecord
,
620 IN BOOLEAN SearchFrames
627 IN HANDLE ThreadHandle
,
634 ZwSetIntervalProfile(
636 IN KPROFILE_SOURCE ClockSource
644 IN LDT_ENTRY LdtEntry1
,
646 IN LDT_ENTRY LdtEntry2
653 IN PLARGE_INTEGER SystemTime
,
654 IN PLARGE_INTEGER NewSystemTime OPTIONAL
660 ZwSetTimerResolution(
661 IN ULONG RequestedResolution
,
662 IN BOOLEAN SetOrUnset
,
663 OUT PULONG ActualResolution
670 IN HANDLE ProfileHandle
677 IN HANDLE ProfileHandle
699 IN ULONG RoutineIndex
,
701 IN ULONG ArgumentLength
,
702 OUT PVOID
* Result OPTIONAL
,
703 OUT PULONG ResultLength OPTIONAL