-/*
- * PROJECT: ReactOS Native Headers
- * FILE: include/ndk/kefuncs.h
- * PURPOSE: Prototypes for Kernel Functions not defined in DDK/IFS
- * PROGRAMMER: Alex Ionescu (alex@relsoft.net)
- * UPDATE HISTORY:
- * Created 06/10/04
- */
+/*++ NDK Version: 0098
+
+Copyright (c) Alex Ionescu. All rights reserved.
+
+Header Name:
+
+ kefuncs.h
+
+Abstract:
+
+ Functions definitions for the Kernel services.
+
+Author:
+
+ Alex Ionescu (alexi@tinykrnl.org) - Updated - 27-Feb-2006
+
+--*/
+
#ifndef _KEFUNCS_H
#define _KEFUNCS_H
-/* DEPENDENCIES **************************************************************/
-#include "ketypes.h"
-
-/* FUNCTION TYPES ************************************************************/
+//
+// Dependencies
+//
+#include <umtypes.h>
+#include <ketypes.h>
-/* PROTOTYPES ****************************************************************/
+#ifndef NTOS_MODE_USER
-VOID
-STDCALL
+//
+// APC Functions
+//
+VOID
+NTAPI
KeInitializeApc(
- IN PKAPC Apc,
- IN PKTHREAD Thread,
- IN KAPC_ENVIRONMENT TargetEnvironment,
- IN PKKERNEL_ROUTINE KernelRoutine,
- IN PKRUNDOWN_ROUTINE RundownRoutine OPTIONAL,
- IN PKNORMAL_ROUTINE NormalRoutine,
- IN KPROCESSOR_MODE Mode,
- IN PVOID Context
-);
+ IN PKAPC Apc,
+ IN PKTHREAD Thread,
+ IN KAPC_ENVIRONMENT TargetEnvironment,
+ IN PKKERNEL_ROUTINE KernelRoutine,
+ IN PKRUNDOWN_ROUTINE RundownRoutine OPTIONAL,
+ IN PKNORMAL_ROUTINE NormalRoutine,
+ IN KPROCESSOR_MODE Mode,
+ IN PVOID Context
+);
VOID
-STDCALL
-KeEnterKernelDebugger(VOID);
+NTAPI
+KiDeliverApc(
+ IN KPROCESSOR_MODE PreviousMode,
+ IN PVOID Reserved,
+ IN PKTRAP_FRAME TrapFrame
+);
+//
+// Process/Thread Functions
+//
+VOID
+NTAPI
+KeTerminateThread(
+ IN KPRIORITY Increment
+);
+
+BOOLEAN
+NTAPI
+KeIsAttachedProcess(
+ VOID
+);
+
+VOID
+NTAPI
+KeSetEventBoostPriority(
+ IN PKEVENT Event,
+ IN PKTHREAD *Thread OPTIONAL
+);
+
+NTSTATUS
+NTAPI
+KeSetAffinityThread(
+ PKTHREAD Thread,
+ KAFFINITY Affinity
+);
+
+PKPROCESS
+NTAPI
+KeGetCurrentProcess(
+ VOID
+);
+
+BOOLEAN
+NTAPI
+KeAddSystemServiceTable(
+ PULONG_PTR Base,
+ PULONG Count OPTIONAL,
+ ULONG Limit,
+ PUCHAR Number,
+ ULONG Index
+);
+
+//
+// Spinlock Functions
+//
VOID
FASTCALL
KiAcquireSpinLock(
PKSPIN_LOCK SpinLock
);
-VOID
-STDCALL
-KiDeliverApc(
- IN KPROCESSOR_MODE PreviousMode,
- IN PVOID Reserved,
- IN PKTRAP_FRAME TrapFrame
+KIRQL
+FASTCALL
+KeAcquireQueuedSpinLockRaiseToSynch(
+ IN KSPIN_LOCK_QUEUE_NUMBER LockNumber
);
+KIRQL
+FASTCALL
+KeAcquireInStackQueuedSpinLockRaiseToSynch(
+ IN PKSPIN_LOCK SpinLock,
+ IN PKLOCK_QUEUE_HANDLE LockHandle
+);
+
+
+//
+// Interrupt Functions
+//
VOID
-STDCALL
-KiDispatchInterrupt(VOID);
+NTAPI
+KeInitializeInterrupt(
+ PKINTERRUPT InterruptObject,
+ PKSERVICE_ROUTINE ServiceRoutine,
+ PVOID ServiceContext,
+ PKSPIN_LOCK SpinLock,
+ ULONG Vector,
+ KIRQL Irql,
+ KIRQL SynchronizeIrql,
+ KINTERRUPT_MODE InterruptMode,
+ BOOLEAN ShareVector,
+ CHAR ProcessorNumber,
+ BOOLEAN FloatingSave
+);
+BOOLEAN
+NTAPI
+KeConnectInterrupt(
+ PKINTERRUPT InterruptObject
+);
BOOLEAN
-STDCALL
-KeAreApcsDisabled(
- VOID
- );
+NTAPI
+KeDisconnectInterrupt(
+ PKINTERRUPT InterruptObject
+);
VOID
-STDCALL
-KeFlushQueuedDpcs(
+NTAPI
+KiDispatchInterrupt(
VOID
- );
+);
-ULONG
-STDCALL
-KeGetRecommendedSharedDataAlignment(
+VOID
+NTAPI
+KiCoprocessorError(
VOID
- );
-
-ULONG
-STDCALL
-KeQueryRuntimeThread(
- IN PKTHREAD Thread,
- OUT PULONG UserTime
- );
-
-BOOLEAN
-STDCALL
-KeSetKernelStackSwapEnable(
- IN BOOLEAN Enable
- );
-
-BOOLEAN
-STDCALL
-KeDeregisterBugCheckReasonCallback(
- IN PKBUGCHECK_REASON_CALLBACK_RECORD CallbackRecord
- );
+);
-BOOLEAN
-STDCALL
-KeRegisterBugCheckReasonCallback(
- IN PKBUGCHECK_REASON_CALLBACK_RECORD CallbackRecord,
- IN PKBUGCHECK_REASON_CALLBACK_ROUTINE CallbackRoutine,
- IN KBUGCHECK_CALLBACK_REASON Reason,
- IN PUCHAR Component
- );
-
-VOID
-STDCALL
-KeTerminateThread(
- IN KPRIORITY Increment
+VOID
+NTAPI
+KiUnexpectedInterrupt(
+ VOID
);
-BOOLEAN
-STDCALL
-KeIsAttachedProcess(VOID);
+VOID
+NTAPI
+KeEnterKernelDebugger(
+ VOID
+);
BOOLEAN
-STDCALL
+NTAPI
KeIsExecutingDpc(
VOID
);
-VOID
-STDCALL
-KeSetEventBoostPriority(
- IN PKEVENT Event,
- IN PKTHREAD *Thread OPTIONAL
+BOOLEAN
+NTAPI
+KiIpiServiceRoutine(
+ IN PKTRAP_FRAME TrapFrame,
+ IN PVOID ExceptionFrame
);
-PCONFIGURATION_COMPONENT_DATA
-STDCALL
+//
+// ARC Configuration Functions. Only enabled if you have ARC Support
+//
+#ifdef _ARC_
+PCONFIGURATION_COMPONENT_DATA
+NTAPI
KeFindConfigurationNextEntry(
IN PCONFIGURATION_COMPONENT_DATA Child,
IN CONFIGURATION_CLASS Class,
IN PULONG ComponentKey OPTIONAL,
IN PCONFIGURATION_COMPONENT_DATA *NextLink
);
-
-PCONFIGURATION_COMPONENT_DATA
-STDCALL
+
+PCONFIGURATION_COMPONENT_DATA
+NTAPI
KeFindConfigurationEntry(
IN PCONFIGURATION_COMPONENT_DATA Child,
IN CONFIGURATION_CLASS Class,
IN CONFIGURATION_TYPE Type,
IN PULONG ComponentKey OPTIONAL
);
+#endif
+//
+// Low-level Hardware/CPU Control Functions
+//
VOID
-STDCALL
+NTAPI
KeFlushEntireTb(
- IN BOOLEAN Unknown,
- IN BOOLEAN CurrentCpuOnly
+ IN BOOLEAN Invalid,
+ IN BOOLEAN AllProcessors
);
VOID
-STDCALL
-KeRevertToUserAffinityThread(
- VOID
+NTAPI
+KeUpdateSystemTime(
+ PKTRAP_FRAME TrapFrame,
+ KIRQL Irql
);
VOID
-STDCALL
-KiCoprocessorError(
- VOID
+NTAPI
+KeUpdateRunTime(
+ PKTRAP_FRAME TrapFrame,
+ KIRQL Irql
);
VOID
-STDCALL
-KiUnexpectedInterrupt(
- VOID
+NTAPI
+KeSetDmaIoCoherency(
+ IN ULONG Coherency
);
VOID
-STDCALL
-KeSetDmaIoCoherency(
- IN ULONG Coherency
+KeSetGdtSelector(
+ ULONG Entry,
+ ULONG Value1,
+ ULONG Value2
);
VOID
-STDCALL
+NTAPI
KeSetProfileIrql(
IN KIRQL ProfileIrql
);
-NTSTATUS
-STDCALL
-KeSetAffinityThread(
- PKTHREAD Thread,
- KAFFINITY Affinity
-);
-
VOID
-STDCALL
-KeSetSystemAffinityThread(
- IN KAFFINITY Affinity
+NTAPI
+KeSetTimeIncrement(
+ IN ULONG MaxIncrement,
+ IN ULONG MinIncrement
);
NTSTATUS
-STDCALL
+NTAPI
+Ke386CallBios(
+ IN ULONG BiosCommand,
+ IN OUT PCONTEXT BiosArguments
+);
+
+//
+// Misc. Functions
+//
+NTSTATUS
+NTAPI
KeUserModeCallback(
- IN ULONG FunctionID,
- IN PVOID InputBuffer,
- IN ULONG InputLength,
- OUT PVOID *OutputBuffer,
- OUT PULONG OutputLength
+ IN ULONG FunctionID,
+ IN PVOID InputBuffer,
+ IN ULONG InputLength,
+ OUT PVOID *OutputBuffer,
+ OUT PULONG OutputLength
);
-VOID
-STDCALL
-KeSetTimeIncrement(
- IN ULONG MaxIncrement,
- IN ULONG MinIncrement
+NTSTATUS
+NTAPI
+KeRaiseUserException(
+ IN NTSTATUS ExceptionCode
);
-VOID
-STDCALL
-KeInitializeInterrupt(
- PKINTERRUPT InterruptObject,
- PKSERVICE_ROUTINE ServiceRoutine,
- PVOID ServiceContext,
- PKSPIN_LOCK SpinLock,
- ULONG Vector,
- KIRQL Irql,
- KIRQL SynchronizeIrql,
- KINTERRUPT_MODE InterruptMode,
- BOOLEAN ShareVector,
- CHAR ProcessorNumber,
- BOOLEAN FloatingSave
+#endif
+
+//
+// Native Calls
+//
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtContinue(
+ IN PCONTEXT Context,
+ IN BOOLEAN TestAlert
);
-
-BOOLEAN
-STDCALL
-KeConnectInterrupt(
- PKINTERRUPT InterruptObject
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtCallbackReturn(
+ PVOID Result,
+ ULONG ResultLength,
+ NTSTATUS Status
);
-VOID
-STDCALL
-KeDisconnectInterrupt(
- PKINTERRUPT InterruptObject
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtCreateProfile(
+ OUT PHANDLE ProfileHandle,
+ IN HANDLE ProcessHandle,
+ IN PVOID ImageBase,
+ IN ULONG ImageSize,
+ IN ULONG Granularity,
+ OUT PVOID Buffer,
+ IN ULONG ProfilingSize,
+ IN KPROFILE_SOURCE Source,
+ IN KAFFINITY ProcessorMask
);
-PKPROCESS
-STDCALL
-KeGetCurrentProcess(
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtDelayExecution(
+ IN BOOLEAN Alertable,
+ IN LARGE_INTEGER *Interval
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtFlushInstructionCache(
+ IN HANDLE ProcessHandle,
+ IN PVOID BaseAddress,
+ IN ULONG NumberOfBytesToFlush
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtGetContextThread(
+ IN HANDLE ThreadHandle,
+ OUT PCONTEXT Context
+);
+
+NTSYSCALLAPI
+ULONG
+NTAPI
+NtGetTickCount(
VOID
);
-VOID
-KeSetGdtSelector(
- ULONG Entry,
- ULONG Value1,
- ULONG Value2
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtQueryIntervalProfile(
+ IN KPROFILE_SOURCE ProfileSource,
+ OUT PULONG Interval
);
-LONG
-STDCALL
-KeReadStateMutant(
- IN PKMUTANT Mutant
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtQueryPerformanceCounter(
+ IN PLARGE_INTEGER Counter,
+ IN PLARGE_INTEGER Frequency
);
-VOID
-STDCALL
-KeInitializeMutant(
- IN PKMUTANT Mutant,
- IN BOOLEAN InitialOwner
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtQuerySystemTime(
+ OUT PLARGE_INTEGER CurrentTime
);
-
-LONG
-STDCALL
-KeReleaseMutant(
- IN PKMUTANT Mutant,
- IN KPRIORITY Increment,
- IN BOOLEAN Abandon,
- IN BOOLEAN Wait
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtQueryTimerResolution(
+ OUT PULONG MinimumResolution,
+ OUT PULONG MaximumResolution,
+ OUT PULONG ActualResolution
);
+NTSYSCALLAPI
NTSTATUS
-STDCALL
-KeRaiseUserException(
- IN NTSTATUS ExceptionCode
- );
+NTAPI
+NtQueueApcThread(
+ HANDLE ThreadHandle,
+ PKNORMAL_ROUTINE ApcRoutine,
+ PVOID NormalContext,
+ PVOID SystemArgument1,
+ PVOID SystemArgument2
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtRaiseException(
+ IN PEXCEPTION_RECORD ExceptionRecord,
+ IN PCONTEXT Context,
+ IN BOOLEAN SearchFrames
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtSetContextThread(
+ IN HANDLE ThreadHandle,
+ IN PCONTEXT Context
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtSetIntervalProfile(
+ ULONG Interval,
+ KPROFILE_SOURCE ClockSource
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtSetLdtEntries(
+ ULONG Selector1,
+ LDT_ENTRY LdtEntry1,
+ ULONG Selector2,
+ LDT_ENTRY LdtEntry2
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtSetSystemTime(
+ IN PLARGE_INTEGER SystemTime,
+ IN PLARGE_INTEGER NewSystemTime OPTIONAL
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtSetTimerResolution(
+ IN ULONG RequestedResolution,
+ IN BOOLEAN SetOrUnset,
+ OUT PULONG ActualResolution
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtStartProfile(
+ IN HANDLE ProfileHandle
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtStopProfile(
+ IN HANDLE ProfileHandle
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtTestAlert(
+ VOID
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtVdmControl(
+ ULONG ControlCode,
+ PVOID ControlData
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtW32Call(
+ IN ULONG RoutineIndex,
+ IN PVOID Argument,
+ IN ULONG ArgumentLength,
+ OUT PVOID* Result OPTIONAL,
+ OUT PULONG ResultLength OPTIONAL
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtYieldExecution(
+ VOID
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwContinue(
+ IN PCONTEXT Context,
+ IN BOOLEAN TestAlert
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwCallbackReturn(
+ PVOID Result,
+ ULONG ResultLength,
+ NTSTATUS Status
+);
-VOID
-STDCALL
-KeFlushWriteBuffer(VOID);
-
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwCreateProfile(
+ OUT PHANDLE ProfileHandle,
+ IN HANDLE ProcessHandle,
+ IN PVOID ImageBase,
+ IN ULONG ImageSize,
+ IN ULONG Granularity,
+ OUT PVOID Buffer,
+ IN ULONG ProfilingSize,
+ IN KPROFILE_SOURCE Source,
+ IN KAFFINITY ProcessorMask
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwDelayExecution(
+ IN BOOLEAN Alertable,
+ IN LARGE_INTEGER *Interval
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwFlushInstructionCache(
+ IN HANDLE ProcessHandle,
+ IN PVOID BaseAddress,
+ IN ULONG NumberOfBytesToFlush
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwGetContextThread(
+ IN HANDLE ThreadHandle,
+ OUT PCONTEXT Context
+);
+
+NTSYSAPI
+ULONG
+NTAPI
+ZwGetTickCount(
+ VOID
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueryIntervalProfile(
+ IN KPROFILE_SOURCE ProfileSource,
+ OUT PULONG Interval
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueryPerformanceCounter(
+ IN PLARGE_INTEGER Counter,
+ IN PLARGE_INTEGER Frequency
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQuerySystemTime(
+ OUT PLARGE_INTEGER CurrentTime
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueryTimerResolution(
+ OUT PULONG MinimumResolution,
+ OUT PULONG MaximumResolution,
+ OUT PULONG ActualResolution
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueueApcThread(
+ HANDLE ThreadHandle,
+ PKNORMAL_ROUTINE ApcRoutine,
+ PVOID NormalContext,
+ PVOID SystemArgument1,
+ PVOID SystemArgument2
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwRaiseException(
+ IN PEXCEPTION_RECORD ExceptionRecord,
+ IN PCONTEXT Context,
+ IN BOOLEAN SearchFrames
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetContextThread(
+ IN HANDLE ThreadHandle,
+ IN PCONTEXT Context
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetIntervalProfile(
+ ULONG Interval,
+ KPROFILE_SOURCE ClockSource
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetLdtEntries(
+ ULONG Selector1,
+ LDT_ENTRY LdtEntry1,
+ ULONG Selector2,
+ LDT_ENTRY LdtEntry2
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetSystemTime(
+ IN PLARGE_INTEGER SystemTime,
+ IN PLARGE_INTEGER NewSystemTime OPTIONAL
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetTimerResolution(
+ IN ULONG RequestedResolution,
+ IN BOOLEAN SetOrUnset,
+ OUT PULONG ActualResolution
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwStartProfile(
+ IN HANDLE ProfileHandle
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwStopProfile(
+ IN HANDLE ProfileHandle
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwTestAlert(
+ VOID
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwVdmControl(
+ ULONG ControlCode,
+ PVOID ControlData
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwW32Call(
+ IN ULONG RoutineIndex,
+ IN PVOID Argument,
+ IN ULONG ArgumentLength,
+ OUT PVOID* Result OPTIONAL,
+ OUT PULONG ResultLength OPTIONAL
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwYieldExecution(
+ VOID
+);
#endif