20#ifndef _AMD64_KETYPES_H
21#define _AMD64_KETYPES_H
32#define PCR ((volatile KPCR * const)__readgsqword(FIELD_OFFSET(KPCR, Self)))
52#define MACHINE_TYPE_ISA 0x0000
53#define MACHINE_TYPE_EISA 0x0001
54#define MACHINE_TYPE_MCA 0x0002
59#define I386_TASK_GATE 0x5
61#define I386_ACTIVE_TSS 0xB
62#define I386_CALL_GATE 0xC
63#define I386_INTERRUPT_GATE 0xE
64#define I386_TRAP_GATE 0xF
69#define RPL_MASK 0x0003
70#define MODE_MASK 0x0001
71#define KGDT64_NULL 0x0000
72#define KGDT64_R0_CODE 0x0010
73#define KGDT64_R0_DATA 0x0018
74#define KGDT64_R3_CMCODE 0x0020
75#define KGDT64_R3_DATA 0x0028
76#define KGDT64_R3_CODE 0x0030
77#define KGDT64_SYS_TSS 0x0040
78#define KGDT64_R3_CMTEB 0x0050
79#define KGDT64_R0_LDT 0x0060
93#define CR4_XMMEXCPT 0x400
94#define CR4_CHANNELS 0x800
95#define CR4_XSAVE 0x40000
100#define DR7_LEGAL 0xFFFF0355
101#define DR7_ACTIVE 0x00000355
102#define DR7_TRACE_BRANCH 0x00000200
103#define DR7_LAST_BRANCH 0x00000100
108#define DEBUG_ACTIVE_DR7 0x0001
109#define DEBUG_ACTIVE_INSTRUMENTED 0x0002
110#define DEBUG_ACTIVE_DBG_INSTRUMENTED 0x0003
111#define DEBUG_ACTIVE_MINIMAL_THREAD 0x0004
112#define DEBUG_ACTIVE_PRIMARY_THREAD 0x0080
113#define DEBUG_ACTIVE_PRIMARY_THREAD_BIT 0x0007
114#define DEBUG_ACTIVE_PRIMARY_THREAD_LOCK_BIT 0x001F
115#define DEBUG_ACTIVE_SCHEDULED_THREAD 0x0040
116#define DEBUG_ACTIVE_SCHEDULED_THREAD_BIT 0x0006
117#define DEBUG_ACTIVE_SCHEDULED_THREAD_LOCK_BIT 0x001E
118#define DEBUG_ACTIVE_SCHEDULED_THREAD_LOCK 0x40000000
123#define EFLAGS_CF 0x01L
124#define EFLAGS_ZF 0x40L
125#define EFLAGS_TF 0x100L
126#define EFLAGS_INTERRUPT_MASK 0x200L
127#define EFLAGS_DF 0x400L
128#define EFLAGS_IOPL 0x3000L
129#define EFLAGS_NESTED_TASK 0x4000L
131#define EFLAGS_RF 0x10000
132#define EFLAGS_V86_MASK 0x20000
133#define EFLAGS_ALIGN_CHECK 0x40000
134#define EFLAGS_VIF 0x80000
135#define EFLAGS_VIP 0x100000
136#define EFLAGS_ID 0x200000
137#define EFLAGS_USER_SANITIZE 0x3F4DD7
138#define EFLAG_SIGN 0x8000
139#define EFLAG_ZERO 0x4000
140#define EFLAGS_TF_MASK 0x0100
141#define EFLAGS_TF_SHIFT 0x0008
142#define EFLAGS_ID_MASK 0x200000
143#define EFLAGS_IF_MASK 0x0200
144#define EFLAGS_IF_SHIFT 0x0009
149#define XSW_INVALID_OPERATION 0x0001
150#define XSW_DENORMAL 0x0002
151#define XSW_ZERO_DIVIDE 0x0004
152#define XSW_OVERFLOW 0x0008
153#define XSW_UNDERFLOW 0x0010
154#define XSW_PRECISION 0x0020
155#define XCW_INVALID_OPERATION 0x0080
156#define XCW_DENORMAL 0x0100
157#define XCW_ZERO_DIVIDE 0x0200
158#define XCW_OVERFLOW 0x0400
159#define XCW_UNDERFLOW 0x0800
160#define XCW_PRECISION 0x1000
161#define XCW_ROUND_CONTROL 0x6000
162#define XCW_FLUSH_ZERO 0x8000
163#define XSW_ERROR_MASK 0x003F
164#define XSW_ERROR_SHIFT 7
169#define FSW_INVALID_OPERATION 0x0001
170#define FSW_DENORMAL 0x0002
171#define FSW_ZERO_DIVIDE 0x0004
172#define FSW_OVERFLOW 0x0008
173#define FSW_UNDERFLOW 0x0010
174#define FSW_PRECISION 0x0020
175#define FSW_STACK_FAULT 0x0040
176#define FSW_ERROR_SUMMARY 0x0080
177#define FSW_CONDITION_CODE_0 0x0100
178#define FSW_CONDITION_CODE_1 0x0200
179#define FSW_CONDITION_CODE_2 0x0400
180#define FSW_CONDITION_CODE_3 0x4000
181#define FSW_ERROR_MASK 0x003F
186#define MSR_EFER 0xC0000080
187#define MSR_STAR 0xC0000081
188#define MSR_LSTAR 0xC0000082
189#define MSR_CSTAR 0xC0000083
190#define MSR_SYSCALL_MASK 0xC0000084
191#define MSR_FS_BASE 0xC0000100
192#define MSR_GS_BASE 0xC0000101
193#define MSR_GS_SWAP 0xC0000102
194#define MSR_MCG_STATUS 0x017A
195#define MSR_AMD_ACCESS 0x9C5A203A
196#define MSR_IA32_MISC_ENABLE 0x01A0
197#define MSR_LAST_BRANCH_FROM 0x01DB
198#define MSR_LAST_BRANCH_TO 0x01DC
199#define MSR_LAST_EXCEPTION_FROM 0x01DD
200#define MSR_LAST_EXCEPTION_TO 0x01DE
215#define MSR_SCE 0x0001
216#define MSR_LME 0x0100
217#define MSR_LMA 0x0400
218#define MSR_NXE 0x0800
219#define MSR_PAT 0x0277
220#define MSR_DEBUG_CTL 0x01D9
225#define MSR_XD_ENABLE_MASK 0xFFFFFFFB
230#define MSR_DEBUG_CTL_LBR 0x0001
231#define MSR_DEBUG_CTL_BTF 0x0002
239#define IPI_PACKET_READY 8
240#define IPI_SYNCH_REQUEST 16
245#define PRCB_MINOR_VERSION 1
246#define PRCB_MAJOR_VERSION 1
247#define PRCB_BUILD_DEBUG 1
248#define PRCB_BUILD_UNIPROCESSOR 2
253#define KEXCEPTION_ACTIVE_INTERRUPT_FRAME 0x0000
254#define KEXCEPTION_ACTIVE_EXCEPTION_FRAME 0x0001
255#define KEXCEPTION_ACTIVE_SERVICE_FRAME 0x0002
260#define INITIAL_STALL_COUNT 100
261#define MM_HAL_VA_START 0xFFFFFFFFFFC00000ULL
262#define MM_HAL_VA_END 0xFFFFFFFFFFFFFFFFULL
263#define APIC_BASE 0xFFFFFFFFFFFE0000ULL
268#define IO_ACCESS_MAP_NONE 0
269#define IOPM_OFFSET FIELD_OFFSET(KTSS, IoMaps[0].IoMap)
270#define KiComputeIopmOffset(MapNumber) \
271 (MapNumber == IO_ACCESS_MAP_NONE) ? \
272 (USHORT)(sizeof(KTSS)) : \
273 (USHORT)(FIELD_OFFSET(KTSS, IoMaps[MapNumber-1].IoMap))
278#define KSEG0_BASE 0xfffff80000000000ULL
280#define NMI_STACK_SIZE 0x2000
281#define ISR_STACK_SIZE 0x6000
287#define SYNCH_LEVEL DISPATCH_LEVEL
289#define SYNCH_LEVEL (IPI_LEVEL - 2)
295#define NUMBER_POOL_LOOKASIDE_LISTS 32
404#ifndef _LDT_ENTRY_DEFINED
405#define _LDT_ENTRY_DEFINED
446#define KGDTENTRY KGDTENTRY64
447#define PKGDTENTRY PKGDTENTRY64
488#define KIDTENTRY KIDTENTRY64
489#define PKIDTENTRY PKIDTENTRY64
498#ifndef NTOS_MODE_USER
543#if (NTDDI_VERSION < NTDDI_LONGHORN)
544#define GENERAL_LOOKASIDE_POOL PP_LOOKASIDE_LIST
567#if (NTDDI_VERSION >= NTDDI_LONGHORN)
578#if (NTDDI_VERSION >= NTDDI_LONGHORN)
591#if (NTDDI_VERSION >= NTDDI_LONGHORN)
610#if (NTDDI_VERSION >= NTDDI_LONGHORN)
618#if (NTDDI_VERSION >= NTDDI_LONGHORN)
625#if (NTDDI_VERSION >= NTDDI_LONGHORN)
641#if (NTDDI_VERSION < NTDDI_LONGHORN)
647#if (NTDDI_VERSION < NTDDI_LONGHORN)
655#if (NTDDI_VERSION >= NTDDI_LONGHORN)
675#if (NTDDI_VERSION < NTDDI_LONGHORN)
687#if (NTDDI_VERSION >= NTDDI_LONGHORN)
709#if (NTDDI_VERSION >= NTDDI_LONGHORN)
716#if (NTDDI_VERSION >= NTDDI_LONGHORN)
720#if (NTDDI_VERSION >= NTDDI_LONGHORN)
732#if (NTDDI_VERSION >= NTDDI_LONGHORN)
737#if (NTDDI_VERSION >= NTDDI_LONGHORN)
750#if (NTDDI_VERSION >= NTDDI_LONGHORN)
763#if (NTDDI_VERSION >= NTDDI_LONGHORN)
772#if (NTDDI_VERSION >= NTDDI_LONGHORN)
845 ULONG KeFirstLevelTbFills;
846 ULONG KeFloatingEmulationCount;
848 ULONG KeSecondLevelTbFills;
942#if (NTDDI_VERSION >= NTDDI_WIN8)
958#if (NTDDI_VERSION < NTDDI_WIN8)
963#if (NTDDI_VERSION >= NTDDI_WIN8)
1060#define PROCESSOR_START_FLAG_FORCE_ENABLE_NX 0x0001
unsigned long long UINT64
EXCEPTION_ROUTINE * PEXCEPTION_ROUTINE
struct _KSPECIAL_REGISTERS * PKSPECIAL_REGISTERS
struct _KIDT_ACCESS KIDT_ACCESS
struct _KTRAP_FRAME KTRAP_FRAME
struct _KREQUEST_PACKET * PKREQUEST_PACKET
struct _KDESCRIPTOR * PKDESCRIPTOR
struct _KPROCESSOR_STATE * PKPROCESSOR_STATE
union _KGDTENTRY64 * PKGDTENTRY64
struct _KREQUEST_PACKET KREQUEST_PACKET
struct _KUSER_EXCEPTION_STACK * PKUSER_EXCEPTION_STACK
struct _KSTART_FRAME KSTART_FRAME
#define NUMBER_POOL_LOOKASIDE_LISTS
struct _REQUEST_MAILBOX * PREQUEST_MAILBOX
struct _KPROCESSOR_START_BLOCK * PKPROCESSOR_START_BLOCK
struct _KSWITCH_FRAME KSWITCH_FRAME
struct _DISPATCHER_CONTEXT * PDISPATCHER_CONTEXT
struct _REQUEST_MAILBOX REQUEST_MAILBOX
KEXCEPTION_FRAME KCALLOUT_FRAME
struct _KUSER_EXCEPTION_STACK KUSER_EXCEPTION_STACK
struct _KEXCEPTION_FRAME * PKEXCEPTION_FRAME
FORCEINLINE struct _KPRCB * KeGetCurrentPrcb(VOID)
struct _DISPATCHER_CONTEXT DISPATCHER_CONTEXT
struct _KiIoAccessMap KIIO_ACCESS_MAP
struct _KDESCRIPTOR KDESCRIPTOR
struct _MACHINE_FRAME MACHINE_FRAME
struct _KSWITCH_FRAME * PKSWITCH_FRAME
struct _UCALLOUT_FRAME * PUCALLOUT_FRAME
KEXCEPTION_FRAME * PKCALLOUT_FRAME
union _KIDTENTRY64 * PKIDTENTRY64
union _KGDTENTRY64 KGDTENTRY64
union _KIDTENTRY64 KIDTENTRY64
struct _MACHINE_FRAME * PMACHINE_FRAME
struct _KSTART_FRAME * PKSTART_FRAME
struct _KEXCEPTION_FRAME KEXCEPTION_FRAME
struct _KTRAP_FRAME * PKTRAP_FRAME
struct _KPROCESSOR_START_BLOCK KPROCESSOR_START_BLOCK
struct _KSPECIAL_REGISTERS KSPECIAL_REGISTERS
union _CPU_INFO * PCPU_INFO
struct _KIDT_ACCESS * PKIDT_ACCESS
struct _KPROCESSOR_STATE KPROCESSOR_STATE
struct _UCALLOUT_FRAME UCALLOUT_FRAME
struct _RUNTIME_FUNCTION * FunctionEntry
struct _UNWIND_HISTORY_TABLE * HistoryTable
PEXCEPTION_ROUTINE LanguageHandler
ULONG SecondLevelCacheSize
UCHAR SecondLevelCacheAssociativity
struct _KPRCB * CurrentPrcb
union _KGDTENTRY64 * GdtBase
PKSPIN_LOCK_QUEUE LockArray
union _KIDTENTRY64 * IdtBase
LONG IoWriteOperationCount
UCHAR CoresPerPhysicalProcessor
ULONG CcCopyReadNoWaitMiss
ULONG CcLostDelayedWrites
KSPIN_LOCK_QUEUE LockQueue[LockQueueMaximumLock]
PROCESSOR_POWER_STATE PowerState
struct _KTHREAD * IdleThread
GENERAL_LOOKASIDE_POOL PPNPagedLookasideList[NUMBER_POOL_LOOKASIDE_LISTS]
UCHAR DpcInterruptRequested
struct _KPRCB * MultiThreadSetMaster
LONG IoReadOperationCount
ULONG CcPinReadNoWaitMiss
LONG IoOtherOperationCount
LONG MmMappedWriteIoCount
GENERAL_LOOKASIDE_POOL PPPagedLookasideList[NUMBER_POOL_LOOKASIDE_LISTS]
ULONG CachedResidentAvailable
ULONG CcPinMappedDataCount
ULONG CcMdlReadNoWaitMiss
LONG MaximumDpcQueueDepth
UCHAR LogicalProcessorsPerPhysicalProcessor
PP_LOOKASIDE_LIST PPLookasideList[16]
ULONG CcMapDataNoWaitMiss
ULONG KeExceptionDispatchCount
ULONG CcFastMdlReadNoWait
LONG MmDirtyPagesWriteCount
struct _KTHREAD * CurrentThread
LARGE_INTEGER IoReadTransferCount
struct _KTHREAD * NextThread
REQUEST_MAILBOX RequestMailbox[64]
ULONG CcFastReadResourceMiss
LARGE_INTEGER IoOtherTransferCount
LONG MmMappedPagesWriteCount
UINT64 MultiThreadProcessorSet
SLIST_HEADER HypercallPageList
UINT64 CacheProcessorMask[5]
PVOID HypercallPageVirtual
struct _KNODE * ParentNode
UCHAR LogicalProcessorsPerCore
LARGE_INTEGER UpdateSignature
KPROCESSOR_STATE ProcessorState
LONG MmCacheTransitionCount
LIST_ENTRY DispatcherReadyListHead[32]
ULONG CcFastMdlReadNotPossible
LARGE_INTEGER IoWriteTransferCount
ULONG CcLazyWriteHotSpots
ULONG KeAlignmentFixupCount
ULONG CcFastReadNotPossible
SINGLE_LIST_ENTRY DeferredReadyListHead
ULONG CcFastMdlReadResourceMiss
UINT64 PackageProcessorSet
SLIST_HEADER InterruptObjectPool
KPROCESSOR_STATE ProcessorState
UCHAR LmIdentityTarget[6]
struct _KPROCESSOR_START_BLOCK * SelfMap
KSPECIAL_REGISTERS SpecialRegisters
ULONG64 LastExceptionToRip
ULONG64 LastBranchFromRip
ULONG64 LastExceptionFromRip
UINT64 LastExceptionFromRip
UINT64 LastExceptionToRip
MACHINE_FRAME MachineFrame
EXCEPTION_RECORD ExceptionRecord
KREQUEST_PACKET RequestPacket
MACHINE_FRAME MachineFrame
#define FIELD_OFFSET(t, f)
struct _KGDTENTRY64::@2289::@2291::@2294 Bits
struct _KGDTENTRY64::@2289::@2291::@2293 Bytes