1#ifndef MATANEL_EXECUTIVE_H
2#define MATANEL_EXECUTIVE_H
22#define MSR_IA32_DEBUGCTL 0x1D9
23#define MSR_LASTBRANCH_TOS 0x1C9
24#define MSR_LASTBRANCH_FROM0 0x680
25#define MSR_LASTBRANCH_TO0 0x6C0
26#define DPC_TARGET_CURRENT 0xFF
233#define LASTFUNC_BUFFER_SIZE 128
234#define LASTFUNC_HISTORY_SIZE 25
236#define DEFAULT_TIMESLICE 1
238#define KERNEL_CS 0x08
239#define KERNEL_DS 0x10
240#define KERNEL_SS 0x10
244#define INITIAL_RFLAGS 0x202
245#define USER_RFLAGS 0x246
348 IN void* BugCheckParameter1,
349 IN void* BugCheckParameter2,
350 IN void* BugCheckParameter3,
351 IN void* BugCheckParameter4
371 __asm__
volatile(
"pause" :::
"memory");
374 __asm__
volatile(
"" :::
"memory");
386 __asm__
volatile(
"" :::
"memory");
422 return returningIrql;
462 IN bool InitializeStandardRoutine,
485 IN uint32_t CpuNumber
492 IN void* DeferredContext,
499 IN void* SystemArgument1,
500 IN void* SystemArgument2
514void ReapOb(
DPC* dpc,
void* DeferredContext,
void* SystemArgument1,
void* SystemArgument2);
551 IN bool EnabledBefore
struct _TRAP_FRAME TRAP_FRAME
struct _IPROCESS IPROCESS
struct _PROCESSOR PROCESSOR
struct _DOUBLY_LINKED_LIST DOUBLY_LINKED_LIST
FORCEINLINE uint64_t __readgsqword(uint64_t offset)
#define FIELD_OFFSET(t, f)
NORETURN void Schedule(void)
struct _WAIT_BLOCK * PWAIT_BLOCK
enum _TimeSliceTicks * PTimeSliceTicks
bool MeDisableInterrupts(void)
void MeDetachProcess(IN PAPC_STATE ApcState)
NORETURN void MeBugCheck(IN enum _BUGCHECK_CODES BugCheckCode)
struct _ITHREAD * PITHREAD
struct _APC_STATE APC_STATE
@ MANUALLY_INITIATED_CRASH
@ NULL_POINTER_DEREFERENCE
@ ATTEMPTED_WRITE_TO_READONLY_MEMORY
@ COPROCESSOR_SEGMENT_OVERRUN
@ PAGE_FAULT_IN_FREED_NONPAGED_POOL
@ IRQL_NOT_GREATER_OR_EQUAL
@ PFN_DATABASE_INIT_FAILURE
@ MEMORY_MAP_SIZE_OVERRUN
Custom ones.
@ ATTEMPTED_SWITCH_FROM_DPC
@ KMODE_EXCEPTION_NOT_HANDLED
@ BLOCK_DEVICE_LIMIT_REACHED
@ FRAME_BITMAP_CREATION_FAILURE
@ INVALID_INTERRUPT_REQUEST
@ FRAME_ALLOCATION_FAILED
@ UNABLE_TO_INIT_TRACELASTFUNC
@ INVALID_INITIALIZATION_PHASE
@ THREAD_ID_CREATION_FAILURE
@ PAGE_FAULT_IN_FREED_PAGED_POOL
@ MANUALLY_INITIATED_CRASH2
@ GENERAL_PROTECTION_FAULT
@ SEGMENT_SELECTOR_NOTPRESENT
@ INVALID_PROCESS_ATTACH_ATTEMPT
void MeRaiseIrql(IN IRQL NewIrql, OUT PIRQL OldIrql)
FORCEINLINE PITHREAD MeGetCurrentThread(void)
FORCEINLINE bool MeIsExecutingDpc(void)
bool MeAreInterruptsEnabled(void)
bool MeRemoveQueueDpc(IN PDPC Dpc)
enum _DEBUG_ACCESS_MODE DEBUG_ACCESS_MODE
void DEFERRED_ROUTINE(struct _DPC *Dpc, void *DeferredContext, void *SystemArgument1, void *SystemArgument2)
bool MeInsertQueueDpc(IN PDPC Dpc, IN void *SystemArgument1, IN void *SystemArgument2)
PPROCESSOR MeGetProcessorBlock(uint8_t ProcessorNumber)
FORCEINLINE IRQL MeGetCurrentIrql(void)
NORETURN void MeBugCheckEx(IN enum _BUGCHECK_CODES BugCheckCode, IN void *BugCheckParameter1, IN void *BugCheckParameter2, IN void *BugCheckParameter3, IN void *BugCheckParameter4)
enum _DPC_PRIORITY DPC_PRIORITY
struct _DPC_DATA * PDPC_DATA
void(* DebugCallback)(void *)
struct _TRAP_FRAME * PTRAP_FRAME
void MeEnableInterrupts(IN bool EnabledBefore)
struct _DBG_CALLBACK_INFO DBG_CALLBACK_INFO
DEFERRED_ROUTINE * PDEFERRED_ROUTINE
void MeInitializeDpc(IN PDPC DpcAllocated, IN PDEFERRED_ROUTINE DeferredRoutine, IN void *DeferredContext, IN DPC_PRIORITY DeferredPriority)
FORCEINLINE void MeReleaseSchedulerLock(void)
void MeInitializeProcessor(IN PPROCESSOR CPU, IN bool InitializeStandardRoutine, IN bool AreYouAP)
enum _DEBUG_LENGTH DEBUG_LENGTH
void MeSetTargetProcessorDpc(IN PDPC Dpc, IN uint32_t CpuNumber)
void CleanStacks(DPC *dpc, void *thread, void *allocatedDPC, void *arg4)
struct _APC_STATE * PAPC_STATE
FORCEINLINE uint8_t MeGetActiveProcessorCount(void)
struct _DEBUG_ENTRY DEBUG_ENTRY
void ReapOb(DPC *dpc, void *DeferredContext, void *SystemArgument1, void *SystemArgument2)
void MeAttachProcess(IN PIPROCESS Process, OUT PAPC_STATE ApcState)
void _MeSetIrql(IN IRQL NewIrql)
struct _DPC_DATA DPC_DATA
void MeLowerIrql(IN IRQL NewIrql)
enum _CPU_FLAGS CPU_FLAGS
FORCEINLINE void MeAcquireSchedulerLock(void)
FORCEINLINE PPROCESSOR MeGetCurrentProcessor(void)
enum _TimeSliceTicks TimeSliceTicks
FORCEINLINE PRIVILEGE_MODE MeGetPreviousMode(void)
struct _WAIT_BLOCK WAIT_BLOCK
enum _BUGCHECK_CODES BUGCHECK_CODES
enum _WAIT_REASON WAIT_REASON
@ DEFAULT_TIMESLICE_TICKS
struct _IPI_PARAMS IPI_PARAMS
#define MAX_POOL_DESCRIPTORS
struct _POOL_DESCRIPTOR POOL_DESCRIPTOR
enum _PRIVILEGE_MODE PRIVILEGE_MODE
struct _SPINLOCK SPINLOCK
PEPROCESS SavedApcProcess
volatile uint32_t DpcQueueDepth
DOUBLY_LINKED_LIST DpcListHead
volatile uint32_t DpcCount
DOUBLY_LINKED_LIST DpcListEntry
enum _DPC_PRIORITY priority
PDEFERRED_ROUTINE DeferredRoutine
struct _SPINLOCK ProcessLock
uint64_t * PageDirectoryVirtual
uintptr_t PageDirectoryPhysical
enum _PRIVILEGE_MODE PreviousMode
enum _TimeSliceTicks TimeSlice
struct _WAIT_BLOCK WaitBlock
struct _TRAP_FRAME TrapRegisters
enum _TimeSliceTicks TimeSliceAllocated
struct _APC_STATE ApcState
struct _DPC * CurrentDeferredRoutine
volatile IPI_PARAMS IpiParameter
volatile bool schedulerEnabled
struct _DEBUG_ENTRY DebugEntry[4]
struct _ETHREAD * idleThread
volatile bool DpcRoutineActive
struct _ITHREAD * currentThread
uint32_t MaximumDpcQueueDepth
volatile bool DpcInterruptRequested
volatile uint32_t TimerRequest
enum _CPU_ACTION IpiAction
struct _DPC TimerExpirationDPC
POOL_DESCRIPTOR LookasidePools[MAX_POOL_DESCRIPTORS]
volatile bool ApcRoutineActive
uintptr_t LapicAddressPhys
volatile uint32_t * LapicAddressVirt
volatile bool ApcInterruptRequested
struct _SINGLE_LINKED_LIST WaitBlockList
enum _WAIT_REASON WaitReason