Added Ke Stub Prototypes

svn path=/trunk/; revision=9850
This commit is contained in:
Alex Ionescu
2004-06-23 22:21:26 +00:00
parent 3d29c6de30
commit c800cdda6e
2 changed files with 351 additions and 28 deletions
+263 -16
View File
@@ -1,3 +1,4 @@
#ifndef __INCLUDE_DDK_KEFUNCS_H
#define __INCLUDE_DDK_KEFUNCS_H
@@ -257,17 +258,6 @@ KeRaiseIrqlToDpcLevel (
VOID
);
/*
* FUNCTION: Raises a user mode exception
* ARGUMENTS:
* ExceptionCode = Status code of the exception
*/
NTSTATUS
STDCALL
KeRaiseUserException (
IN NTSTATUS ExceptionCode
);
LONG
STDCALL
KeReadStateEvent (
@@ -482,7 +472,11 @@ Ke386IoSetAccessProcess(struct _EPROCESS* Eprocess, BOOL EnableIo);
* 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
@@ -490,8 +484,11 @@ KeSetGdtSelector(ULONG Entry, ULONG Value1, ULONG Value2);
* 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
@@ -499,8 +496,11 @@ NTSTATUS KeI386ReleaseGdtSelectors(OUT PULONG SelArray,
* SelArray =
* NumOfSelectors =
*/
NTSTATUS KeI386AllocateGdtSelectors(OUT PULONG SelArray,
IN ULONG NumOfSelectors);
NTSTATUS
KeI386AllocateGdtSelectors(
OUT PULONG SelArray,
IN ULONG NumOfSelectors
);
KIRQL
@@ -536,4 +536,251 @@ VOID STDCALL KiDeliverApc(ULONG Unknown1,
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 */
+88 -12
View File
@@ -36,18 +36,7 @@ typedef VOID STDCALL_FUNC
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>
@@ -163,6 +152,29 @@ typedef struct _KEVENT_PAIR
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:
@@ -229,6 +241,31 @@ typedef struct _WAIT_CONTEXT_BLOCK
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
@@ -246,6 +283,45 @@ typedef LONG FLOATL;
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
{