#ifndef __INCLUDE_DDK_KEFUNCS_H
#define __INCLUDE_DDK_KEFUNCS_H
-#define KEBUGCHECK(a) DbgPrint("KeBugCheck at %s:%i\n",__FILE__,__LINE__), KeBugCheck(a)
+#define KEBUGCHECK(a) DbgPrint("KeBugCheck (0x%X) at %s:%i\n", a, __FILE__,__LINE__), KeBugCheck(a)
/* KERNEL FUNCTIONS ********************************************************/
VOID STDCALL KeAttachProcess(struct _KPROCESS *Process);
+BOOLEAN
+STDCALL
+KeIsAttachedProcess(VOID);
+
VOID FASTCALL KiAcquireSpinLock(PKSPIN_LOCK SpinLock);
VOID FASTCALL KiReleaseSpinLock(PKSPIN_LOCK SpinLock);
VOID KeDrainApcQueue(VOID);
-struct _KPROCESS* KeGetCurrentProcess(VOID);
+struct _KPROCESS* STDCALL KeGetCurrentProcess(VOID);
/*
* FUNCTION: Acquires a spinlock so the caller can synchronize access to
#ifndef __USE_W32API
+static __inline
+VOID
+KeMemoryBarrier(
+ VOID)
+{
+ volatile LONG Barrier;
+ __asm__ __volatile__ ("xchg %%eax, %0" : : "m" (Barrier) : "%eax");
+}
+
VOID STDCALL KeAcquireSpinLockAtDpcLevel (IN PKSPIN_LOCK SpinLock);
#define KefAcquireSpinLockAtDpcLevel KeAcquireSpinLockAtDpcLevel
KIRQL STDCALL KeGetCurrentIrql (VOID);
#ifndef __USE_W32API
-#define KeGetCurrentProcessorNumber() (KeGetCurrentKPCR()->ProcessorNumber)
+#define KeGetCurrentProcessorNumber() (KeGetCurrentKPCR()->Number)
ULONG KeGetDcacheFillSize(VOID);
-ULONG STDCALL KeGetPreviousMode (VOID);
+KPROCESSOR_MODE STDCALL KeGetPreviousMode (VOID);
#endif
struct _KTHREAD* STDCALL KeGetCurrentThread (VOID);
EVENT_TYPE Type,
BOOLEAN State);
-NTSTATUS STDCALL KeInitializeInterrupt(PKINTERRUPT InterruptObject,
- PKSERVICE_ROUTINE ServiceRoutine,
- PVOID ServiceContext,
- PKSPIN_LOCK SpinLock,
- ULONG Vector,
- KIRQL Irql,
- KIRQL SynchronizeIrql,
- KINTERRUPT_MODE InterruptMode,
- BOOLEAN ShareVector,
- KAFFINITY ProcessorEnableMask,
- BOOLEAN FloatingSave);
+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);
VOID STDCALL KeInitializeMutant(IN PKMUTANT Mutant,
IN BOOLEAN InitialOwner);
VOID STDCALL KeLowerIrql (KIRQL NewIrql);
-NTSTATUS STDCALL KePulseEvent (PKEVENT Event,
- KPRIORITY Increment,
- BOOLEAN Wait);
+LONG STDCALL KePulseEvent (PKEVENT Event,
+ KPRIORITY Increment,
+ BOOLEAN Wait);
LARGE_INTEGER
STDCALL
VOID
);
+ULONGLONG
+STDCALL
+KeQueryInterruptTime(
+ VOID
+ );
+
VOID
STDCALL
KeRaiseIrql (
VOID STDCALL
KeRosDumpStackFrames ( PULONG Frame, ULONG FrameCount );
-BOOLEAN STDCALL
-KeRosPrintAddress(PVOID address);
+ULONG STDCALL
+KeRosGetStackFrames ( PULONG Frames, ULONG FrameCount );
+
+NTSTATUS STDCALL
+KeSetAffinityThread(PKTHREAD Thread,
+ KAFFINITY Affinity);
LONG STDCALL
KeSetBasePriorityThread(struct _KTHREAD* Thread,
IN PKTHREAD *Thread OPTIONAL
);
-PVOID
+PCONFIGURATION_COMPONENT_DATA
STDCALL
-KeFindConfigurationEntry(
- IN PVOID Unknown,
- IN ULONG Class,
+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
+
+PCONFIGURATION_COMPONENT_DATA
STDCALL
-KeFindConfigurationNextEntry(
- IN PVOID Unknown,
- IN ULONG Class,
+KeFindConfigurationEntry(
+ IN PCONFIGURATION_COMPONENT_DATA Child,
+ IN CONFIGURATION_CLASS Class,
IN CONFIGURATION_TYPE Type,
- IN PULONG RegKey,
- IN PVOID *NextLink
+ IN PULONG ComponentKey OPTIONAL
);
-
+
VOID
STDCALL
KeFlushEntireTb(
BOOLEAN
STDCALL
KeRemoveSystemServiceTable(
- IN PUCHAR Number
+ IN ULONG TableIndex
);
NTSTATUS
IN NTSTATUS ExceptionCode
);
+VOID
+FASTCALL
+KeAcquireGuardedMutex(
+ PKGUARDED_MUTEX GuardedMutex
+);
+
+VOID
+FASTCALL
+KeAcquireGuardedMutexUnsafe(
+ PKGUARDED_MUTEX GuardedMutex
+);
+
+VOID
+STDCALL
+KeEnterGuardedRegion(VOID);
+
+VOID
+STDCALL
+KeLeaveGuardedRegion(VOID);
+
+VOID
+FASTCALL
+KeInitializeGuardedMutex(
+ PKGUARDED_MUTEX GuardedMutex
+);
+
+VOID
+FASTCALL
+KeReleaseGuardedMutexUnsafe(
+ PKGUARDED_MUTEX GuardedMutex
+);
+
+VOID
+FASTCALL
+KeReleaseGuardedMutex(
+ PKGUARDED_MUTEX GuardedMutex
+);
+
+BOOL
+FASTCALL
+KeTryToAcquireGuardedMutex(
+ PKGUARDED_MUTEX GuardedMutex
+);
+
#endif /* __INCLUDE_DDK_KEFUNCS_H */