From c800cdda6e05a389ce829ea345e834a8629510fa Mon Sep 17 00:00:00 2001 From: Alex Ionescu Date: Wed, 23 Jun 2004 22:21:26 +0000 Subject: [PATCH] Added Ke Stub Prototypes svn path=/trunk/; revision=9850 --- reactos/include/ddk/kefuncs.h | 279 ++++++++++++++++++++++++++++++++-- reactos/include/ddk/ketypes.h | 100 ++++++++++-- 2 files changed, 351 insertions(+), 28 deletions(-) diff --git a/reactos/include/ddk/kefuncs.h b/reactos/include/ddk/kefuncs.h index a7aa8ca40bc..bf7ac42dc29 100644 --- a/reactos/include/ddk/kefuncs.h +++ b/reactos/include/ddk/kefuncs.h @@ -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 */ diff --git a/reactos/include/ddk/ketypes.h b/reactos/include/ddk/ketypes.h index aab46e16f5e..3d584aa5167 100644 --- a/reactos/include/ddk/ketypes.h +++ b/reactos/include/ddk/ketypes.h @@ -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 @@ -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 {