ReactOS 0.4.15-dev-6694-g4ba8af9
ketypes.h
Go to the documentation of this file.
1/*++ NDK Version: 0098
2
3Copyright (c) Alex Ionescu. All rights reserved.
4
5Header Name:
6
7 ketypes.h (AMD64)
8
9Abstract:
10
11 amd64 Type definitions for the Kernel services.
12
13Author:
14
15 Alex Ionescu (alexi@tinykrnl.org) - Updated - 27-Feb-2006
16 Timo Kreuzer (timo.kreuzer@reactos.org) - Updated - 14-Aug-2008
17
18--*/
19
20#ifndef _AMD64_KETYPES_H
21#define _AMD64_KETYPES_H
22
23//
24// Dependencies
25//
26
27//
28// KPCR Access for non-IA64 builds
29//
30//#define K0IPCR ((ULONG_PTR)(KIP0PCRADDRESS))
31//#define PCR ((volatile KPCR * const)K0IPCR)
32#define PCR ((volatile KPCR * const)__readgsqword(FIELD_OFFSET(KPCR, Self)))
33//#if defined(CONFIG_SMP) || defined(NT_BUILD)
34//#undef KeGetPcr
35//#define KeGetPcr() ((volatile KPCR * const)__readfsdword(0x1C))
36//#endif
37
38//
39// CPU Vendors
40//
41typedef enum
42{
48
49//
50// Machine Types
51//
52#define MACHINE_TYPE_ISA 0x0000
53#define MACHINE_TYPE_EISA 0x0001
54#define MACHINE_TYPE_MCA 0x0002
55
56//
57// X86 80386 Segment Types
58//
59#define I386_TASK_GATE 0x5
60#define I386_TSS 0x9
61#define I386_ACTIVE_TSS 0xB
62#define I386_CALL_GATE 0xC
63#define I386_INTERRUPT_GATE 0xE
64#define I386_TRAP_GATE 0xF
65
66//
67// Selector Names
68//
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
80
81//
82// CR4
83//
84#define CR4_VME 0x1
85#define CR4_PVI 0x2
86#define CR4_TSD 0x4
87#define CR4_DE 0x8
88#define CR4_PSE 0x10
89#define CR4_PAE 0x20
90#define CR4_MCE 0x40
91#define CR4_PGE 0x80
92#define CR4_FXSR 0x200
93#define CR4_XMMEXCPT 0x400
94#define CR4_CHANNELS 0x800
95#define CR4_XSAVE 0x40000
96
97//
98// DR7
99//
100#define DR7_LEGAL 0xFFFF0355
101#define DR7_ACTIVE 0x00000355
102#define DR7_TRACE_BRANCH 0x00000200
103#define DR7_LAST_BRANCH 0x00000100
104
105//
106// Debug flags
107//
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
119
120//
121// EFlags
122//
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
130//#define EFLAGS_NF 0x4000
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
145
146//
147// MXCSR Floating Control/Status Bit Masks
148//
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
165
166//
167// Legacy floating status word bit masks.
168//
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
182
183//
184// Machine Specific Registers
185//
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
201
202//
203// Caching values for the PAT MSR
204//
205#define PAT_UC 0ULL
206#define PAT_WC 1ULL
207#define PAT_WT 4ULL
208#define PAT_WP 5ULL
209#define PAT_WB 6ULL
210#define PAT_UCM 7ULL
211
212//
213// Flags in MSR_EFER
214//
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
221
222//
223// Flags in MSR_IA32_MISC_ENABLE
224//
225#define MSR_XD_ENABLE_MASK 0xFFFFFFFB
226
227//
228// Flags in MSR_DEBUG_CTL
229//
230#define MSR_DEBUG_CTL_LBR 0x0001
231#define MSR_DEBUG_CTL_BTF 0x0002
232
233//
234// IPI Types
235//
236#define IPI_APC 1
237#define IPI_DPC 2
238#define IPI_FREEZE 4
239#define IPI_PACKET_READY 8
240#define IPI_SYNCH_REQUEST 16
241
242//
243// PRCB Flags
244//
245#define PRCB_MINOR_VERSION 1
246#define PRCB_MAJOR_VERSION 1
247#define PRCB_BUILD_DEBUG 1
248#define PRCB_BUILD_UNIPROCESSOR 2
249
250//
251// Exception active flags
252//
253#define KEXCEPTION_ACTIVE_INTERRUPT_FRAME 0x0000
254#define KEXCEPTION_ACTIVE_EXCEPTION_FRAME 0x0001
255#define KEXCEPTION_ACTIVE_SERVICE_FRAME 0x0002
256
257//
258// HAL Variables
259//
260#define INITIAL_STALL_COUNT 100
261#define MM_HAL_VA_START 0xFFFFFFFFFFC00000ULL /* This is Vista+ */
262#define MM_HAL_VA_END 0xFFFFFFFFFFFFFFFFULL
263#define APIC_BASE 0xFFFFFFFFFFFE0000ULL
264
265//
266// IOPM Definitions
267//
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))
274
275//
276// Static Kernel-Mode Address start (use MM_KSEG0_BASE for actual)
277//
278#define KSEG0_BASE 0xfffff80000000000ULL
279
280#define NMI_STACK_SIZE 0x2000
281#define ISR_STACK_SIZE 0x6000
282
283//
284// Synchronization-level IRQL
285//
286#ifndef CONFIG_SMP
287#define SYNCH_LEVEL DISPATCH_LEVEL
288#else
289#define SYNCH_LEVEL (IPI_LEVEL - 2)
290#endif
291
292//
293// Number of pool lookaside lists per pool in the PRCB
294//
295#define NUMBER_POOL_LOOKASIDE_LISTS 32
296
297//
298// Structure for CPUID
299//
300typedef union _CPU_INFO
301{
303 struct
304 {
309 };
311
312//
313// Trap Frame Definition
314//
315typedef struct _KTRAP_FRAME
316{
334 union
335 {
338 };
345 union
346 {
350 };
357 union
358 {
359 struct
360 {
366 };
367 struct
368 {
371 };
372 };
382 union
383 {
387 };
400
401//
402// Dummy LDT_ENTRY
403//
404#ifndef _LDT_ENTRY_DEFINED
405#define _LDT_ENTRY_DEFINED
407#endif
408
409//
410// GDT Entry Definition
411//
412typedef union _KGDTENTRY64
413{
414 struct
415 {
418 union
419 {
420 struct
421 {
427 struct
428 {
440 };
443 };
446#define KGDTENTRY KGDTENTRY64
447#define PKGDTENTRY PKGDTENTRY64
448
449//
450// IDT Entry Access Definition
451//
452typedef struct _KIDT_ACCESS
453{
454 union
455 {
456 struct
457 {
463 };
465 };
467
468//
469// IDT Entry Definition
470//
471typedef union _KIDTENTRY64
472{
473 struct
474 {
485 };
488#define KIDTENTRY KIDTENTRY64
489#define PKIDTENTRY PKIDTENTRY64
490
491typedef struct _KDESCRIPTOR
492{
497
498#ifndef NTOS_MODE_USER
499
500//
501// Special Registers Structure (outside of CONTEXT)
502//
504{
533
534//
535// Processor State Data
536//
537typedef struct _KPROCESSOR_STATE
538{
542
543#if (NTDDI_VERSION < NTDDI_LONGHORN)
544#define GENERAL_LOOKASIDE_POOL PP_LOOKASIDE_LIST
545#endif
546
547typedef struct _KREQUEST_PACKET
548{
552
553typedef struct _REQUEST_MAILBOX
554{
559
560//
561// Processor Region Control Block
562//
563#pragma pack(push,4)
564typedef struct _KPRCB
565{
567#if (NTDDI_VERSION >= NTDDI_LONGHORN)
569#else
572#endif
578#if (NTDDI_VERSION >= NTDDI_LONGHORN)
582#else
583 UINT64 UserRsp;
584#endif
591#if (NTDDI_VERSION >= NTDDI_LONGHORN)
592 union
593 {
595 struct
596 {
599 };
600 };
601#else
603#endif
610#if (NTDDI_VERSION >= NTDDI_LONGHORN)
613#else
616#endif
618#if (NTDDI_VERSION >= NTDDI_LONGHORN)
620#else
622 UCHAR PrcbPad0x[3];
623#endif
625#if (NTDDI_VERSION >= NTDDI_LONGHORN)
629#else
630 UINT64 PrcbPad00[4];
631#endif
641#if (NTDDI_VERSION < NTDDI_LONGHORN)
643#endif
647#if (NTDDI_VERSION < NTDDI_LONGHORN)
650#endif
655#if (NTDDI_VERSION >= NTDDI_LONGHORN)
665#else
668#endif
675#if (NTDDI_VERSION < NTDDI_LONGHORN)
677 UCHAR PrcbPad2[12];
678#endif
687#if (NTDDI_VERSION >= NTDDI_LONGHORN)
689#else
690 PVOID SavedRsp;
691#endif
709#if (NTDDI_VERSION >= NTDDI_LONGHORN)
711#else
712 LONG PrcbPad40;
714#endif
716#if (NTDDI_VERSION >= NTDDI_LONGHORN)
718#endif
720#if (NTDDI_VERSION >= NTDDI_LONGHORN)
728#else
729 UINT64 PrcbPad7[4];
730#endif
732#if (NTDDI_VERSION >= NTDDI_LONGHORN)
734#endif
737#if (NTDDI_VERSION >= NTDDI_LONGHORN)
739#endif
750#if (NTDDI_VERSION >= NTDDI_LONGHORN)
757#else
758 UCHAR PrcbPad8[13];
759#endif
763#if (NTDDI_VERSION >= NTDDI_LONGHORN)
770#endif
772#if (NTDDI_VERSION >= NTDDI_LONGHORN)
828#else
829 ULONG PrcbPad90[1];
835 UCHAR PrcbPad9[12];
845 ULONG KeFirstLevelTbFills;
846 ULONG KeFloatingEmulationCount;
848 ULONG KeSecondLevelTbFills;
850 UCHAR PrcbPad10[2];
856#endif
858
859//
860// Processor Control Region
861//
862typedef struct _KIPCR
863{
864 union
865 {
867 struct
868 {
872 struct _KPCR *Self;
876 };
877 };
897 ULONG Fill2[2]; // 0x178
898 KPRCB Prcb; // 0x180
899
900 // hack:
902
904#pragma pack(pop)
905
906//
907// TSS Definition
908//
909typedef struct _KiIoAccessMap
910{
914
915
916#pragma pack(push,4)
917typedef struct _KTSS64
918{
919 /* 000 */ ULONG Reserved0;
920 /* 004 */ UINT64 Rsp0;
921 /* 00c */ UINT64 Rsp1;
922 /* 014 */ UINT64 Rsp2;
923 /* 01c */ UINT64 Ist[8];
924 /* 05c */ UINT64 Reserved1;
925 /* 064 */ USHORT Reserved2;
926 /* 066 */ USHORT IoMapBase;
928#pragma pack(pop)
929#define KTSS KTSS64
930#define PKTSS PKTSS64
931
932//
933// KEXCEPTION_FRAME
934//
935typedef struct _KEXCEPTION_FRAME
936{
942#if (NTDDI_VERSION >= NTDDI_WIN8)
944#else
945 ULONG64 InitialStack;
946#endif
958#if (NTDDI_VERSION < NTDDI_WIN8)
959 ULONG64 CallbackStack;
960#endif
963#if (NTDDI_VERSION >= NTDDI_WIN8)
965#endif
977
978typedef struct _MACHINE_FRAME
979{
989
990//
991// Defines the Callback Stack Layout for User Mode Callbacks
992//
994
995//
996// User side callout frame
997//
998typedef struct _UCALLOUT_FRAME
999{
1008} UCALLOUT_FRAME, *PUCALLOUT_FRAME; // size = 0x0058
1009
1010//
1011// Stack frame layout for KiUserExceptionDispatcher
1012// The name is totally made up
1013//
1015{
1021
1023{
1032 struct _UNWIND_HISTORY_TABLE *HistoryTable;
1036
1037typedef struct _KSTART_FRAME
1038{
1046
1047typedef struct _KSWITCH_FRAME
1048{
1059
1060#define PROCESSOR_START_FLAG_FORCE_ENABLE_NX 0x0001
1062{
1064 ULONG Flags; // 0x0008
1065 ULONG Gdt32; // 0x000C
1066 ULONG Idt32; // 0x0012
1067 PVOID Gdt; // 0x0018
1068 // ???
1070 UCHAR PmTarget[6]; // 0x0060
1074 ULONG64 MsrPat; // 0x0080
1075 ULONG64 MsrEFER; // 0x0088
1078
1079//
1080// Inline function to get current KPRCB
1081//
1083struct _KPRCB *
1085{
1086 return (struct _KPRCB *)__readgsqword(FIELD_OFFSET(KIPCR, CurrentPrcb));
1087}
1088
1089#endif
1090#endif
unsigned long long UINT64
unsigned int UINT32
signed long long INT64
EXCEPTION_ROUTINE * PEXCEPTION_ROUTINE
Definition: compat.h:709
UCHAR KIRQL
Definition: env_spec_w32.h:591
unsigned __int64 ULONG64
Definition: imports.h:198
struct _KSPECIAL_REGISTERS * PKSPECIAL_REGISTERS
struct _KIDT_ACCESS KIDT_ACCESS
struct _KTSS64 * PKTSS64
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
Definition: ketypes.h:295
struct _REQUEST_MAILBOX * PREQUEST_MAILBOX
struct _KPROCESSOR_START_BLOCK * PKPROCESSOR_START_BLOCK
struct _KSWITCH_FRAME KSWITCH_FRAME
struct _DISPATCHER_CONTEXT * PDISPATCHER_CONTEXT
struct _KIPCR KIPCR
struct _REQUEST_MAILBOX REQUEST_MAILBOX
KEXCEPTION_FRAME KCALLOUT_FRAME
Definition: ketypes.h:993
struct _KUSER_EXCEPTION_STACK KUSER_EXCEPTION_STACK
struct _KPRCB * PKPRCB
struct _KEXCEPTION_FRAME * PKEXCEPTION_FRAME
FORCEINLINE struct _KPRCB * KeGetCurrentPrcb(VOID)
Definition: ketypes.h:1084
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
struct _KIPCR * PKIPCR
KEXCEPTION_FRAME * PKCALLOUT_FRAME
Definition: ketypes.h:993
union _KIDTENTRY64 * PKIDTENTRY64
CPU_VENDORS
Definition: ketypes.h:42
@ CPU_VIA
Definition: ketypes.h:46
@ CPU_INTEL
Definition: ketypes.h:45
@ CPU_UNKNOWN
Definition: ketypes.h:43
@ CPU_AMD
Definition: ketypes.h:44
union _KGDTENTRY64 KGDTENTRY64
union _KIDTENTRY64 KIDTENTRY64
union _CPU_INFO CPU_INFO
ULONG LDT_ENTRY
Definition: ketypes.h:406
struct _MACHINE_FRAME * PMACHINE_FRAME
struct _KSTART_FRAME * PKSTART_FRAME
struct _KPRCB KPRCB
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 _KTSS64 KTSS64
ULONG KeDcacheFlushCount
Definition: cpu.c:20
ULONG KeIcacheFlushCount
Definition: cpu.c:19
long LONG
Definition: pedump.c:60
unsigned short USHORT
Definition: pedump.c:61
Definition: fatfs.h:173
PCONTEXT ContextRecord
Definition: ketypes.h:1029
struct _RUNTIME_FUNCTION * FunctionEntry
Definition: ketypes.h:1026
struct _UNWIND_HISTORY_TABLE * HistoryTable
Definition: ketypes.h:1032
PEXCEPTION_ROUTINE LanguageHandler
Definition: ketypes.h:1030
ULONG64 EstablisherFrame
Definition: ketypes.h:1027
PVOID Base
Definition: ketypes.h:495
USHORT Pad[3]
Definition: ketypes.h:493
USHORT Limit
Definition: ketypes.h:494
Definition: ketypes.h:687
ULONG64 Return
Definition: ketypes.h:975
ULONG64 OutputBuffer
Definition: ketypes.h:961
ULONG64 P3Home
Definition: ketypes.h:939
ULONG64 P1Home
Definition: ketypes.h:937
ULONG64 MxCsr
Definition: ketypes.h:966
ULONG64 P4Home
Definition: ketypes.h:940
ULONG64 Spare2
Definition: ketypes.h:964
ULONG64 P2Home
Definition: ketypes.h:938
ULONG64 OutputLength
Definition: ketypes.h:962
ULONG64 TrapFrame
Definition: ketypes.h:957
ULONG64 Spare1
Definition: ketypes.h:943
UCHAR SystemSegmentFlag
Definition: ketypes.h:460
UCHAR Dpl
Definition: ketypes.h:461
UCHAR Reserved
Definition: ketypes.h:458
USHORT Value
Definition: ketypes.h:464
UCHAR SegmentType
Definition: ketypes.h:459
UCHAR Present
Definition: ketypes.h:462
ULONG ContextSwitches
Definition: ketypes.h:901
KPRCB Prcb
Definition: ketypes.h:898
USHORT MinorVersion
Definition: ketypes.h:886
ULONG SecondLevelCacheSize
Definition: ketypes.h:890
USHORT MajorVersion
Definition: ketypes.h:885
UCHAR SecondLevelCacheAssociativity
Definition: ketypes.h:881
KIRQL Irql
Definition: ketypes.h:880
UCHAR Fill0
Definition: ketypes.h:883
struct _KPRCB * CurrentPrcb
Definition: ketypes.h:873
union _KGDTENTRY64 * GdtBase
Definition: ketypes.h:869
ULONG Unused0[3]
Definition: ketypes.h:884
ULONG Fill1
Definition: ketypes.h:893
ULONG Fill2[2]
Definition: ketypes.h:897
ULONG HalReserved[16]
Definition: ketypes.h:891
PKSPIN_LOCK_QUEUE LockArray
Definition: ketypes.h:874
struct _KTSS64 * TssBase
Definition: ketypes.h:870
PVOID Unused1[3]
Definition: ketypes.h:888
UCHAR ObsoleteNumber
Definition: ketypes.h:882
NT_TIB NtTib
Definition: ketypes.h:866
PVOID Unused3
Definition: ketypes.h:895
ULONG Unused2
Definition: ketypes.h:892
ULONG KernelReserved[15]
Definition: ketypes.h:889
union _KIDTENTRY64 * IdtBase
Definition: ketypes.h:878
ULONG PcrAlign1[24]
Definition: ketypes.h:896
struct _KPCR * Self
Definition: ketypes.h:872
ULONG StallScaleFactor
Definition: ketypes.h:887
ULONG64 UserRsp
Definition: ketypes.h:871
PVOID KdVersionBlock
Definition: ketypes.h:894
PVOID Used_Self
Definition: ketypes.h:875
ULONG64 Unused[2]
Definition: ketypes.h:879
Definition: ke.h:294
LONG IoWriteOperationCount
Definition: ketypes.h:670
ULONG CcMdlReadNoWait
Definition: ketypes.h:782
UCHAR CoresPerPhysicalProcessor
Definition: ketypes.h:611
ULONG DpcTimeLimit
Definition: ketypes.h:753
ULONG CcCopyReadNoWaitMiss
Definition: ketypes.h:663
ULONG CcLostDelayedWrites
Definition: ketypes.h:789
PVOID HyperPte
Definition: ketypes.h:816
UINT64 HalReserved[8]
Definition: ketypes.h:605
UCHAR QuantumEnd
Definition: ketypes.h:705
UCHAR PrcbPad10[3]
Definition: ketypes.h:807
KSPIN_LOCK_QUEUE LockQueue[LockQueueMaximumLock]
Definition: ketypes.h:632
UCHAR IdleHalt
Definition: ketypes.h:574
PROCESSOR_POWER_STATE PowerState
Definition: ketypes.h:804
UCHAR PrcbPad3[116]
Definition: ketypes.h:681
ULONG InterruptTime
Definition: ketypes.h:745
LONG DpcWatchdogPeriod
Definition: ketypes.h:725
struct _KTHREAD * IdleThread
Definition: ketypes.h:577
ULONG Stride
Definition: ketypes.h:627
GENERAL_LOOKASIDE_POOL PPNPagedLookasideList[NUMBER_POOL_LOOKASIDE_LISTS]
Definition: ketypes.h:634
ULONG UserTime
Definition: ketypes.h:743
ULONG CcReadAheadIos
Definition: ketypes.h:799
ULONG CacheCount
Definition: ketypes.h:813
PVOID SparePtr0
Definition: ketypes.h:688
ULONG CcMapDataWaitMiss
Definition: ketypes.h:794
UINT64 PrcbLock
Definition: ketypes.h:586
UCHAR DpcThreadActive
Definition: ketypes.h:698
UCHAR DpcInterruptRequested
Definition: ketypes.h:695
UINT64 PrcbPad71[12]
Definition: ketypes.h:738
USHORT MinorVersion
Definition: ketypes.h:606
struct _KPRCB * MultiThreadSetMaster
Definition: ketypes.h:762
UINT64 SetMember
Definition: ketypes.h:587
LONG IoReadOperationCount
Definition: ketypes.h:669
UCHAR PrcbPad8[3]
Definition: ketypes.h:727
LONG MmDemandZeroCount
Definition: ketypes.h:644
LONG MmPageReadIoCount
Definition: ketypes.h:646
UCHAR DpcRoutineActive
Definition: ketypes.h:697
UCHAR VendorString[13]
Definition: ketypes.h:806
UCHAR NestingLevel
Definition: ketypes.h:579
PVOID RateControl
Definition: ketypes.h:824
UCHAR IdleSchedule
Definition: ketypes.h:707
LONG ClockKeepAlive
Definition: ketypes.h:721
UCHAR InterruptRequest
Definition: ketypes.h:573
ULONG QueueIndex
Definition: ketypes.h:736
UINT64 WaitLock
Definition: ketypes.h:733
PVOID WheaInfo
Definition: ketypes.h:817
UINT64 StartCycles
Definition: ketypes.h:764
CHAR CpuType
Definition: ketypes.h:589
LONG Sleeping
Definition: ketypes.h:771
UCHAR BuildType
Definition: ketypes.h:608
ULONG InterruptCount
Definition: ketypes.h:741
ULONG ApicMask
Definition: ketypes.h:617
LIST_ENTRY WaitListHead
Definition: ketypes.h:731
ULONG CcMdlReadWait
Definition: ketypes.h:783
ULONG KeContextSwitches
Definition: ketypes.h:657
ULONG CcPinReadNoWaitMiss
Definition: ketypes.h:795
ULONG CcPinReadWait
Definition: ketypes.h:781
PVOID AcpiReserved
Definition: ketypes.h:624
ULONG DpcLastCount
Definition: ketypes.h:703
UINT64 PrcbPad81[2]
Definition: ketypes.h:756
LONG IoOtherOperationCount
Definition: ketypes.h:671
UCHAR SkipTick
Definition: ketypes.h:747
PVOID EtwSupport
Definition: ketypes.h:818
ULONG PeriodicCount
Definition: ketypes.h:754
UINT64 RspBase
Definition: ketypes.h:585
ULONG MxCsr
Definition: ketypes.h:566
UCHAR CpuModel
Definition: ketypes.h:598
KDPC_DATA DpcData[2]
Definition: ketypes.h:685
LONG MmMappedWriteIoCount
Definition: ketypes.h:654
ULONG DebugDpcTime
Definition: ketypes.h:519
ULONG CcMapDataNoWait
Definition: ketypes.h:777
LONG MmCacheIoCount
Definition: ketypes.h:802
ULONG CachedCommit
Definition: ketypes.h:814
ULONG CcMdlReadWaitMiss
Definition: ketypes.h:798
LONG TickOffset
Definition: ketypes.h:701
GENERAL_LOOKASIDE_POOL PPPagedLookasideList[NUMBER_POOL_LOOKASIDE_LISTS]
Definition: ketypes.h:635
ULONG CachedResidentAvailable
Definition: ketypes.h:815
USHORT MajorVersion
Definition: ketypes.h:607
ULONG PageColor
Definition: ketypes.h:766
ULONG CcPinReadNoWait
Definition: ketypes.h:780
KDPC DpcWatchdogDpc
Definition: ketypes.h:810
UCHAR ClockPollCycle
Definition: ketypes.h:723
USHORT CpuStep
Definition: ketypes.h:594
ULONG PrcbPad91[3]
Definition: ketypes.h:803
LONG MmTransitionCount
Definition: ketypes.h:640
ULONG CcCopyReadWait
Definition: ketypes.h:662
UINT64 TargetSet
Definition: ketypes.h:679
ULONG CcPinMappedDataCount
Definition: ketypes.h:779
ULONG CcMdlReadNoWaitMiss
Definition: ketypes.h:797
UINT64 * StatisticsPage
Definition: ketypes.h:823
PVOID VirtualApicAssist
Definition: ketypes.h:822
UCHAR CpuVendor
Definition: ketypes.h:609
LONG MmCopyOnWriteCount
Definition: ketypes.h:639
UINT64 PacketBarrier
Definition: ketypes.h:636
UCHAR Group
Definition: ketypes.h:580
UINT64 CycleTime
Definition: ketypes.h:773
ULONG DpcTime
Definition: ketypes.h:744
LONG MaximumDpcQueueDepth
Definition: ketypes.h:692
PVOID PrcbPad51
Definition: ketypes.h:717
LONG MmCacheReadCount
Definition: ketypes.h:801
UCHAR LogicalProcessorsPerPhysicalProcessor
Definition: ketypes.h:706
UCHAR ClockCheckSlot
Definition: ketypes.h:722
ULONG CcFastMdlReadWait
Definition: ketypes.h:775
ULONG PeriodicBias
Definition: ketypes.h:755
UCHAR PrcbPad00[6]
Definition: ketypes.h:581
ULONG MinimumDpcRate
Definition: ketypes.h:694
PP_LOOKASIDE_LIST PPLookasideList[16]
Definition: ketypes.h:633
ULONG CcMapDataNoWaitMiss
Definition: ketypes.h:793
ULONG CcFastReadWait
Definition: ketypes.h:659
LONG LookasideIrpFloat
Definition: ketypes.h:664
ULONG CcMapDataWait
Definition: ketypes.h:778
ULONG NodeColor
Definition: ketypes.h:767
ULONG CcPinReadWaitMiss
Definition: ketypes.h:796
ULONG KeExceptionDispatchCount
Definition: ketypes.h:710
ULONG DpcTimeCount
Definition: ketypes.h:752
LONG DpcWatchdogCount
Definition: ketypes.h:726
ULONG AdjustDpcThreshold
Definition: ketypes.h:746
UCHAR PrcbPad9[3]
Definition: ketypes.h:700
ULONG CcFastMdlReadNoWait
Definition: ketypes.h:774
UCHAR ThreadDpcEnable
Definition: ketypes.h:704
LONG MmDirtyPagesWriteCount
Definition: ketypes.h:651
struct _KTHREAD * CurrentThread
Definition: ketypes.h:575
LARGE_INTEGER IoReadTransferCount
Definition: ketypes.h:672
ULONG FeatureBits
Definition: ketypes.h:808
struct _KTHREAD * NextThread
Definition: ketypes.h:576
UCHAR DpcThreadRequested
Definition: ketypes.h:696
REQUEST_MAILBOX RequestMailbox[64]
Definition: ketypes.h:682
ULONG CcDataPages
Definition: ketypes.h:788
LONG DpcSetEventRequest
Definition: ketypes.h:708
UCHAR PrcbPad80[5]
Definition: ketypes.h:751
ULONG CcFastReadNoWait
Definition: ketypes.h:658
LONG MmSpinLockOrdering
Definition: ketypes.h:765
ULONG CcFastReadResourceMiss
Definition: ketypes.h:790
LARGE_INTEGER IoOtherTransferCount
Definition: ketypes.h:674
ULONG KeSystemCalls
Definition: ketypes.h:656
USHORT Number
Definition: ketypes.h:568
UCHAR PollSlot
Definition: ketypes.h:749
UINT64 CoreProcessorSet
Definition: ketypes.h:827
LONG MmMappedPagesWriteCount
Definition: ketypes.h:653
UINT64 MultiThreadProcessorSet
Definition: ketypes.h:761
LONG MmPageFaultCount
Definition: ketypes.h:638
SLIST_HEADER HypercallPageList
Definition: ketypes.h:820
LONG MmDirtyWriteIoCount
Definition: ketypes.h:652
ULONG SecondaryColorMask
Definition: ketypes.h:769
UINT64 CacheProcessorMask[5]
Definition: ketypes.h:825
UCHAR PrcbPad6[2]
Definition: ketypes.h:724
PVOID HypercallPageVirtual
Definition: ketypes.h:821
UCHAR PrcbPad2[52]
Definition: ketypes.h:614
KEVENT DpcEvent
Definition: ketypes.h:715
ULONG InitialApicId
Definition: ketypes.h:626
struct _KNODE * ParentNode
Definition: ketypes.h:760
ULONG CFlushSize
Definition: ketypes.h:619
LONG MmPageReadCount
Definition: ketypes.h:645
ULONG KernelTime
Definition: ketypes.h:742
LONG MasterOffset
Definition: ketypes.h:702
ULONG CcCopyReadWaitMiss
Definition: ketypes.h:791
UCHAR PrcbPad4[120]
Definition: ketypes.h:684
PVOID DpcThread
Definition: ketypes.h:636
UINT64 TimerRequest
Definition: ketypes.h:700
ULONG CcLazyWritePages
Definition: ketypes.h:786
CHAR CpuID
Definition: ketypes.h:590
ULONG ReadySummary
Definition: ketypes.h:735
ULONG IpiFrozen
Definition: ketypes.h:680
ULONG DpcRequestRate
Definition: ketypes.h:693
UCHAR LogicalProcessorsPerCore
Definition: ketypes.h:612
UINT64 SenderSummary
Definition: ketypes.h:683
ULONG CcLazyWriteIos
Definition: ketypes.h:785
KDPC CallDpc
Definition: ketypes.h:719
ULONG NodeShiftedColor
Definition: ketypes.h:768
LARGE_INTEGER UpdateSignature
Definition: ketypes.h:809
KPROCESSOR_STATE ProcessorState
Definition: ketypes.h:588
LONG MmCacheTransitionCount
Definition: ketypes.h:800
LIST_ENTRY DispatcherReadyListHead[32]
Definition: ketypes.h:740
UCHAR CpuStepping
Definition: ketypes.h:597
ULONG CcFastMdlReadNotPossible
Definition: ketypes.h:776
UINT64 PrcbPad01[3]
Definition: ketypes.h:628
ULONG CcDataFlushes
Definition: ketypes.h:787
UCHAR PrcbPad50
Definition: ketypes.h:706
KTIMER DpcWatchdogTimer
Definition: ketypes.h:811
LARGE_INTEGER IoWriteTransferCount
Definition: ketypes.h:673
ULONG CcLazyWriteHotSpots
Definition: ketypes.h:784
ULONG CcCopyReadNoWait
Definition: ketypes.h:661
ULONG KeAlignmentFixupCount
Definition: ketypes.h:805
ULONG CcFastReadNotPossible
Definition: ketypes.h:660
UCHAR DebuggerSavedIRQL
Definition: ketypes.h:748
SINGLE_LIST_ENTRY DeferredReadyListHead
Definition: ketypes.h:637
PVOID DpcStack
Definition: ketypes.h:686
ULONG CcFastMdlReadResourceMiss
Definition: ketypes.h:792
UINT64 PackageProcessorSet
Definition: ketypes.h:826
ULONG MHz
Definition: ketypes.h:604
SLIST_HEADER InterruptObjectPool
Definition: ketypes.h:819
UINT64 TimerHand
Definition: ketypes.h:699
UINT64 PrcbPad70[2]
Definition: ketypes.h:727
KPROCESSOR_STATE ProcessorState
Definition: ketypes.h:1076
UCHAR LmIdentityTarget[6]
Definition: ketypes.h:1071
struct _KPROCESSOR_START_BLOCK * SelfMap
Definition: ketypes.h:1073
KSPECIAL_REGISTERS SpecialRegisters
Definition: ketypes.h:539
CONTEXT ContextFrame
Definition: ketypes.h:540
PVOID WorkerRoutine
Definition: ketypes.h:550
PVOID CurrentPacket[3]
Definition: ketypes.h:549
ULONG64 LastExceptionToRip
Definition: ketypes.h:523
ULONG64 KernelDr0
Definition: ketypes.h:509
ULONG64 KernelDr7
Definition: ketypes.h:514
ULONG64 MsrLStar
Definition: ketypes.h:529
ULONG64 LastBranchFromRip
Definition: ketypes.h:522
KDESCRIPTOR Gdtr
Definition: ketypes.h:515
ULONG64 KernelDr2
Definition: ketypes.h:511
ULONG64 MsrGsBase
Definition: ketypes.h:526
KDESCRIPTOR Idtr
Definition: ketypes.h:516
ULONG64 KernelDr1
Definition: ketypes.h:510
ULONG64 LastBranchToRip
Definition: ketypes.h:521
ULONG64 MsrCStar
Definition: ketypes.h:530
ULONG64 LastExceptionFromRip
Definition: ketypes.h:524
ULONG64 MsrSyscallMask
Definition: ketypes.h:531
ULONG64 MsrGsSwap
Definition: ketypes.h:527
ULONG64 KernelDr3
Definition: ketypes.h:512
ULONG64 KernelDr6
Definition: ketypes.h:513
ULONG64 DebugControl
Definition: ketypes.h:520
ULONG64 P2Home
Definition: ketypes.h:1040
ULONG64 Reserved
Definition: ketypes.h:1043
ULONG64 P1Home
Definition: ketypes.h:1039
ULONG64 Return
Definition: ketypes.h:1044
ULONG64 P4Home
Definition: ketypes.h:1042
ULONG64 P3Home
Definition: ketypes.h:1041
ULONG64 Return
Definition: ketypes.h:1057
ULONG64 P2Home
Definition: ketypes.h:1050
ULONG64 Rbp
Definition: ketypes.h:1056
UCHAR Fill1[7]
Definition: ketypes.h:1055
ULONG64 P3Home
Definition: ketypes.h:1051
ULONG64 P5Home
Definition: ketypes.h:1053
ULONG64 P4Home
Definition: ketypes.h:1052
ULONG64 P1Home
Definition: ketypes.h:1049
KIRQL ApcBypass
Definition: ketypes.h:1054
M128A Xmm1
Definition: ketypes.h:340
UINT64 Rsp
Definition: ketypes.h:395
UCHAR Logging
Definition: ketypes.h:391
ULONG LastBranchMSR
Definition: ketypes.h:370
USHORT Fill1[2]
Definition: ketypes.h:392
UINT64 Dr6
Definition: ketypes.h:355
UCHAR FaultIndicator
Definition: ketypes.h:324
UINT64 Rdi
Definition: ketypes.h:379
M128A Xmm5
Definition: ketypes.h:344
CHAR PreviousMode
Definition: ketypes.h:322
UCHAR Fill0
Definition: ketypes.h:390
UINT64 GsBase
Definition: ketypes.h:336
UINT64 P5
Definition: ketypes.h:321
LONG CodePatchCycle
Definition: ketypes.h:398
UINT64 Rbp
Definition: ketypes.h:381
UINT64 LastBranchFromRip
Definition: ketypes.h:363
UINT64 Rsi
Definition: ketypes.h:380
UINT64 P2Home
Definition: ketypes.h:318
UINT64 Rdx
Definition: ketypes.h:329
ULONG EFlags
Definition: ketypes.h:393
M128A Xmm3
Definition: ketypes.h:342
UINT64 P4Home
Definition: ketypes.h:320
UINT64 Dr0
Definition: ketypes.h:351
UINT64 LastBranchControl
Definition: ketypes.h:369
M128A Xmm4
Definition: ketypes.h:343
UINT64 Rbx
Definition: ketypes.h:378
M128A Xmm0
Definition: ketypes.h:339
UINT64 Dr7
Definition: ketypes.h:356
UINT64 FaultAddress
Definition: ketypes.h:347
USHORT SegSs
Definition: ketypes.h:396
UINT64 LastExceptionFromRip
Definition: ketypes.h:365
UINT64 Dr1
Definition: ketypes.h:352
UINT64 ExceptionFrame
Definition: ketypes.h:385
USHORT Fill3
Definition: ketypes.h:397
USHORT SegCs
Definition: ketypes.h:389
UINT64 Rax
Definition: ketypes.h:327
UCHAR PreviousIrql
Definition: ketypes.h:323
UINT64 GsSwap
Definition: ketypes.h:337
UINT64 Dr3
Definition: ketypes.h:354
ULONG Fill2
Definition: ketypes.h:394
UINT64 LastBranchToRip
Definition: ketypes.h:362
UINT64 P3Home
Definition: ketypes.h:319
UINT64 R10
Definition: ketypes.h:332
UINT64 Rip
Definition: ketypes.h:388
UINT64 P1Home
Definition: ketypes.h:317
UINT64 TrapFrame
Definition: ketypes.h:377
USHORT SegEs
Definition: ketypes.h:374
UINT64 ContextRecord
Definition: ketypes.h:348
UCHAR ExceptionActive
Definition: ketypes.h:325
M128A Xmm2
Definition: ketypes.h:341
USHORT SegFs
Definition: ketypes.h:375
UINT64 TimeStampCKCL
Definition: ketypes.h:349
UINT64 ErrorCode
Definition: ketypes.h:384
USHORT SegGs
Definition: ketypes.h:376
UINT64 Dr2
Definition: ketypes.h:353
UINT64 R9
Definition: ketypes.h:331
USHORT SegDs
Definition: ketypes.h:373
UINT64 TimeStampKlog
Definition: ketypes.h:386
ULONG MxCsr
Definition: ketypes.h:326
UINT64 R8
Definition: ketypes.h:330
UINT64 Rcx
Definition: ketypes.h:328
UINT64 DebugControl
Definition: ketypes.h:361
UINT64 R11
Definition: ketypes.h:333
UINT64 LastExceptionToRip
Definition: ketypes.h:364
UINT64 Ist[8]
Definition: ketypes.h:923
USHORT IoMapBase
Definition: ketypes.h:926
USHORT Reserved2
Definition: ketypes.h:925
UINT64 Rsp1
Definition: ketypes.h:921
UINT64 Rsp2
Definition: ketypes.h:922
ULONG Reserved0
Definition: ketypes.h:919
UINT64 Reserved1
Definition: ketypes.h:924
UINT64 Rsp0
Definition: ketypes.h:920
MACHINE_FRAME MachineFrame
Definition: ketypes.h:1019
EXCEPTION_RECORD ExceptionRecord
Definition: ketypes.h:1017
UCHAR DirectionMap[32]
Definition: ketypes.h:911
UCHAR IoMap[8196]
Definition: ketypes.h:912
Definition: typedefs.h:120
USHORT SegSs
Definition: ketypes.h:986
ULONG Fill2
Definition: ketypes.h:984
USHORT Fill1[3]
Definition: ketypes.h:982
ULONG EFlags
Definition: ketypes.h:983
ULONG64 Rsp
Definition: ketypes.h:985
USHORT Fill3[3]
Definition: ketypes.h:987
ULONG64 Rip
Definition: ketypes.h:980
USHORT SegCs
Definition: ketypes.h:981
INT64 RequestSummary
Definition: ketypes.h:555
KREQUEST_PACKET RequestPacket
Definition: ketypes.h:556
PVOID Virtual[7]
Definition: ketypes.h:557
Definition: ntbasedef.h:628
MACHINE_FRAME MachineFrame
Definition: ketypes.h:1007
ULONG ApiNumber
Definition: ketypes.h:1006
ULONG64 P1Home
Definition: ketypes.h:1000
ULONG64 P3Home
Definition: ketypes.h:1002
ULONG64 P2Home
Definition: ketypes.h:1001
ULONG64 P4Home
Definition: ketypes.h:1003
#define FIELD_OFFSET(t, f)
Definition: typedefs.h:255
uint32_t ULONG
Definition: typedefs.h:59
ULONG Ebx
Definition: ketypes.h:306
ULONG Eax
Definition: ketypes.h:305
UINT32 AsUINT32[4]
Definition: ketypes.h:302
ULONG Ecx
Definition: ketypes.h:307
ULONG Edx
Definition: ketypes.h:308
ULONG MustBeZero
Definition: ketypes.h:442
ULONG BaseUpper
Definition: ketypes.h:441
struct _KGDTENTRY64::@2289::@2291::@2294 Bits
ULONG Type
Definition: ketypes.h:430
USHORT LimitLow
Definition: ketypes.h:416
ULONG LongMode
Definition: ketypes.h:435
UCHAR Flags1
Definition: ketypes.h:423
ULONG BaseMiddle
Definition: ketypes.h:429
struct _KGDTENTRY64::@2289::@2291::@2293 Bytes
UCHAR BaseMiddle
Definition: ketypes.h:422
ULONG System
Definition: ketypes.h:434
ULONG BaseHigh
Definition: ketypes.h:438
UCHAR Flags2
Definition: ketypes.h:424
ULONG LimitHigh
Definition: ketypes.h:433
USHORT BaseLow
Definition: ketypes.h:417
UCHAR BaseHigh
Definition: ketypes.h:425
ULONG Dpl
Definition: ketypes.h:431
ULONG Granularity
Definition: ketypes.h:437
ULONG Present
Definition: ketypes.h:432
UINT64 Alignment
Definition: ketypes.h:444
ULONG DefaultBig
Definition: ketypes.h:436
ULONG OffsetHigh
Definition: ketypes.h:483
USHORT Reserved0
Definition: ketypes.h:478
USHORT IstIndex
Definition: ketypes.h:477
USHORT OffsetMiddle
Definition: ketypes.h:482
USHORT OffsetLow
Definition: ketypes.h:475
UINT64 Alignment
Definition: ketypes.h:486
ULONG Reserved1
Definition: ketypes.h:484
USHORT Dpl
Definition: ketypes.h:480
USHORT Present
Definition: ketypes.h:481
USHORT Selector
Definition: ketypes.h:476
USHORT Type
Definition: ketypes.h:479
#define FORCEINLINE
Definition: wdftypes.h:67
M128A
Definition: ketypes.h:925
@ LockQueueMaximumLock
Definition: ketypes.h:664
unsigned char UCHAR
Definition: xmlstorage.h:181
char CHAR
Definition: xmlstorage.h:175