- NDK 0.98, now with versionned headers. Too many changes to list, see the TinyKRNL...
[reactos.git] / reactos / include / ndk / kefuncs.h
index 5bfd9d6..4becfad 100644 (file)
-/*
- * 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(
@@ -45,237 +111,602 @@ KiReleaseSpinLock(
     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
-    );
+VOID
+NTAPI
+KiUnexpectedInterrupt(
+    VOID
+);
 
-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
+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
 );
 
-PVOID
-STDCALL
-KeFindConfigurationEntry(
-    IN PVOID Unknown,
-    IN ULONG Class,
+//
+// 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 CONFIGURATION_TYPE Type,
-    IN PULONG RegKey
+    IN PULONG ComponentKey OPTIONAL,
+    IN PCONFIGURATION_COMPONENT_DATA *NextLink
 );
 
-PVOID
-STDCALL
-KeFindConfigurationNextEntry(
-    IN PVOID Unknown,
-    IN ULONG Class,
+PCONFIGURATION_COMPONENT_DATA
+NTAPI
+KeFindConfigurationEntry(
+    IN PCONFIGURATION_COMPONENT_DATA Child,
+    IN CONFIGURATION_CLASS Class,
     IN CONFIGURATION_TYPE Type,
-    IN PULONG RegKey,
-    IN PVOID *NextLink
+    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
+);
+
+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