+
#ifndef __INCLUDE_DDK_KEFUNCS_H
#define __INCLUDE_DDK_KEFUNCS_H
VOID
);
-/*
- * FUNCTION: Raises a user mode exception
- * ARGUMENTS:
- * ExceptionCode = Status code of the exception
- */
-NTSTATUS
-STDCALL
-KeRaiseUserException (
- IN NTSTATUS ExceptionCode
- );
-
LONG
STDCALL
KeReadStateEvent (
* Value2 = The value of the high dword of the descriptor.
*/
VOID
-KeSetGdtSelector(ULONG Entry, ULONG Value1, ULONG Value2);
+KeSetGdtSelector(
+ ULONG Entry,
+ ULONG Value1,
+ ULONG Value2
+);
/*
* FUNCTION: Releases a set of Global Descriptor Table Selectors
* SelArray =
* NumOfSelectors =
*/
-NTSTATUS KeI386ReleaseGdtSelectors(OUT PULONG SelArray,
- IN ULONG NumOfSelectors);
+NTSTATUS
+KeI386ReleaseGdtSelectors(
+ OUT PULONG SelArray,
+ IN ULONG NumOfSelectors
+);
/*
* FUNCTION: Allocates a set of Global Descriptor Table Selectors
* SelArray =
* NumOfSelectors =
*/
-NTSTATUS KeI386AllocateGdtSelectors(OUT PULONG SelArray,
- IN ULONG NumOfSelectors);
+NTSTATUS
+KeI386AllocateGdtSelectors(
+ OUT PULONG SelArray,
+ IN ULONG NumOfSelectors
+);
KIRQL
VOID STDCALL KiDispatchInterrupt(VOID);
+/* Stubs Start here */
+
+STDCALL
+VOID
+KeReleaseInterruptSpinLock(
+ IN PKINTERRUPT Interrupt,
+ IN KIRQL OldIrql
+ );
+
+STDCALL
+BOOLEAN
+KeAreApcsDisabled(
+ VOID
+ );
+
+STDCALL
+VOID
+KeFlushQueuedDpcs(
+ VOID
+ );
+
+STDCALL
+ULONG
+KeGetRecommendedSharedDataAlignment(
+ VOID
+ );
+
+STDCALL
+ULONG
+KeQueryRuntimeThread(
+ IN PKTHREAD Thread,
+ OUT PULONG UserTime
+ );
+
+STDCALL
+BOOLEAN
+KeSetKernelStackSwapEnable(
+ IN BOOLEAN Enable
+ );
+
+STDCALL
+BOOLEAN
+KeDeregisterBugCheckReasonCallback(
+ IN PKBUGCHECK_REASON_CALLBACK_RECORD CallbackRecord
+ );
+
+STDCALL
+BOOLEAN
+KeRegisterBugCheckReasonCallback(
+ IN PKBUGCHECK_REASON_CALLBACK_RECORD CallbackRecord,
+ IN PKBUGCHECK_REASON_CALLBACK_ROUTINE CallbackRoutine,
+ IN KBUGCHECK_CALLBACK_REASON Reason,
+ IN PUCHAR Component
+ );
+
+STDCALL
+VOID
+KeTerminateThread(
+ IN KPRIORITY Increment
+);
+
+STDCALL
+VOID
+KeIsExecutingDpc(
+ VOID
+);
+
+STDCALL
+VOID
+KeSetEventBoostPriority(
+ IN PKEVENT Event,
+ IN PKTHREAD *Thread OPTIONAL
+);
+
+STDCALL
+PVOID
+KeFindConfigurationEntry(
+ IN PVOID Unknown,
+ IN ULONG Class,
+ IN CONFIGURATION_TYPE Type,
+ IN PULONG RegKey
+);
+
+STDCALL
+PVOID
+KeFindConfigurationNextEntry(
+ IN PVOID Unknown,
+ IN ULONG Class,
+ IN CONFIGURATION_TYPE Type,
+ IN PULONG RegKey,
+ IN PVOID *NextLink
+);
+
+STDCALL
+VOID
+KeFlushEntireTb(
+ IN ULONGLONG Flag
+);
+
+STDCALL
+VOID
+KeRevertToUserAffinityThread(
+ VOID
+);
+
+STDCALL
+VOID
+KiCoprocessorError(
+ VOID
+);
+
+STDCALL
+VOID
+KiUnexpectedInterrupt(
+ VOID
+);
+
+STDCALL
+VOID
+KeSetDmaIoCoherency(
+ IN ULONG Coherency
+);
+
+STDCALL
+VOID
+KeSetProfileIrql(
+ IN KIRQL ProfileIrql
+);
+
+STDCALL
+VOID
+KeSetSystemAffinityThread(
+ IN KAFFINITY Affinity
+);
+
+STDCALL
+NTSTATUS
+KeUserModeCallback(
+ IN ULONG FunctionID,
+ IN PVOID InputBuffer,
+ IN ULONG InputLength,
+ OUT PVOID *OutputBuffer,
+ OUT PULONG OutputLength
+);
+
+STDCALL
+VOID
+KeSetTimeIncrement(
+ IN ULONG MaxIncrement,
+ IN ULONG MinIncrement
+);
+
+STDCALL
+VOID
+KeCapturePersistentThreadState(
+ IN PVOID CurrentThread,
+ IN ULONG Setting1,
+ IN ULONG Setting2,
+ IN ULONG Setting3,
+ IN ULONG Setting4,
+ IN ULONG Setting5,
+ IN PVOID ThreadState
+);
+
+STDCALL
+BOOLEAN
+KeRemoveSystemServiceTable(
+ IN PUCHAR Number
+);
+
+NTSTATUS
+KeI386FlatToGdtSelector(
+ IN ULONG Base,
+ IN USHORT Length,
+ IN USHORT Selector
+);
+
+STDCALL
+CCHAR
+KeSetIdealProcessorThread (
+ IN PKTHREAD Thread,
+ IN CCHAR Processor
+ );
+
+typedef
+VOID
+(FASTCALL *PTIME_UPDATE_NOTIFY_ROUTINE)(
+ IN HANDLE ThreadId,
+ IN KPROCESSOR_MODE Mode
+ );
+
+VOID
+FASTCALL
+KeSetTimeUpdateNotifyRoutine(
+ IN PTIME_UPDATE_NOTIFY_ROUTINE NotifyRoutine
+ );
+
+STDCALL
+PKDEVICE_QUEUE_ENTRY
+KeRemoveByKeyDeviceQueueIfBusy (
+ IN PKDEVICE_QUEUE DeviceQueue,
+ IN ULONG SortKey
+ );
+
+STDCALL
+KAFFINITY
+KeQueryActiveProcessors (
+ VOID
+ );
+
+VOID
+FASTCALL
+KeAcquireInStackQueuedSpinLockAtDpcLevel(
+ IN PKSPIN_LOCK SpinLock,
+ IN PKLOCK_QUEUE_HANDLE LockHandle
+ );
+
+VOID
+FASTCALL
+KeReleaseInStackQueuedSpinLockFromDpcLevel(
+ IN PKLOCK_QUEUE_HANDLE LockHandle
+ );
+
+STDCALL
+KPRIORITY
+KeQueryPriorityThread (
+ IN PKTHREAD Thread
+ );
+
+STDCALL
+KIRQL
+KeAcquireInterruptSpinLock(
+ IN PKINTERRUPT Interrupt
+ );
+
+VOID
+__cdecl
+KeSaveStateForHibernate(
+ IN PVOID State
+);
+
+STDCALL
+NTSTATUS
+KeRaiseUserException(
+ IN NTSTATUS ExceptionCode
+);
+
#endif /* __INCLUDE_DDK_KEFUNCS_H */
struct _DISPATCHER_HEADER;
-typedef struct _KWAIT_BLOCK
-/*
- * PURPOSE: Object describing the wait a thread is currently performing
- */
-{
- LIST_ENTRY WaitListEntry;
- struct _KTHREAD* Thread;
- struct _DISPATCHER_HEADER *Object;
- struct _KWAIT_BLOCK* NextWaitBlock;
- USHORT WaitKey;
- USHORT WaitType;
-} KWAIT_BLOCK, *PKWAIT_BLOCK;
+
#include <pshpack1.h>
struct _KDPC;
+typedef struct _KSPIN_LOCK_QUEUE {
+ struct _KSPIN_LOCK_QUEUE * volatile Next;
+ PKSPIN_LOCK volatile Lock;
+} KSPIN_LOCK_QUEUE, *PKSPIN_LOCK_QUEUE;
+
+typedef struct _KLOCK_QUEUE_HANDLE {
+ KSPIN_LOCK_QUEUE LockQueue;
+ KIRQL OldIrql;
+} KLOCK_QUEUE_HANDLE, *PKLOCK_QUEUE_HANDLE;
+
+typedef struct _KWAIT_BLOCK
+/*
+ * PURPOSE: Object describing the wait a thread is currently performing
+ */
+{
+ LIST_ENTRY WaitListEntry;
+ struct _KTHREAD* Thread;
+ struct _DISPATCHER_HEADER *Object;
+ struct _KWAIT_BLOCK* NextWaitBlock;
+ USHORT WaitKey;
+ USHORT WaitType;
+} KWAIT_BLOCK, *PKWAIT_BLOCK;
+
/*
* PURPOSE: Defines a delayed procedure call routine
* NOTE:
PKDPC BufferChainingDpc;
} WAIT_CONTEXT_BLOCK, *PWAIT_CONTEXT_BLOCK;
+typedef enum _KBUGCHECK_CALLBACK_REASON {
+ KbCallbackInvalid,
+ KbCallbackReserved1,
+ KbCallbackSecondaryDumpData,
+ KbCallbackDumpIo,
+} KBUGCHECK_CALLBACK_REASON;
+
+typedef
+VOID
+(*PKBUGCHECK_REASON_CALLBACK_ROUTINE) (
+ IN KBUGCHECK_CALLBACK_REASON Reason,
+ IN PVOID Record, // This should be struct _KBUGCHECK_REASON_CALLBACK_RECORD* but minggw doesn't want to allow that...
+ IN OUT PVOID ReasonSpecificData,
+ IN ULONG ReasonSpecificDataLength
+ );
+
+typedef struct _KBUGCHECK_REASON_CALLBACK_RECORD {
+ LIST_ENTRY Entry;
+ PKBUGCHECK_REASON_CALLBACK_ROUTINE CallbackRoutine;
+ PUCHAR Component;
+ ULONG_PTR Checksum;
+ KBUGCHECK_CALLBACK_REASON Reason;
+ UCHAR State;
+} KBUGCHECK_REASON_CALLBACK_RECORD, *PKBUGCHECK_REASON_CALLBACK_RECORD;
+
struct _KINTERRUPT;
typedef BOOLEAN STDCALL_FUNC
typedef LONG FIX; /* fixed-point number */
+typedef struct _M128 {
+ ULONGLONG Low;
+ LONGLONG High;
+} M128, *PM128;
+
+typedef struct _KEXCEPTION_FRAME {
+ ULONG64 P1Home;
+ ULONG64 P2Home;
+ ULONG64 P3Home;
+ ULONG64 P4Home;
+ ULONG64 P5;
+ ULONG64 InitialStack;
+ M128 Xmm6;
+ M128 Xmm7;
+ M128 Xmm8;
+ M128 Xmm9;
+ M128 Xmm10;
+ M128 Xmm11;
+ M128 Xmm12;
+ M128 Xmm13;
+ M128 Xmm14;
+ M128 Xmm15;
+ ULONG64 TrapFrame;
+ ULONG64 CallbackStack;
+ ULONG64 OutputBuffer;
+ ULONG64 OutputLength;
+ UCHAR ExceptionRecord[64];
+ ULONG64 Fill1;
+ ULONG64 Rbp;
+ ULONG64 Rbx;
+ ULONG64 Rdi;
+ ULONG64 Rsi;
+ ULONG64 R12;
+ ULONG64 R13;
+ ULONG64 R14;
+ ULONG64 R15;
+ ULONG64 Return;
+} KEXCEPTION_FRAME, *PKEXCEPTION_FRAME;
+
/* copied from W32API */
typedef struct _KFLOATING_SAVE
{