ReactOS 0.4.15-dev-6712-g46b4b55
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
8
9Abstract:
10
11 Type definitions for the Kernel services.
12
13Author:
14
15 Alex Ionescu (alexi@tinykrnl.org) - Updated - 27-Feb-2006
16
17--*/
18
19#ifndef _KETYPES_H
20#define _KETYPES_H
21
22//
23// Dependencies
24//
25#include <umtypes.h>
26#ifndef NTOS_MODE_USER
27#include <haltypes.h>
28#include <potypes.h>
29#include <ifssupp.h>
30#endif
31
32//
33// A system call ID is formatted as such:
34// .________________________________________________________________.
35// | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
36// |--------------|-------------------------------------------------|
37// | TABLE NUMBER | TABLE OFFSET |
38// \----------------------------------------------------------------/
39//
40// The table number is then used as an index into the service descriptor table.
41#define TABLE_NUMBER_BITS 1
42#define TABLE_OFFSET_BITS 12
43
44//
45// There are 2 tables (kernel and shadow, used by Win32K)
46//
47#define NUMBER_SERVICE_TABLES 2
48#define NTOS_SERVICE_INDEX 0
49#define WIN32K_SERVICE_INDEX 1
50
51//
52// NB. From assembly code, the table number must be computed as an offset into
53// the service descriptor table.
54//
55// Each entry into the table is 16 bytes long on 32-bit architectures, and
56// 32 bytes long on 64-bit architectures.
57//
58// Thus, Table Number 1 is offset 16 (0x10) on x86, and offset 32 (0x20) on
59// x64.
60//
61#ifdef _WIN64
62#define BITS_PER_ENTRY 5 // (1 << 5) = 32 bytes
63#else
64#define BITS_PER_ENTRY 4 // (1 << 4) = 16 bytes
65#endif
66
67//
68// We want the table number, but leave some extra bits to we can have the offset
69// into the descriptor table.
70//
71#define SERVICE_TABLE_SHIFT (12 - BITS_PER_ENTRY)
72
73//
74// Now the table number (as an offset) is corrupted with part of the table offset
75// This mask will remove the extra unwanted bits, and give us the offset into the
76// descriptor table proper.
77//
78#define SERVICE_TABLE_MASK (((1 << TABLE_NUMBER_BITS) - 1) << BITS_PER_ENTRY)
79
80//
81// To get the table offset (ie: the service call number), just keep the 12 bits
82//
83#define SERVICE_NUMBER_MASK ((1 << TABLE_OFFSET_BITS) - 1)
84
85//
86// We'll often need to check if this is a graphics call. This is done by comparing
87// the table number offset with the known Win32K table number offset.
88// This is usually index 1, so table number offset 0x10 (x86) or 0x20 (x64)
89//
90#define SERVICE_TABLE_TEST (WIN32K_SERVICE_INDEX << BITS_PER_ENTRY)
91
92//
93// Context Record Flags
94//
95#define CONTEXT_DEBUGGER (CONTEXT_FULL | CONTEXT_FLOATING_POINT)
96
97//
98// Maximum System Descriptor Table Entries
99//
100#define SSDT_MAX_ENTRIES 2
101
102//
103// Processor Architectures
104//
105#define PROCESSOR_ARCHITECTURE_INTEL 0
106#define PROCESSOR_ARCHITECTURE_MIPS 1
107#define PROCESSOR_ARCHITECTURE_ALPHA 2
108#define PROCESSOR_ARCHITECTURE_PPC 3
109#define PROCESSOR_ARCHITECTURE_SHX 4
110#define PROCESSOR_ARCHITECTURE_ARM 5
111#define PROCESSOR_ARCHITECTURE_IA64 6
112#define PROCESSOR_ARCHITECTURE_ALPHA64 7
113#define PROCESSOR_ARCHITECTURE_MSIL 8
114#define PROCESSOR_ARCHITECTURE_AMD64 9
115#define PROCESSOR_ARCHITECTURE_UNKNOWN 0xFFFF
116
117//
118// Object Type Mask for Kernel Dispatcher Objects
119//
120#define KOBJECT_TYPE_MASK 0x7F
121#define KOBJECT_LOCK_BIT 0x80
122
123//
124// Dispatcher Priority increments
125//
126#define THREAD_ALERT_INCREMENT 2
127
128//
129// Physical memory offset of KUSER_SHARED_DATA
130//
131#define KI_USER_SHARED_DATA_PHYSICAL 0x41000
132
133//
134// Quantum values and decrements
135//
136#define MAX_QUANTUM 0x7F
137#define WAIT_QUANTUM_DECREMENT 1
138#define CLOCK_QUANTUM_DECREMENT 3
139
140//
141// Internal Exception Codes
142//
143#define KI_EXCEPTION_INTERNAL 0x10000000
144#define KI_EXCEPTION_ACCESS_VIOLATION (KI_EXCEPTION_INTERNAL | 0x04)
145
146typedef struct _FIBER /* Field offsets: */
147{ /* i386 arm x64 */
148 PVOID FiberData; /* 0x000 0x000 0x000 */
149 struct _EXCEPTION_REGISTRATION_RECORD *ExceptionList;/* 0x004 0x004 0x008 */
150 PVOID StackBase; /* 0x008 0x008 0x010 */
151 PVOID StackLimit; /* 0x00C 0x00C 0x018 */
152 PVOID DeallocationStack; /* 0x010 0x010 0x020 */
153 CONTEXT FiberContext; /* 0x014 0x018 0x030 */
154#if (NTDDI_VERSION >= NTDDI_LONGHORN)
155 PVOID Wx86Tib; /* 0x2E0 0x1b8 0x500 */
157 PVOID FlsData; /* 0x2E8 0x1c0 0x510 */
158 ULONG GuaranteedStackBytes; /* 0x2EC 0x1c4 0x518 */
159 ULONG TebFlags; /* 0x2F0 0x1c8 0x51C */
160#else
161 ULONG GuaranteedStackBytes; /* 0x2E0 */
162 PVOID FlsData; /* 0x2E4 */
164#endif
166
167#ifndef NTOS_MODE_USER
168//
169// Number of dispatch codes supported by KINTERRUPT
170//
171#ifdef _M_AMD64
172#define DISPATCH_LENGTH 4
173#elif (NTDDI_VERSION >= NTDDI_LONGHORN)
174#define DISPATCH_LENGTH 135
175#else
176#define DISPATCH_LENGTH 106
177#endif
178
179#else // NTOS_MODE_USER
180
181//
182// KPROCESSOR_MODE Type
183//
184typedef CCHAR KPROCESSOR_MODE;
185
186//
187// Dereferencable pointer to KUSER_SHARED_DATA in User-Mode
188//
189#define SharedUserData ((KUSER_SHARED_DATA *)USER_SHARED_DATA)
190
191#ifdef _X86_
192/* Macros for user-mode run-time checks of X86 system architecture */
193
194#ifndef IsNEC_98
195#define IsNEC_98 (SharedUserData->AlternativeArchitecture == NEC98x86)
196#endif
197
198#ifndef IsNotNEC_98
199#define IsNotNEC_98 (SharedUserData->AlternativeArchitecture != NEC98x86)
200#endif
201
202/* User-mode cannot override the architecture */
203#ifndef SetNEC_98
204#define SetNEC_98
205#endif
206
207/* User-mode cannot override the architecture */
208#ifndef SetNotNEC_98
209#define SetNotNEC_98
210#endif
211
212#else // !_X86_
213/* Correctly define these run-time definitions for non X86 machines */
214
215#ifndef IsNEC_98
216#define IsNEC_98 (FALSE)
217#endif
218
219#ifndef IsNotNEC_98
220#define IsNotNEC_98 (TRUE)
221#endif
222
223#ifndef SetNEC_98
224#define SetNEC_98
225#endif
226
227#ifndef SetNotNEC_98
228#define SetNotNEC_98
229#endif
230
231#endif // _X86_
232
233//
234// Maximum WOW64 Entries in KUSER_SHARED_DATA
235//
236#define MAX_WOW64_SHARED_ENTRIES 16
237
238//
239// Maximum Processor Features supported in KUSER_SHARED_DATA
240//
241#define PROCESSOR_FEATURE_MAX 64
242
243//
244// Event Types
245//
246typedef enum _EVENT_TYPE
247{
250} EVENT_TYPE;
251
252//
253// Timer Types
254//
255typedef enum _TIMER_TYPE
256{
259} TIMER_TYPE;
260
261//
262// Wait Types
263//
264typedef enum _WAIT_TYPE
265{
266 WaitAll,
267 WaitAny
268} WAIT_TYPE;
269
270//
271// Processor Execution Modes
272//
273typedef enum _MODE
274{
276 UserMode,
278} MODE;
279
280//
281// Wait Reasons
282//
283typedef enum _KWAIT_REASON
284{
285 Executive,
286 FreePage,
287 PageIn,
290 Suspended,
294 WrPageIn,
300 WrQueue,
304 WrPageOut,
306 Spare2,
308 Spare4,
309 Spare5,
310 Spare6,
311 WrKernel,
314 WrMutex,
321
322//
323// Profiling Sources
324//
325typedef enum _KPROFILE_SOURCE
326{
353
354//
355// NT Product and Architecture Types
356//
357typedef enum _NT_PRODUCT_TYPE
358{
359 NtProductWinNt = 1,
363
365{
367 NEC98x86,
370
371//
372// Flags for NXSupportPolicy
373//
374#if (NTDDI_VERSION >= NTDDI_WINXPSP2)
375#define NX_SUPPORT_POLICY_ALWAYSOFF 0
376#define NX_SUPPORT_POLICY_ALWAYSON 1
377#define NX_SUPPORT_POLICY_OPTIN 2
378#define NX_SUPPORT_POLICY_OPTOUT 3
379#endif
380
381#endif // NTOS_MODE_USER
382
383//
384// Thread States
385//
386typedef enum _KTHREAD_STATE
387{
396#if (NTDDI_VERSION >= NTDDI_WS03)
398#endif
400
401//
402// Kernel Object Types
403//
404typedef enum _KOBJECTS
405{
433
434//
435// Adjust reasons
436//
437typedef enum _ADJUST_REASON
438{
441 AdjustBoost = 2
443
444//
445// Continue Status
446//
448{
454
455//
456// Process States
457//
458typedef enum _KPROCESS_STATE
459{
466
467//
468// NtVdmControl Classes
469//
471{
488
489#ifdef NTOS_MODE_USER
490
491//
492// APC Normal Routine
493//
494typedef VOID
496 _In_ PVOID NormalContext,
499);
500
501//
502// Timer Routine
503//
504typedef VOID
507 _In_ ULONG TimerLowValue,
508 _In_ LONG TimerHighValue
509);
510
511//
512// System Time Structure
513//
514typedef struct _KSYSTEM_TIME
515{
520
521//
522// Shared Kernel User Data
523//
524typedef struct _KUSER_SHARED_DATA
525{
529 volatile KSYSTEM_TIME SystemTime;
530 volatile KSYSTEM_TIME TimeZoneBias;
533 WCHAR NtSystemRoot[260];
538 ULONG Reserved2[7];
546 volatile ULONG TimeSlip;
551#if (NTDDI_VERSION >= NTDDI_WINXPSP2)
553#endif
554 volatile ULONG ActiveConsoleId;
555 volatile ULONG DismountCount;
560 ULONG TraceLogging;
561 ULONG Fill0;
566 union {
567 volatile KSYSTEM_TIME TickCount;
568 volatile ULONG64 TickCountQuad;
569 };
571#if (NTDDI_VERSION >= NTDDI_WS03)
574#endif
575#if (NTDDI_VERSION >= NTDDI_LONGHORN)
577 ULONG HeapTracingPid[2];
578 ULONG CritSecTracingPid[2];
579 union
580 {
582 struct
583 {
588 ULONG SpareBits:28;
589 };
590 };
592 KAFFINITY ActiveProcessorAffinity;
593#endif
595
596//
597// VDM Structures
598//
599#include "pshpack1.h"
600typedef struct _VdmVirtualIca
601{
602 LONG ica_count[8];
603 LONG ica_int_line;
604 LONG ica_cpu_int;
605 USHORT ica_base;
606 USHORT ica_hipiri;
607 USHORT ica_mode;
608 UCHAR ica_master;
609 UCHAR ica_irr;
610 UCHAR ica_isr;
611 UCHAR ica_imr;
612 UCHAR ica_ssr;
613} VDMVIRTUALICA, *PVDMVIRTUALICA;
614#include "poppack.h"
615
616typedef struct _VdmIcaUserData
617{
618 PVOID pIcaLock;
619 PVDMVIRTUALICA pIcaMaster;
620 PVDMVIRTUALICA pIcaSlave;
621 PULONG pDelayIrq;
622 PULONG pUndelayIrq;
623 PULONG pDelayIret;
624 PULONG pIretHooked;
625 PULONG pAddrIretBopTable;
626 PHANDLE phWowIdleEvent;
627 PLARGE_INTEGER pIcaTimeout;
628 PHANDLE phMainThreadSuspended;
629} VDMICAUSERDATA, *PVDMICAUSERDATA;
630
631typedef struct _VDM_INITIALIZE_DATA
632{
633 PVOID TrapcHandler;
634 PVDMICAUSERDATA IcaUserData;
635} VDM_INITIALIZE_DATA, *PVDM_INITIALIZE_DATA;
636
637#else
638
639//
640// System Thread Start Routine
641//
642typedef
646 PVOID StartContext
647);
648
649#ifndef _NTSYSTEM_
650typedef VOID
652 IN PVOID NormalContext OPTIONAL,
655
656typedef VOID
658 IN struct _KAPC *Apc);
659
660typedef VOID
662 IN struct _KAPC *Apc,
663 IN OUT PKNORMAL_ROUTINE *NormalRoutine OPTIONAL,
667#endif
668
669//
670// APC Environment Types
671//
673{
679
681{
682#if (NTDDI_VERSION >= NTDDI_LONGHORN) || defined(_M_ARM) || defined(_M_AMD64)
684#endif
688
689typedef struct _KTIMER_TABLE
690{
694
695typedef struct _KDPC_LIST
696{
700
701typedef struct _SYNCH_COUNTERS
702{
750
751//
752// PRCB DPC Data
753//
754typedef struct _KDPC_DATA
755{
756#if (NTDDI_VERSION >= NTDDI_LONGHORN)
758#else
759 LIST_ENTRY DpcListHead;
760#endif
762#if defined(_M_AMD64) || defined(_M_ARM)
763 volatile LONG DpcQueueDepth;
764#else
766#endif
768#if (NTDDI_VERSION >= NTDDI_LONGHORN) || defined(_M_ARM)
770#endif
772
773//
774// Per-Processor Lookaside List
775//
776typedef struct _PP_LOOKASIDE_LIST
777{
781
782//
783// Architectural Types
784//
785#include <arch/ketypes.h>
786
787//
788// Kernel Memory Node
789//
790typedef struct _KNODE
791{
798 struct _flags {
806
807//
808// Structure for Get/SetContext APC
809//
810typedef struct _GETSETCONTEXT
811{
817
818//
819// Kernel Profile Object
820//
821typedef struct _KPROFILE
822{
836
837//
838// Kernel Interrupt Object
839//
840typedef struct _KINTERRUPT
841{
846#if (NTDDI_VERSION >= NTDDI_LONGHORN)
849#endif
863#if (NTDDI_VERSION >= NTDDI_LONGHORN)
865#endif
868#if (NTDDI_VERSION >= NTDDI_LONGHORN)
870#endif
871#ifdef _M_AMD64
872 PKTRAP_FRAME TrapFrame;
874#endif
877
878//
879// Kernel Event Pair Object
880//
881typedef struct _KEVENT_PAIR
882{
888
889//
890// Kernel No Execute Options
891//
892typedef struct _KEXECUTE_OPTIONS
893{
902
903#if (NTDDI_VERSION >= NTDDI_WIN7)
905{
907 struct
908 {
916 };
918
919typedef struct _COUNTER_READING
920{
926
927typedef struct _KTHREAD_COUNTERS
928{
930 struct _THREAD_PERFORMANCE_DATA* UserData;
937#endif
938
940#if (NTDDI_VERSION >= NTDDI_WIN8)
941typedef struct _RTL_RB_TREE
942{
946#endif
947
948#if (NTDDI_VERSION >= NTDDI_WINBLUE)
950{
951 union
952 {
953 struct
954 {
955#if (NTDDI_VERSION >= NTDDI_WIN10) // since 6.4.9841.0
957#else
958 ULONG_PTR Waiting : 1;
959#endif
961 ULONG_PTR Reserved : (8 * sizeof(PVOID)) - 3; // previously Spare
963 };
965 };
966 union
967 {
969 struct
970 {
972#ifdef _WIN64
973 ULONG SessionPad;
974#endif
975 };
976 };
978
979typedef struct _KLOCK_ENTRY
980{
981 union
982 {
985 };
986#if (NTDDI_VERSION >= NTDDI_WIN10)
987 union
988 {
990 struct
991 {
993 union
994 {
996 struct
997 {
1000 };
1001 };
1002 union
1003 {
1006 };
1007 union
1008 {
1010 struct
1011 {
1014 UCHAR IoQoSWaiter : 1; // since TH2
1016 };
1017 };
1018 };
1019 struct
1020 {
1023 };
1024 };
1025#ifdef _WIN64
1026 ULONG SpareFlags;
1027#endif
1028#else
1029 union
1030 {
1031 PVOID ThreadUnsafe;
1032 struct
1033 {
1034 volatile UCHAR HeadNodeByte;
1035 UCHAR Reserved1[2];
1036 volatile UCHAR AcquiredByte;
1037 };
1038 };
1039#endif
1040
1041 union
1042 {
1045 struct
1046 {
1047#if (NTDDI_VERSION >= NTDDI_WIN10)
1049#else
1050 volatile UCHAR WaitingAndBusyByte;
1051#endif
1052 UCHAR Reserved[sizeof(PVOID) - 2];
1054 union
1055 {
1057 struct
1058 {
1060#ifdef _WIN64
1061 ULONG SessionPad;
1062#endif
1063 };
1064 };
1065 };
1066 };
1067 union
1068 {
1069 struct
1070 {
1073 };
1075 };
1077 union
1078 {
1079#if _WIN64
1080 ULONG AllBoosts : 17;
1081#else
1083#endif
1084 struct
1085 {
1086 struct
1087 {
1090 };
1091 struct
1092 {
1096 };
1097 };
1098 };
1099#if _WIN64
1100 ULONG SparePad;
1101#endif
1103
1104#endif
1105
1106//
1107// Kernel Thread (KTHREAD)
1108//
1109#if (NTDDI_VERSION < NTDDI_WIN8)
1110
1111typedef struct _KTHREAD
1112{
1114#if (NTDDI_VERSION >= NTDDI_LONGHORN) // [
1116#ifndef _WIN64 // [
1118#endif // ]
1120#else // ][
1122#endif // ]
1124 ULONG_PTR StackLimit; // FIXME: PVOID
1127#if (NTDDI_VERSION >= NTDDI_WIN7) // [
1130 BOOLEAN Alerted[2];
1131 union
1132 {
1133 struct
1134 {
1135 ULONG KernelStackResident:1;
1138 ULONG WaitNext:1;
1140 ULONG Alertable:1;
1141 ULONG GdiFlushActive:1;
1148 ULONG Reserved:19;
1149 };
1151 };
1152#endif // ]
1153 union
1154 {
1156 struct
1157 {
1158 UCHAR ApcStateFill[FIELD_OFFSET(KAPC_STATE, UserApcPending) + 1];
1159#if (NTDDI_VERSION >= NTDDI_LONGHORN) // [
1161#if (NTDDI_VERSION >= NTDDI_WIN7) // [
1162 /* On x86, the following members "fall out" of the union */
1163 volatile ULONG NextProcessor;
1164 volatile ULONG DeferredProcessor;
1165#else // ][
1166 /* On x86, the following members "fall out" of the union */
1167 volatile USHORT NextProcessor;
1168 volatile USHORT DeferredProcessor;
1169#endif // ]
1170#else // ][
1172 /* On x86, the following members "fall out" of the union */
1173 volatile UCHAR NextProcessor;
1174 volatile UCHAR DeferredProcessor;
1177#endif // ]
1178 };
1179 };
1180 KSPIN_LOCK ApcQueueLock;
1181#if !defined(_M_AMD64) && !defined(_M_ARM64) // [
1183 volatile UCHAR State;
1187#endif // ]
1189#if (NTDDI_VERSION >= NTDDI_WIN7) // [
1191#else // ][
1192 union
1193 {
1196 };
1197#if (NTDDI_VERSION >= NTDDI_LONGHORN) // [
1198 union
1199 {
1200 struct
1201 {
1202 ULONG KernelStackResident:1;
1205 ULONG WaitNext:1;
1207 ULONG Alertable:1;
1208 ULONG GdiFlushActive:1;
1209 ULONG Reserved:25;
1210 };
1212 };
1213#else // ][
1216#endif // ]
1218#if (NTDDI_VERSION < NTDDI_LONGHORN)
1221#endif // ]
1222 volatile UCHAR SwapBusy;
1224#endif // ]
1225 union
1226 {
1229 };
1230 PKQUEUE Queue;
1231#if !defined(_M_AMD64) && !defined(_M_ARM64) // [
1233 union
1234 {
1235 struct
1236 {
1239 };
1241 };
1242#endif // ]
1243 struct _TEB *Teb;
1244
1245#if (NTDDI_VERSION >= NTDDI_WIN7) // [
1246 KTIMER Timer;
1247#else // ][
1248 union
1249 {
1250 KTIMER Timer;
1251 struct
1252 {
1253 UCHAR TimerFill[FIELD_OFFSET(KTIMER, Period) + sizeof(LONG)];
1254#if !defined(_WIN64) // [
1255 };
1256 };
1257#endif // ]
1258#endif // ]
1259 union
1260 {
1261 struct
1262 {
1265#if (NTDDI_VERSION >= NTDDI_LONGHORN) // [
1266 ULONG EtwStackTraceApc1Inserted:1;
1267 ULONG EtwStackTraceApc2Inserted:1;
1268 ULONG CycleChargePending:1;
1272 ULONG GuiThread:1;
1273 ULONG ReservedFlags:23;
1274#else // ][
1275 LONG ReservedFlags:30;
1276#endif // ]
1277 };
1279 };
1280#if defined(_WIN64) && (NTDDI_VERSION < NTDDI_WIN7) // [
1281 };
1282 };
1283#endif // ]
1284#if (NTDDI_VERSION >= NTDDI_WIN7) // [
1285#if defined(_WIN64) // [
1286 ULONG Spare0;
1287#else // ][
1289#endif // ]
1290#endif // ]
1291 union
1292 {
1294#if (NTDDI_VERSION < NTDDI_WIN7) // [
1295 struct
1296 {
1297 UCHAR WaitBlockFill0[FIELD_OFFSET(KWAIT_BLOCK, SpareByte)]; // 32bit = 23, 64bit = 43
1298#if (NTDDI_VERSION >= NTDDI_LONGHORN) // [
1299 UCHAR IdealProcessor;
1300#else // ][
1301 BOOLEAN SystemAffinityActive;
1302#endif // ]
1303 };
1304 struct
1305 {
1306 UCHAR WaitBlockFill1[1 * sizeof(KWAIT_BLOCK) + FIELD_OFFSET(KWAIT_BLOCK, SpareByte)]; // 47 / 91
1308 };
1309 struct
1310 {
1311 UCHAR WaitBlockFill2[2 * sizeof(KWAIT_BLOCK) + FIELD_OFFSET(KWAIT_BLOCK, SpareByte)]; // 71 / 139
1312 UCHAR ResourceIndex;
1313 };
1314 struct
1315 {
1316 UCHAR WaitBlockFill3[3 * sizeof(KWAIT_BLOCK) + FIELD_OFFSET(KWAIT_BLOCK, SpareByte)]; // 95 / 187
1317 UCHAR LargeStack;
1318 };
1319#endif // ]
1320#ifdef _WIN64 // [
1321 struct
1322 {
1323 UCHAR WaitBlockFill4[FIELD_OFFSET(KWAIT_BLOCK, SpareLong)];
1324 ULONG ContextSwitches;
1325 };
1326 struct
1327 {
1328 UCHAR WaitBlockFill5[1 * sizeof(KWAIT_BLOCK) + FIELD_OFFSET(KWAIT_BLOCK, SpareLong)];
1329 UCHAR State;
1330 UCHAR NpxState;
1331 UCHAR WaitIrql;
1332 CHAR WaitMode;
1333 };
1334 struct
1335 {
1336 UCHAR WaitBlockFill6[2 * sizeof(KWAIT_BLOCK) + FIELD_OFFSET(KWAIT_BLOCK, SpareLong)];
1337 ULONG WaitTime;
1338 };
1339#if (NTDDI_VERSION >= NTDDI_WIN7) // [
1340 struct
1341 {
1342 UCHAR WaitBlockFill7[168];
1343 PVOID TebMappedLowVa;
1344 struct _UMS_CONTROL_BLOCK* Ucb;
1345 };
1346#endif // ]
1347 struct
1348 {
1349#if (NTDDI_VERSION >= NTDDI_WIN7) // [
1350 UCHAR WaitBlockFill8[188];
1351#else // ][
1352 UCHAR WaitBlockFill7[3 * sizeof(KWAIT_BLOCK) + FIELD_OFFSET(KWAIT_BLOCK, SpareLong)];
1353#endif // ]
1354 union
1355 {
1356 struct
1357 {
1358 SHORT KernelApcDisable;
1359 SHORT SpecialApcDisable;
1360 };
1361 ULONG CombinedApcDisable;
1362 };
1363 };
1364#endif // ]
1365 };
1366 LIST_ENTRY QueueListEntry;
1367 PKTRAP_FRAME TrapFrame;
1368#if (NTDDI_VERSION >= NTDDI_LONGHORN) // [
1369 PVOID FirstArgument;
1370 union
1371 {
1372 PVOID CallbackStack;
1373 ULONG_PTR CallbackDepth;
1374 };
1375#else // ][
1376 PVOID CallbackStack;
1377#endif // ]
1378#if (NTDDI_VERSION < NTDDI_LONGHORN) || ((NTDDI_VERSION < NTDDI_WIN7) && !defined(_WIN64)) // [
1380#endif // ]
1381#if (NTDDI_VERSION < NTDDI_LONGHORN) && defined(_WIN64) // [
1382 ULONG KernelLimit;
1383#endif // ]
1384 UCHAR ApcStateIndex;
1385#if (NTDDI_VERSION < NTDDI_LONGHORN) // [
1386 UCHAR IdealProcessor;
1387 BOOLEAN Preempted;
1388 BOOLEAN ProcessReadyQueue;
1389#ifdef _WIN64 // [
1390 PVOID Win32kTable;
1391 ULONG Win32kLimit;
1392#endif // ]
1393 BOOLEAN KernelStackResident;
1394#endif // ]
1395 SCHAR BasePriority;
1396 SCHAR PriorityDecrement;
1397#if (NTDDI_VERSION >= NTDDI_LONGHORN) // [
1398 BOOLEAN Preempted;
1399 UCHAR AdjustReason;
1400 CHAR AdjustIncrement;
1401#if (NTDDI_VERSION >= NTDDI_WIN7)
1403#else
1404 UCHAR Spare01;
1405#endif
1406#endif // ]
1407 CHAR Saturation;
1408#if (NTDDI_VERSION >= NTDDI_LONGHORN) // [
1409 ULONG SystemCallNumber;
1410#if (NTDDI_VERSION >= NTDDI_WIN7) // [
1411 ULONG FreezeCount;
1412#else // ][
1413 ULONG Spare02;
1414#endif // ]
1415#endif // ]
1416#if (NTDDI_VERSION >= NTDDI_WIN7) // [
1417 GROUP_AFFINITY UserAffinity;
1418 struct _KPROCESS *Process;
1420 ULONG IdealProcessor;
1421 ULONG UserIdealProcessor;
1422#else // ][
1423 KAFFINITY UserAffinity;
1424 struct _KPROCESS *Process;
1426#endif // ]
1427 PKAPC_STATE ApcStatePointer[2];
1428 union
1429 {
1430 KAPC_STATE SavedApcState;
1431 struct
1432 {
1433 UCHAR SavedApcStateFill[FIELD_OFFSET(KAPC_STATE, UserApcPending) + 1];
1434#if (NTDDI_VERSION >= NTDDI_WIN7) // [
1435 UCHAR WaitReason;
1436#else // ][
1437 CCHAR FreezeCount;
1438#endif // ]
1439#ifndef _WIN64 // [
1440 };
1441 };
1442#endif // ]
1443 CCHAR SuspendCount;
1444#if (NTDDI_VERSION >= NTDDI_WIN7) // [
1445 CCHAR Spare1;
1446#else // ][
1447 UCHAR UserIdealProcessor;
1448#endif // ]
1449#if (NTDDI_VERSION >= NTDDI_WIN7) // [
1450#elif (NTDDI_VERSION >= NTDDI_LONGHORN) // ][
1451 UCHAR Spare03;
1452#else // ][
1453 UCHAR CalloutActive;
1454#endif // ]
1455#ifdef _WIN64 // [
1456 UCHAR CodePatchInProgress;
1457 };
1458 };
1459#endif // ]
1460#if defined(_M_IX86) // [
1461#if (NTDDI_VERSION >= NTDDI_LONGHORN) // [
1462 UCHAR OtherPlatformFill;
1463#else // ][
1464 UCHAR Iopl;
1465#endif // ]
1466#endif // ]
1467 PVOID Win32Thread;
1468 PVOID StackBase;
1469 union
1470 {
1471 KAPC SuspendApc;
1472 struct
1473 {
1474 UCHAR SuspendApcFill0[1];
1475#if (NTDDI_VERSION >= NTDDI_WIN7) // [
1476 UCHAR ResourceIndex;
1477#elif (NTDDI_VERSION >= NTDDI_LONGHORN) // ][
1478 CHAR Spare04;
1479#else // ][
1480 SCHAR Quantum;
1481#endif // ]
1482 };
1483 struct
1484 {
1485 UCHAR SuspendApcFill1[3];
1487 };
1488 struct
1489 {
1490 UCHAR SuspendApcFill2[4];
1492 };
1493 struct
1494 {
1495 UCHAR SuspendApcFill3[FIELD_OFFSET(KAPC, SystemArgument1)];
1496#if (NTDDI_VERSION >= NTDDI_LONGHORN)
1497 PKPRCB WaitPrcb;
1498#else
1499 PVOID TlsArray;
1500#endif
1501 };
1502 struct
1503 {
1504 UCHAR SuspendApcFill4[FIELD_OFFSET(KAPC, SystemArgument2)]; // 40 / 72
1505 PVOID LegoData;
1506 };
1507 struct
1508 {
1509 UCHAR SuspendApcFill5[FIELD_OFFSET(KAPC, Inserted) + 1]; // 47 / 83
1510#if (NTDDI_VERSION >= NTDDI_WIN7) // [
1511 UCHAR LargeStack;
1512#else // ][
1514#endif // ]
1515#ifdef _WIN64 // [
1517#endif // ]
1518 };
1519 };
1520#ifndef _WIN64 // [
1522#endif // ]
1523 union
1524 {
1525 KSEMAPHORE SuspendSemaphore;
1526 struct
1527 {
1528 UCHAR SuspendSemaphorefill[FIELD_OFFSET(KSEMAPHORE, Limit) + 4]; // 20 / 28
1529#ifdef _WIN64 // [
1530 ULONG SListFaultCount;
1531#endif // ]
1532 };
1533 };
1534#ifndef _WIN64 // [
1535 ULONG SListFaultCount;
1536#endif // ]
1537 LIST_ENTRY ThreadListEntry;
1538#if (NTDDI_VERSION >= NTDDI_LONGHORN) // [
1539 LIST_ENTRY MutantListHead;
1540#endif // ]
1541 PVOID SListFaultAddress;
1542#ifdef _M_AMD64 // [
1543 LONG64 ReadOperationCount;
1544 LONG64 WriteOperationCount;
1545 LONG64 OtherOperationCount;
1546 LONG64 ReadTransferCount;
1547 LONG64 WriteTransferCount;
1548 LONG64 OtherTransferCount;
1549#endif // ]
1550#if (NTDDI_VERSION >= NTDDI_WIN7) // [
1551 PKTHREAD_COUNTERS ThreadCounters;
1552 PXSTATE_SAVE XStateSave;
1553#elif (NTDDI_VERSION >= NTDDI_LONGHORN) // ][
1554 PVOID MdlForLockedTeb;
1555#endif // ]
1556} KTHREAD;
1557
1558#else // not (NTDDI_VERSION < NTDDI_WIN8)
1559
1560#if defined(_WIN64) && (NTDDI_VERSION < 0x06032580) // since WIN 8.1 Update1 6.3.9600.16384
1561#define NUMBER_OF_LOCK_ENTRIES 5
1562#else
1563#define NUMBER_OF_LOCK_ENTRIES 6
1564#endif
1565
1566typedef struct _KTHREAD
1567{
1572 volatile VOID *StackLimit;
1576#ifndef _WIN64
1579#endif
1584 struct _KSCHEDULING_GROUP* SchedulingGroup;
1588
1589 union
1590 {
1591 struct
1592 {
1593#if (NTDDI_VERSION < NTDDI_WIN10)
1594 ULONG KernelStackResident : 1;
1595#else
1597#endif
1599#if (NTDDI_VERSION < NTDDI_WIN10TH2)
1601#endif
1606#if (NTDDI_VERSION < NTDDI_WIN81)
1607 ULONG CodePatchInProgress : 1;
1608#endif
1623 };
1625 };
1626
1627 union
1628 {
1629 struct
1630 {
1645#if (NTDDI_VERSION >= 0x060324D7) // since 6.3.9431.0
1646 ULONG TerminationApcRequest : 1;
1647#endif
1648#if (NTDDI_VERSION >= 0x06032580) // since 6.3.9600.16384
1649 ULONG AutoBoostEntriesExhausted : 1;
1650#endif
1651#if (NTDDI_VERSION >= 0x06032580) // since 6.3.9600.17031
1652 ULONG KernelStackResident : 1;
1653#endif
1654#if (NTDDI_VERSION >= NTDDI_WIN10)
1658#endif
1660#if (NTDDI_VERSION < NTDDI_WIN10)
1661 ULONG ReservedFlags : 10;
1662#endif
1663 };
1665 };
1666
1667#if (NTDDI_VERSION >= NTDDI_WIN10)
1668 volatile UCHAR Tag;
1673#else
1674 ULONG Spare0;
1675#endif
1677#ifdef _WIN64
1678 ULONG Spare1; // Win 10: Spare10
1679#endif
1682
1683 union
1684 {
1686 struct
1687 {
1688 UCHAR ApcStateFill[RTL_SIZEOF_THROUGH_FIELD(KAPC_STATE, UserApcPending)]; // 32bit: 23/0x17, 64bit: 43/0x2B
1691 };
1692 };
1693
1694#ifndef _WIN64
1696 volatile UCHAR State;
1697#if (NTDDI_VERSION >= NTDDI_WIN10) // since 10.0.10074.0
1699#else
1700 CHAR NpxState;
1701#endif
1704#endif
1705
1708 union
1709 {
1712 };
1715#if (NTDDI_VERSION >= NTDDI_WIN8 /* 0x060223F0 */) // since 6.2.9200.16384
1717#endif
1719
1720 union
1721 {
1723#ifdef _WIN64
1724 struct
1725 {
1726 UCHAR WaitBlockFill4[FIELD_OFFSET(KWAIT_BLOCK, SpareLong)]; // 32bit: -, 64bit: 20/0x14
1728 };
1729 struct
1730 {
1731 UCHAR WaitBlockFill5[1 * sizeof(KWAIT_BLOCK) + FIELD_OFFSET(KWAIT_BLOCK, SpareLong)]; // 32bit: -, 64bit: 68/0x44
1732 UCHAR State;
1733#if (NTDDI_VERSION >= NTDDI_WIN10)
1734 CHAR Spare13;
1735#else
1736 CHAR NpxState;
1737#endif
1739 CHAR WaitMode;
1740 };
1741 struct
1742 {
1743 UCHAR WaitBlockFill6[2 * sizeof(KWAIT_BLOCK) + FIELD_OFFSET(KWAIT_BLOCK, SpareLong)]; // 32bit: -, 64bit: 116/0x74
1745 };
1746 struct
1747 {
1748 UCHAR WaitBlockFill7[3 * sizeof(KWAIT_BLOCK) + FIELD_OFFSET(KWAIT_BLOCK, SpareLong)]; // 32bit: -, 64bit: 164/0xA4
1749 union
1750 {
1751 struct
1752 {
1755 };
1757 };
1758 };
1759#endif
1760 struct
1761 {
1762 UCHAR WaitBlockFill8[FIELD_OFFSET(KWAIT_BLOCK, SparePtr)]; // 32bit: 20/0x14, 64bit: 40/0x28
1764 };
1765 struct
1766 {
1767 UCHAR WaitBlockFill9[1 * sizeof(KWAIT_BLOCK) + FIELD_OFFSET(KWAIT_BLOCK, SparePtr)]; // 32bit: 44/0x2C, 64bit: 88/0x58
1769 };
1770 struct
1771 {
1772 UCHAR WaitBlockFill10[2 * sizeof(KWAIT_BLOCK) + FIELD_OFFSET(KWAIT_BLOCK, SparePtr)]; // 32bit: 68/0x44, 64bit: 136/0x88
1774 };
1775 struct
1776 {
1777 UCHAR WaitBlockFill11[3 * sizeof(KWAIT_BLOCK) + FIELD_OFFSET(KWAIT_BLOCK, Object)]; // 32bit: 88/0x58, 64bit: 176/0xB0
1778#ifdef _WIN64
1779 struct _UMS_CONTROL_BLOCK* Ucb;
1780 struct _KUMS_CONTEXT_HEADER* Uch;
1781#else
1783 union
1784 {
1785 struct
1786 {
1789 };
1791 };
1792#endif
1793 };
1794 };
1795
1796#ifdef _WIN64
1797 PVOID TebMappedLowVa;
1798#endif
1800#if (NTDDI_VERSION >= 0x060223F0) // since 6.2.9200.16384
1801 union
1802 {
1804 struct
1805 {
1806 ULONG NextProcessorNumber : 31;
1807 ULONG SharedReadyQueue : 1;
1808 };
1809 };
1810 LONG QueuePriority;
1811#else
1814#endif
1816
1817 union
1818 {
1820 struct
1821 {
1822 UCHAR UserAffinityFill[FIELD_OFFSET(GROUP_AFFINITY, Reserved)]; // 32bit: 6/0x6, 64bit: 10/0x0A
1825 union
1826 {
1828 struct
1829 {
1832 };
1833 };
1837 };
1838 };
1839
1840#if (NTDDI_VERSION >= NTDDI_WIN10) // since 10.0.10240.16384
1842#endif
1843 union
1844 {
1846 struct
1847 {
1848 UCHAR AffinityFill[FIELD_OFFSET(GROUP_AFFINITY, Reserved)]; // 32bit: 6/0x6, 64bit: 10/0x0A
1852 };
1853 };
1854
1855#if (NTDDI_VERSION >= NTDDI_WIN10) // since 10.0.10240.16384
1856#ifdef _WIN64
1858#else
1860#endif
1861#else
1862 PKAPC_STATE ApcStatePointer[2];
1863#endif
1864
1865 union
1866 {
1868 struct
1869 {
1870 UCHAR SavedApcStateFill[FIELD_OFFSET(KAPC_STATE, UserApcPending) + 1]; // 32bit: 23/0x17, 64bit: 43/0x2B
1875 };
1876 };
1877
1878 union
1879 {
1881 struct
1882 {
1883 UCHAR SchedulerApcFill0[FIELD_OFFSET(KAPC, SpareByte0)]; // 32bit: 1/0x01, 64bit: 1/0x01
1885 };
1886 struct
1887 {
1888 UCHAR SchedulerApcFill1[FIELD_OFFSET(KAPC, SpareByte1)]; // 32bit: 3/0x03, 64bit: 3/0x03
1890 };
1891 struct
1892 {
1893 UCHAR SchedulerApcFill2[FIELD_OFFSET(KAPC, SpareLong0)]; // 32bit: 4/0x04, 64bit: 4/0x04
1895 };
1896 struct
1897 {
1900 };
1901 struct
1902 {
1905 };
1906 struct
1907 {
1908 UCHAR SchedulerApcFill5[FIELD_OFFSET(KAPC, Inserted) + 1]; // 32 bit:, 64 bit: 83/0x53
1911 };
1912 };
1913
1917
1918#if (NTDDI_VERSION >= NTDDI_WIN10)
1922#if _WIN64
1923 ULONG SecureThreadCookie;
1924#endif
1925#elif (NTDDI_VERSION >= NTDDI_WINBLUE) // 6.3.9431.0
1926 SINGLE_LIST_ENTRY LockEntriesFreeList;
1927#endif
1928
1929#if (NTDDI_VERSION >= NTDDI_WINBLUE /* 0x06032580 */) // since 6.3.9600.16384
1936 #if (NTDDI_VERSION >= NTDDI_WIN10_RS1)
1938 #endif
1939
1940 #if (NTDDI_VERSION >= NTDDI_WIN10) // since 10.0.10240.16384
1942 #else
1943 volatile SHORT AbReferenceCount;
1944 #endif
1945 #if (NTDDI_VERSION >= 0x06040000) // since 6.4.9841.0
1946 UCHAR AbOrphanedEntrySummary;
1947 UCHAR AbOwnedEntryCount;
1948 #else
1951 #endif
1953 union
1954 {
1956 struct
1957 {
1960 };
1961 };
1962#endif
1963
1964#if _WIN64
1965 LONG64 ReadOperationCount;
1966 LONG64 WriteOperationCount;
1967 LONG64 OtherOperationCount;
1968 LONG64 ReadTransferCount;
1969 LONG64 WriteTransferCount;
1970 LONG64 OtherTransferCount;
1971#endif
1972#if (NTDDI_VERSION >= NTDDI_WIN10) // since 10.0.10041.0
1973 struct _KSCB *QueuedScb;
1974#ifndef _WIN64
1976#endif
1977#endif
1979
1980#endif
1981
1982
1983#define ASSERT_THREAD(object) \
1984 ASSERT((((object)->Header.Type & KOBJECT_TYPE_MASK) == ThreadObject))
1985
1986//
1987// Kernel Process (KPROCESS)
1988//
1989typedef struct _KPROCESS
1990{
1993#if (NTDDI_VERSION >= NTDDI_LONGHORN)
1996#else
1998#endif
1999#if defined(_M_IX86)
2000 KGDTENTRY LdtDescriptor;
2001 KIDTENTRY Int21Descriptor;
2002#endif
2004#if defined(_M_IX86)
2005 UCHAR Iopl;
2006 UCHAR Unused;
2007#endif
2017 union
2018 {
2019 struct
2020 {
2025 };
2027 };
2035 union
2036 {
2039 };
2042#if (NTDDI_VERSION >= NTDDI_LONGHORN) // [
2044#endif // ]
2046
2047#define ASSERT_PROCESS(object) \
2048 ASSERT((((object)->Header.Type & KOBJECT_TYPE_MASK) == ProcessObject))
2049
2050//
2051// System Service Table Descriptor
2052//
2054{
2058#if defined(_IA64_)
2059 LONG TableBaseGpOffset;
2060#endif
2063
2064#if (NTDDI_VERSION >= NTDDI_WIN8)
2065//
2066// Entropy Timing State
2067//
2069{
2076
2077//
2078// Constants from ks386.inc, ksamd64.inc and ksarm.h
2079//
2080#define KENTROPY_TIMING_INTERRUPTS_PER_BUFFER 0x400
2081#define KENTROPY_TIMING_BUFFER_MASK 0x7ff
2082#define KENTROPY_TIMING_ANALYSIS 0x0
2083
2084#endif /* (NTDDI_VERSION >= NTDDI_WIN8) */
2085
2086//
2087// Exported Loader Parameter Block
2088//
2090
2091//
2092// Exported Hardware Data
2093//
2101
2102//
2103// Exported System Service Descriptor Tables
2104//
2107
2108#endif // !NTOS_MODE_USER
2109
2110#endif // _KETYPES_H
unsigned char BOOLEAN
#define VOID
Definition: acefi.h:82
static SERVICE_TABLE_ENTRYW ServiceTable[2]
Definition: eventlog.c:24
@ Reserved1
Definition: bcd.h:201
#define NTSYSAPI
Definition: ntoskrnl.h:12
Definition: bufpool.h:45
ULONG_PTR KAFFINITY
Definition: compat.h:85
enum _NT_PRODUCT_TYPE NT_PRODUCT_TYPE
enum _NT_PRODUCT_TYPE * PNT_PRODUCT_TYPE
_NT_PRODUCT_TYPE
Definition: shellpath.c:63
@ NtProductWinNt
Definition: shellpath.c:64
@ NtProductLanManNt
Definition: shellpath.c:65
@ NtProductServer
Definition: shellpath.c:66
UCHAR KIRQL
Definition: env_spec_w32.h:591
ULONG KSPIN_LOCK
Definition: env_spec_w32.h:72
KSPIN_LOCK * PKSPIN_LOCK
Definition: env_spec_w32.h:73
_Must_inspect_result_ _In_ PLARGE_INTEGER _In_ PLARGE_INTEGER _In_ ULONG _In_ PFILE_OBJECT _In_ PVOID Process
Definition: fsrtlfuncs.h:223
enum _KPROFILE_SOURCE KPROFILE_SOURCE
VOID(CALLBACK * PTIMER_APC_ROUTINE)(PVOID, ULONG, LONG)
Definition: winternl.h:2018
_KPROFILE_SOURCE
Definition: winternl.h:2122
@ ProfileFpInstructions
Definition: winternl.h:2136
@ ProfileIntegerInstructions
Definition: winternl.h:2137
@ ProfileBranchMispredictions
Definition: winternl.h:2134
@ ProfileMaximum
Definition: winternl.h:2147
@ ProfileStoreInstructions
Definition: winternl.h:2135
@ ProfileAlignmentFixup
Definition: winternl.h:2124
@ ProfilePipelineDry
Definition: winternl.h:2126
@ ProfileMemoryBarrierCycles
Definition: winternl.h:2145
@ Profile3Issue
Definition: winternl.h:2139
@ ProfileLoadLinkedIssues
Definition: winternl.h:2146
@ ProfileDcacheMisses
Definition: winternl.h:2131
@ ProfileIcacheIssues
Definition: winternl.h:2143
@ ProfileIcacheMisses
Definition: winternl.h:2132
@ ProfileTotalNonissues
Definition: winternl.h:2130
@ ProfileTime
Definition: winternl.h:2123
@ ProfileSpecialInstructions
Definition: winternl.h:2141
@ Profile2Issue
Definition: winternl.h:2138
@ ProfileTotalCycles
Definition: winternl.h:2142
@ ProfileBranchInstructions
Definition: winternl.h:2129
@ ProfilePipelineFrozen
Definition: winternl.h:2128
@ ProfileDcacheAccesses
Definition: winternl.h:2144
@ ProfileLoadInstructions
Definition: winternl.h:2127
@ ProfileTotalIssues
Definition: winternl.h:2125
@ Profile4Issue
Definition: winternl.h:2140
@ ProfileCacheMisses
Definition: winternl.h:2133
_HARDWARE_COUNTER_TYPE
Definition: pstypes.h:123
#define Unused(x)
Definition: atlwin.h:28
unsigned __int64 ULONG64
Definition: imports.h:198
#define _In_
Definition: ms_sal.h:308
__int3264 LONG_PTR
Definition: mstsclib_h.h:276
#define KernelMode
Definition: asm.h:34
#define UserMode
Definition: asm.h:35
#define NUMBER_OF_LOCK_ENTRIES
Definition: ketypes.h:1563
struct _KINTERRUPT KINTERRUPT
VOID(NTAPI * PKSYSTEM_ROUTINE)(PKSTART_ROUTINE StartRoutine, PVOID StartContext)
Definition: ketypes.h:644
ULONG NTSYSAPI KeIcacheFlushCount
Definition: cpu.c:19
struct _KNODE * PKNODE
_KPROCESS_STATE
Definition: ketypes.h:459
@ ProcessOutOfMemory
Definition: ketypes.h:461
@ ProcessInMemory
Definition: ketypes.h:460
@ ProcessOutSwap
Definition: ketypes.h:464
@ ProcessInSwap
Definition: ketypes.h:463
@ ProcessInTransition
Definition: ketypes.h:462
struct _KPROFILE KPROFILE
struct _KDPC_DATA KDPC_DATA
struct _KTHREAD_COUNTERS KTHREAD_COUNTERS
struct _KDPC_LIST KDPC_LIST
struct _COUNTER_READING * PCOUNTER_READING
struct _KEXECUTE_OPTIONS KEXECUTE_OPTIONS
struct _FIBER FIBER
struct _KDPC_LIST * PKDPC_LIST
enum _ADJUST_REASON ADJUST_REASON
struct _KEVENT_PAIR * PKEVENT_PAIR
_KOBJECTS
Definition: ketypes.h:405
@ ApcObject
Definition: ketypes.h:424
@ Spare3Object
Definition: ketypes.h:417
@ ProfileObject
Definition: ketypes.h:429
@ EventSynchronizationObject
Definition: ketypes.h:407
@ TimerNotificationObject
Definition: ketypes.h:414
@ Spare4Object
Definition: ketypes.h:418
@ DeviceQueueObject
Definition: ketypes.h:426
@ TimerSynchronizationObject
Definition: ketypes.h:415
@ Spare5Object
Definition: ketypes.h:419
@ Spare2Object
Definition: ketypes.h:416
@ MaximumKernelObject
Definition: ketypes.h:431
@ QueueObject
Definition: ketypes.h:410
@ Spare8Object
Definition: ketypes.h:422
@ Spare6Object
Definition: ketypes.h:420
@ ProcessObject
Definition: ketypes.h:409
@ SemaphoreObject
Definition: ketypes.h:411
@ DpcObject
Definition: ketypes.h:425
@ EventNotificationObject
Definition: ketypes.h:406
@ GateObject
Definition: ketypes.h:413
@ ThreadObject
Definition: ketypes.h:412
@ ThreadedDpcObject
Definition: ketypes.h:430
@ Spare7Object
Definition: ketypes.h:421
@ MutantObject
Definition: ketypes.h:408
@ InterruptObject
Definition: ketypes.h:428
@ EventPairObject
Definition: ketypes.h:427
@ Spare9Object
Definition: ketypes.h:423
struct _PP_LOOKASIDE_LIST * PPP_LOOKASIDE_LIST
ULONG_PTR NTSYSAPI KiBugCheckData[]
Definition: bug.c:31
struct _KEVENT_PAIR KEVENT_PAIR
struct _KTHREAD_COUNTERS * PKTHREAD_COUNTERS
enum _KCONTINUE_STATUS KCONTINUE_STATUS
struct _RTL_RB_TREE RTL_RB_TREE
FIXME: should move to rtltypes.h, but we can't include it here.
struct _KLOCK_ENTRY KLOCK_ENTRY
struct _KDPC_DATA * PKDPC_DATA
struct _KTHREAD KTHREAD
struct _KTIMER_TABLE KTIMER_TABLE
ULONG NTSYSAPI KiDmaIoCoherency
Definition: cpu.c:29
struct _PP_LOOKASIDE_LIST PP_LOOKASIDE_LIST
_VDMSERVICECLASS
Definition: ketypes.h:471
@ VdmSetLdtEntries
Definition: ketypes.h:482
@ VdmSetProcessLdtInfo
Definition: ketypes.h:483
@ VdmQueryDir
Definition: ketypes.h:478
@ VdmSetInt21Handler
Definition: ketypes.h:477
@ VdmAdlibEmulation
Definition: ketypes.h:484
@ VdmQueueInterrupt
Definition: ketypes.h:473
@ VdmDelayInterrupt
Definition: ketypes.h:474
@ VdmPrinterDirectIoClose
Definition: ketypes.h:480
@ VdmPrinterDirectIoOpen
Definition: ketypes.h:479
@ VdmPrinterInitialize
Definition: ketypes.h:481
@ VdmFeatures
Definition: ketypes.h:476
@ VdmPMCliControl
Definition: ketypes.h:485
@ VdmInitialize
Definition: ketypes.h:475
@ VdmQueryVdmProcess
Definition: ketypes.h:486
@ VdmStartExecution
Definition: ketypes.h:472
enum _KTHREAD_STATE KTHREAD_STATE
struct _COUNTER_READING COUNTER_READING
struct _KLOCK_ENTRY * PKLOCK_ENTRY
struct _FIBER * PFIBER
ULONG NTSYSAPI KeMaximumIncrement
Definition: clock.c:20
struct _KTIMER_TABLE_ENTRY * PKTIMER_TABLE_ENTRY
struct _KPROCESS KPROCESS
VOID(NTAPI * PKRUNDOWN_ROUTINE)(IN struct _KAPC *Apc)
Definition: ketypes.h:657
struct _KLOCK_ENTRY_LOCK_STATE KLOCK_ENTRY_LOCK_STATE
union _KWAIT_STATUS_REGISTER KWAIT_STATUS_REGISTER
_KTHREAD_STATE
Definition: ketypes.h:387
@ Terminated
Definition: ketypes.h:392
@ Ready
Definition: ketypes.h:389
@ Running
Definition: ketypes.h:390
@ GateWait
Definition: ketypes.h:397
@ Standby
Definition: ketypes.h:391
@ DeferredReady
Definition: ketypes.h:395
@ Waiting
Definition: ketypes.h:393
@ Transition
Definition: ketypes.h:394
@ Initialized
Definition: ketypes.h:388
_KAPC_ENVIRONMENT
Definition: ketypes.h:673
@ AttachedApcEnvironment
Definition: ketypes.h:675
@ OriginalApcEnvironment
Definition: ketypes.h:674
@ CurrentApcEnvironment
Definition: ketypes.h:676
@ InsertApcEnvironment
Definition: ketypes.h:677
struct _KPROFILE * PKPROFILE
struct _KTIMER_TABLE * PKTIMER_TABLE
struct _KENTROPY_TIMING_STATE * PKENTROPY_TIMING_STATE
enum _KPROCESS_STATE KPROCESS_STATE
enum _KTHREAD_STATE * PKTHREAD_STATE
#define SSDT_MAX_ENTRIES
Definition: ketypes.h:100
struct _KNODE KNODE
enum _KOBJECTS KOBJECTS
struct _KSERVICE_TABLE_DESCRIPTOR KSERVICE_TABLE_DESCRIPTOR
BOOLEAN NTSYSAPI KiEnableTimerWatchdog
Definition: timerobj.c:20
enum _KPROCESS_STATE * PKPROCESS_STATE
KSERVICE_TABLE_DESCRIPTOR NTSYSAPI KeServiceDescriptorTable[SSDT_MAX_ENTRIES]
Definition: procobj.c:23
enum _VDMSERVICECLASS VDMSERVICECLASS
struct _GETSETCONTEXT * PGETSETCONTEXT
ULONG NTSYSAPI KeDcacheFlushCount
Definition: cpu.c:20
_KCONTINUE_STATUS
Definition: ketypes.h:448
@ ContinueNextProcessor
Definition: ketypes.h:452
@ ContinueProcessorReselected
Definition: ketypes.h:451
@ ContinueError
Definition: ketypes.h:449
@ ContinueSuccess
Definition: ketypes.h:450
#define DISPATCH_LENGTH
Definition: ketypes.h:174
struct _KEXECUTE_OPTIONS * PKEXECUTE_OPTIONS
struct _KSERVICE_TABLE_DESCRIPTOR * PKSERVICE_TABLE_DESCRIPTOR
_ADJUST_REASON
Definition: ketypes.h:438
@ AdjustUnwait
Definition: ketypes.h:440
@ AdjustNone
Definition: ketypes.h:439
@ AdjustBoost
Definition: ketypes.h:441
struct _KENTROPY_TIMING_STATE KENTROPY_TIMING_STATE
struct _LOADER_PARAMETER_BLOCK NTSYSAPI * KeLoaderBlock
Definition: krnlinit.c:29
union _KWAIT_STATUS_REGISTER * PKWAIT_STATUS_REGISTER
struct _GETSETCONTEXT GETSETCONTEXT
VOID(NTAPI * PKKERNEL_ROUTINE)(IN struct _KAPC *Apc, IN OUT PKNORMAL_ROUTINE *NormalRoutine OPTIONAL, IN OUT PVOID *NormalContext OPTIONAL, IN OUT PVOID *SystemArgument1 OPTIONAL, IN OUT PVOID *SystemArgument2 OPTIONAL)
Definition: ketypes.h:661
struct _SYNCH_COUNTERS SYNCH_COUNTERS
KSERVICE_TABLE_DESCRIPTOR NTSYSAPI KeServiceDescriptorTableShadow[SSDT_MAX_ENTRIES]
Definition: procobj.c:24
struct _SYNCH_COUNTERS * PSYNCH_COUNTERS
VOID(NTAPI * PKNORMAL_ROUTINE)(IN PVOID NormalContext OPTIONAL, IN PVOID SystemArgument1 OPTIONAL, IN PVOID SystemArgument2 OPTIONAL)
Definition: ketypes.h:651
struct _RTL_RB_TREE * PRTL_RB_TREE
ULONG NTSYSAPI KeMinimumIncrement
Definition: clock.c:21
struct _KTIMER_TABLE_ENTRY KTIMER_TABLE_ENTRY
enum _KAPC_ENVIRONMENT KAPC_ENVIRONMENT
struct _KLOCK_ENTRY_LOCK_STATE * PKLOCK_ENTRY_LOCK_STATE
#define DECLSPEC_ALIGN(x)
Definition: ntbasedef.h:251
#define RTL_SIZEOF_THROUGH_FIELD(type, field)
Definition: ntbasedef.h:672
enum _TIMER_TYPE TIMER_TYPE
_EVENT_TYPE
@ NotificationEvent
@ SynchronizationEvent
_WAIT_TYPE
@ WaitAll
@ WaitAny
enum _EVENT_TYPE EVENT_TYPE
enum _WAIT_TYPE WAIT_TYPE
_TIMER_TYPE
@ SynchronizationTimer
@ NotificationTimer
PVOID *typedef PHANDLE
Definition: ntsecpkg.h:455
short SHORT
Definition: pedump.c:59
long LONG
Definition: pedump.c:60
unsigned short USHORT
Definition: pedump.c:61
enum _KINTERRUPT_MODE KINTERRUPT_MODE
signed char SCHAR
Definition: sqltypes.h:14
enum _HARDWARE_COUNTER_TYPE Type
Definition: ketypes.h:921
ULONG64 Start
Definition: ketypes.h:923
ULONG64 Total
Definition: ketypes.h:924
PVOID StackLimit
Definition: ketypes.h:151
CONTEXT FiberContext
Definition: ketypes.h:153
PVOID DeallocationStack
Definition: ketypes.h:152
PVOID Wx86Tib
Definition: ketypes.h:155
ULONG GuaranteedStackBytes
Definition: ketypes.h:158
PVOID StackBase
Definition: ketypes.h:150
ULONG TebFlags
Definition: ketypes.h:159
struct _ACTIVATION_CONTEXT_STACK * ActivationContextStackPointer
Definition: ketypes.h:156
struct _EXCEPTION_REGISTRATION_RECORD * ExceptionList
Definition: ketypes.h:149
PVOID FiberData
Definition: ketypes.h:148
PVOID FlsData
Definition: ketypes.h:157
CONTEXT Context
Definition: ketypes.h:815
KPROCESSOR_MODE Mode
Definition: ketypes.h:814
KEVENT Event
Definition: ketypes.h:813
Definition: ketypes.h:547
PVOID NormalContext
Definition: ketypes.h:562
ULONG DpcCount
Definition: ketypes.h:767
ULONG_PTR DpcLock
Definition: ketypes.h:761
volatile ULONG DpcQueueDepth
Definition: ketypes.h:765
PKDPC ActiveDpc
Definition: ketypes.h:769
KDPC_LIST DpcList
Definition: ketypes.h:757
SINGLE_LIST_ENTRY ListHead
Definition: ketypes.h:697
SINGLE_LIST_ENTRY * LastEntry
Definition: ketypes.h:698
Definition: ketypes.h:699
CSHORT Type
Definition: ketypes.h:883
KEVENT HighEvent
Definition: ketypes.h:886
CSHORT Size
Definition: ketypes.h:884
KEVENT LowEvent
Definition: ketypes.h:885
UCHAR DisableThunkEmulation
Definition: ketypes.h:896
UCHAR ExecuteDisable
Definition: ketypes.h:894
UCHAR ExecuteEnable
Definition: ketypes.h:895
UCHAR ExecuteDispatchEnable
Definition: ketypes.h:898
UCHAR ImageDispatchEnable
Definition: ketypes.h:899
KIRQL SynchronizeIrql
Definition: ketypes.h:857
CCHAR Number
Definition: ketypes.h:860
ULONG ServiceCount
Definition: ketypes.h:866
PKINTERRUPT_ROUTINE DispatchAddress
Definition: ketypes.h:854
ULONG DispatchCount
Definition: ketypes.h:867
CSHORT Size
Definition: ketypes.h:843
ULONG DispatchCode[DISPATCH_LENGTH]
Definition: ketypes.h:875
BOOLEAN Connected
Definition: ketypes.h:859
KINTERRUPT_POLARITY Polarity
Definition: ketypes.h:864
KINTERRUPT_MODE Mode
Definition: ketypes.h:862
BOOLEAN ShareVector
Definition: ketypes.h:861
ULONG Vector
Definition: ketypes.h:855
PKSERVICE_ROUTINE MessageServiceRoutine
Definition: ketypes.h:847
KSPIN_LOCK SpinLock
Definition: ketypes.h:851
KIRQL Irql
Definition: ketypes.h:856
BOOLEAN FloatingSave
Definition: ketypes.h:858
LIST_ENTRY InterruptListEntry
Definition: ketypes.h:844
ULONG MessageIndex
Definition: ketypes.h:848
ULONG TickCount
Definition: ketypes.h:852
PKSPIN_LOCK ActualLock
Definition: ketypes.h:853
CSHORT Type
Definition: ketypes.h:842
ULONGLONG Rsvd1
Definition: ketypes.h:869
PKSERVICE_ROUTINE ServiceRoutine
Definition: ketypes.h:845
PVOID ServiceContext
Definition: ketypes.h:850
Definition: ketypes.h:950
ULONG_PTR Busy
Definition: ketypes.h:960
ULONG_PTR CrossThreadReleasable
Definition: ketypes.h:956
ULONG_PTR InTree
Definition: ketypes.h:962
ULONG_PTR Reserved
Definition: ketypes.h:961
PVOID LockState
Definition: ketypes.h:964
ULONG SessionId
Definition: ketypes.h:971
PVOID SessionState
Definition: ketypes.h:968
Definition: ketypes.h:980
KLOCK_ENTRY_LOCK_STATE LockState
Definition: ketypes.h:1043
UCHAR Spare0
Definition: ketypes.h:999
UCHAR AcquiredByte
Definition: ketypes.h:1004
PVOID SessionState
Definition: ketypes.h:1056
UCHAR WaitingBit
Definition: ketypes.h:998
USHORT IoBoost
Definition: ketypes.h:1089
RTL_RB_TREE WaiterTree
Definition: ketypes.h:1072
ULONG SessionId
Definition: ketypes.h:1059
USHORT IoQoSWaiterCount
Definition: ketypes.h:1095
USHORT IoQoSBoost
Definition: ketypes.h:1093
ULONG_PTR EntryLock
Definition: ketypes.h:1076
volatile UCHAR CrossThreadReleasableAndBusyByte
Definition: ketypes.h:1048
RTL_RB_TREE OwnerTree
Definition: ketypes.h:1071
ULONG AllFlags
Definition: ketypes.h:1022
UCHAR HeadNodeBit
Definition: ketypes.h:1012
SINGLE_LIST_ENTRY FreeListEntry
Definition: ketypes.h:984
UCHAR IoQoSWaiter
Definition: ketypes.h:1014
ULONG EntryFlags
Definition: ketypes.h:989
UCHAR AcquiredBit
Definition: ketypes.h:1005
UCHAR InTreeByte
Definition: ketypes.h:1053
USHORT CpuBoostsBitmap
Definition: ketypes.h:1088
PVOID LockUnsafe
Definition: ketypes.h:1044
UCHAR ThreadLocalFlags
Definition: ketypes.h:995
UCHAR IoPriorityBit
Definition: ketypes.h:1013
CHAR CpuPriorityKey
Definition: ketypes.h:1074
USHORT AllBoosts
Definition: ketypes.h:1082
UCHAR Spare1
Definition: ketypes.h:1015
ULONG StaticState
Definition: ketypes.h:1021
UCHAR EntryOffset
Definition: ketypes.h:992
RTL_BALANCED_NODE TreeNode
Definition: ketypes.h:983
UCHAR CrossThreadFlags
Definition: ketypes.h:1009
USHORT IoNormalPriorityWaiterCount
Definition: ketypes.h:1094
UCHAR Removable
Definition: ketypes.h:799
UCHAR Fill
Definition: ketypes.h:800
SLIST_HEADER DeadStackList
Definition: ketypes.h:792
UCHAR Seed
Definition: ketypes.h:796
ULONG_PTR FreeCount[2]
Definition: ketypes.h:803
ULONG MmShiftedColor
Definition: ketypes.h:802
struct _SINGLE_LIST_ENTRY * PfnDeferredList
Definition: ketypes.h:804
struct _KNODE::_flags Flags
UCHAR NodeNumber
Definition: ketypes.h:797
KAFFINITY ProcessorMask
Definition: ketypes.h:794
SLIST_HEADER PfnDereferenceSListHead
Definition: ketypes.h:793
UCHAR Color
Definition: ketypes.h:795
DISPATCHER_HEADER Header
Definition: ketypes.h:1991
SCHAR BasePriority
Definition: ketypes.h:2028
SCHAR QuantumReset
Definition: ketypes.h:2029
LIST_ENTRY ProcessListEntry
Definition: ketypes.h:2041
SINGLE_LIST_ENTRY SwapListEntry
Definition: ketypes.h:2012
ULONG StackCount
Definition: ketypes.h:2040
UCHAR ThreadSeed
Definition: ketypes.h:2031
UCHAR IdealNode
Definition: ketypes.h:2033
LONG DisableQuantum
Definition: ketypes.h:2023
LONG DisableBoost
Definition: ketypes.h:2022
USHORT IopmOffset
Definition: ketypes.h:2003
LONG ProcessFlags
Definition: ketypes.h:2026
UCHAR ExecuteOptions
Definition: ketypes.h:2038
ULONG_PTR Unused0
Definition: ketypes.h:1995
PVOID VdmTrapcHandler
Definition: ketypes.h:2013
volatile KAFFINITY ActiveProcessors
Definition: ketypes.h:2008
ULONG KernelTime
Definition: ketypes.h:2009
LONG AutoAlignment
Definition: ketypes.h:2021
ULONG_PTR DirectoryTableBase
Definition: ketypes.h:1994
UCHAR Visited
Definition: ketypes.h:2034
ULONG UserTime
Definition: ketypes.h:2010
ULONGLONG CycleTime
Definition: ketypes.h:2043
UCHAR State
Definition: ketypes.h:2030
KAFFINITY Affinity
Definition: ketypes.h:2016
LIST_ENTRY ProfileListHead
Definition: ketypes.h:1992
LONG ReservedFlags
Definition: ketypes.h:2024
UCHAR PowerState
Definition: ketypes.h:2032
KEXECUTE_OPTIONS Flags
Definition: ketypes.h:2037
LIST_ENTRY ThreadListHead
Definition: ketypes.h:2014
LIST_ENTRY ReadyListHead
Definition: ketypes.h:2011
KSPIN_LOCK ProcessLock
Definition: ketypes.h:2015
struct _KPROCESS * Process
Definition: ketypes.h:826
CSHORT Size
Definition: ketypes.h:824
ULONG BucketShift
Definition: ketypes.h:829
PVOID RangeLimit
Definition: ketypes.h:828
KPROFILE_SOURCE Source
Definition: ketypes.h:833
PVOID Buffer
Definition: ketypes.h:830
BOOLEAN Started
Definition: ketypes.h:834
ULONG_PTR Segment
Definition: ketypes.h:831
PVOID RangeBase
Definition: ketypes.h:827
CSHORT Type
Definition: ketypes.h:823
KAFFINITY Affinity
Definition: ketypes.h:832
LIST_ENTRY ProfileListEntry
Definition: ketypes.h:825
LONG High1Time
Definition: ketypes.h:930
LONG High2Time
Definition: ketypes.h:931
ULONG LowPart
Definition: ketypes.h:929
ULONG64 CycleTimeBias
Definition: ketypes.h:933
ULONG64 WaitReasonBitMap
Definition: ketypes.h:929
ULONG64 HardwareCounters
Definition: ketypes.h:934
struct _THREAD_PERFORMANCE_DATA * UserData
Definition: ketypes.h:930
COUNTER_READING HwCounter[16]
Definition: ketypes.h:935
ULONG ContextSwitches
Definition: ketypes.h:932
ULONG ApcInterruptRequest
Definition: ketypes.h:1610
PKTRAP_FRAME TrapFrame
Definition: ketypes.h:1681
PVOID InitialStack
Definition: ketypes.h:1571
ULONG SystemCallNumber
Definition: ketypes.h:1676
PKQUEUE Queue
Definition: ketypes.h:1713
ULONG UserIdealProcessor
Definition: ketypes.h:1690
UCHAR AdjustReason
Definition: ketypes.h:1835
UCHAR UnusualBoost
Definition: ketypes.h:1831
ULONG CurrentRunTime
Definition: ketypes.h:1580
UCHAR SchedulerApcFill4[FIELD_OFFSET(KAPC, SystemArgument2)]
Definition: ketypes.h:1903
GROUP_AFFINITY Affinity
Definition: ketypes.h:1845
ULONG IdealProcessor
Definition: ketypes.h:1851
ULONG ThreadFlagsSpare
Definition: ketypes.h:1657
ULONG UserStackWalkActive
Definition: ketypes.h:1609
ULONG DisableBoost
Definition: ketypes.h:1632
volatile INT_PTR WaitStatus
Definition: ketypes.h:1706
UCHAR ForegroundBoost
Definition: ketypes.h:1830
ULONG ProcessReadyQueue
Definition: ketypes.h:1602
ULONG ChargeOnlyGroup
Definition: ketypes.h:1639
ULONG QuantumDonation
Definition: ketypes.h:1635
KPROCESSOR_MODE WaitMode
Definition: ketypes.h:1703
UCHAR CallbackNestingLevel
Definition: ketypes.h:1909
LIST_ENTRY WaitListEntry
Definition: ketypes.h:1710
ULONG FreezeCount
Definition: ketypes.h:1644
SHORT SListFaultCount
Definition: ketypes.h:1874
ULONG ReservedStackInUse
Definition: ketypes.h:1619
LONG AbCompletedIoQoSBoostCount
Definition: ketypes.h:1937
CHAR PriorityDecrement
Definition: ketypes.h:1827
ULONG QuantumEndMigrate
Definition: ketypes.h:1611
BOOLEAN Running
Definition: ketypes.h:1586
KAPC_STATE SavedApcState
Definition: ketypes.h:1867
ULONG_PTR AffinityVersion
Definition: ketypes.h:1841
UCHAR WaitBlockFill10[2 *sizeof(KWAIT_BLOCK)+FIELD_OFFSET(KWAIT_BLOCK, SparePtr)]
Definition: ketypes.h:1772
ULONG Reserved
Definition: ketypes.h:1622
ULONG ExpectedRunTime
Definition: ketypes.h:1581
ULONG DisableQuantum
Definition: ketypes.h:1638
ULONG64 QuantumTarget
Definition: ketypes.h:1570
PVOID Win32Thread
Definition: ketypes.h:1773
ULONG_PTR InGlobalForegroundList
Definition: ketypes.h:1959
ULONG SystemAffinityActive
Definition: ketypes.h:1604
BOOLEAN Alerted[MaximumMode]
Definition: ketypes.h:1587
volatile ULONG64 CycleTime
Definition: ketypes.h:1575
ULONG ForegroundLossTime
Definition: ketypes.h:1952
LIST_ENTRY GlobalForegroundListEntry
Definition: ketypes.h:1955
UCHAR AbFreeEntryCount
Definition: ketypes.h:1949
struct _KSCB * QueuedScb
Definition: ketypes.h:1973
LONG ThreadFlags
Definition: ketypes.h:1664
ULONG CombinedApcDisable
Definition: ketypes.h:1790
ULONG Alertable
Definition: ketypes.h:1605
PKPRCB WaitPrcb
Definition: ketypes.h:1899
KSPIN_LOCK ThreadLock
Definition: ketypes.h:1574
volatile LONG AbCompletedIoBoostCount
Definition: ketypes.h:1935
UCHAR ApcStateFill[RTL_SIZEOF_THROUGH_FIELD(KAPC_STATE, UserApcPending)]
Definition: ketypes.h:1688
PVOID FirstArgument
Definition: ketypes.h:1680
ULONG CalloutActive
Definition: ketypes.h:1616
SCHAR Priority
Definition: ketypes.h:1689
ULONG UserAffinitySet
Definition: ketypes.h:1633
SHORT SpecialApcDisable
Definition: ketypes.h:1788
ULONG CommitFailTerminateRequest
Definition: ketypes.h:1655
UCHAR SuspendApcFill3[FIELD_OFFSET(KAPC, SystemArgument1)]
Definition: ketypes.h:1898
UCHAR ApcStateIndex
Definition: ketypes.h:1849
PVOID SListFaultAddress
Definition: ketypes.h:1569
USHORT Spare20
Definition: ketypes.h:1921
UCHAR SchedulerApcFill0[FIELD_OFFSET(KAPC, SpareByte0)]
Definition: ketypes.h:1883
PVOID Teb
Definition: ketypes.h:1714
struct _KTHREAD_COUNTERS * ThreadCounters
Definition: ketypes.h:1763
SINGLE_LIST_ENTRY SwapListEntry
Definition: ketypes.h:1711
CHAR PreviousMode
Definition: ketypes.h:1823
KLOCK_ENTRY LockEntries[NUMBER_OF_LOCK_ENTRIES]
Definition: ketypes.h:1930
PVOID ServiceTable
Definition: ketypes.h:1578
ULONG QueueDeferPreemption
Definition: ketypes.h:1641
UCHAR SchedulerApcFill5[FIELD_OFFSET(KAPC, Inserted)+1]
Definition: ketypes.h:1908
ULONG64 NpxState
Definition: ketypes.h:1975
ULONG AutoAlignment
Definition: ketypes.h:1631
ULONG AutoBoostActive
Definition: ketypes.h:1596
ULONG ReadyTransition
Definition: ketypes.h:1598
ULONG ScbReadyQueue
Definition: ketypes.h:1617
GROUP_AFFINITY UserAffinity
Definition: ketypes.h:1819
PVOID KernelStack
Definition: ketypes.h:1582
ULONG GuiThread
Definition: ketypes.h:1637
ULONG DeferredProcessor
Definition: ketypes.h:1813
ULONG KernelTime
Definition: ketypes.h:1894
ULONG Spare15
Definition: ketypes.h:1859
UCHAR ResourceIndex
Definition: ketypes.h:1884
LIST_ENTRY ThreadListEntry
Definition: ketypes.h:1915
UCHAR SystemHeteroCpuPolicy
Definition: ketypes.h:1669
ULONG UmsPerformingSyscall
Definition: ketypes.h:1620
CHAR BasePriority
Definition: ketypes.h:1824
ULONG WaitTime
Definition: ketypes.h:1782
UCHAR UserHeteroCpuPolicy
Definition: ketypes.h:1670
UCHAR SchedulerApcFill2[FIELD_OFFSET(KAPC, SpareLong0)]
Definition: ketypes.h:1893
UCHAR AffinityFill[FIELD_OFFSET(GROUP_AFFINITY, Reserved)]
Definition: ketypes.h:1848
ULONG PriorityFloorSummary
Definition: ketypes.h:1934
UCHAR QuantumReset
Definition: ketypes.h:1889
PVOID LegoData
Definition: ketypes.h:1904
UCHAR WaitReason
Definition: ketypes.h:1871
volatile SHORT KeReferenceCount
Definition: ketypes.h:1941
PXSTATE_SAVE XStateSave
Definition: ketypes.h:1768
PVOID StackBase
Definition: ketypes.h:1573
ULONG SystemThread
Definition: ketypes.h:1614
ULONG NextProcessor
Definition: ketypes.h:1812
ULONG ExplicitIdealProcessor
Definition: ketypes.h:1643
ULONG EnableStackSwap
Definition: ketypes.h:1636
UCHAR WaitBlockFill8[FIELD_OFFSET(KWAIT_BLOCK, SparePtr)]
Definition: ketypes.h:1762
LONG MiscFlags
Definition: ketypes.h:1624
ULONG TimerActive
Definition: ketypes.h:1613
UCHAR AbWaitEntryCount
Definition: ketypes.h:1920
CHAR AdjustIncrement
Definition: ketypes.h:1836
volatile ULONG HighCycleTime
Definition: ketypes.h:1577
LIST_ENTRY MutantListHead
Definition: ketypes.h:1916
UCHAR SchedulerApcFill1[FIELD_OFFSET(KAPC, SpareByte1)]
Definition: ketypes.h:1888
UCHAR PriorityFloorCounts[16]
Definition: ketypes.h:1933
UCHAR ExplicitSystemHeteroCpuPolicy
Definition: ketypes.h:1671
volatile UCHAR Tag
Definition: ketypes.h:1668
UCHAR AbEntrySummary
Definition: ketypes.h:1919
SHORT KernelApcDisable
Definition: ketypes.h:1787
ULONG AlertedByThreadId
Definition: ketypes.h:1634
SINGLE_LIST_ENTRY IoSelfBoostsEntry
Definition: ketypes.h:1932
KEVENT SuspendEvent
Definition: ketypes.h:1914
CHAR Spare12
Definition: ketypes.h:1698
SINGLE_LIST_ENTRY PropagateBoostsEntry
Definition: ketypes.h:1931
DISPATCHER_HEADER Header
Definition: ketypes.h:1568
KWAIT_STATUS_REGISTER WaitRegister
Definition: ketypes.h:1585
PKWAIT_BLOCK WaitBlockList
Definition: ketypes.h:1707
ULONG ProcessStackCountDecremented
Definition: ketypes.h:1656
ULONG ContextSwitches
Definition: ketypes.h:1695
ULONG64 RelativeTimerBias
Definition: ketypes.h:1716
ULONG DisableStackCheck
Definition: ketypes.h:1621
ULONG EtwStackTraceApcInserted
Definition: ketypes.h:1659
UCHAR SavedApcStateFill[FIELD_OFFSET(KAPC_STATE, UserApcPending)+1]
Definition: ketypes.h:1870
UCHAR WaitBlockFill9[1 *sizeof(KWAIT_BLOCK)+FIELD_OFFSET(KWAIT_BLOCK, SparePtr)]
Definition: ketypes.h:1767
CHAR Saturation
Definition: ketypes.h:1873
XSAVE_FORMAT * StateSaveArea
Definition: ketypes.h:1583
CHAR SuspendCount
Definition: ketypes.h:1872
ULONG DeferPreemption
Definition: ketypes.h:1640
UCHAR Spare0
Definition: ketypes.h:1672
KTIMER Timer
Definition: ketypes.h:1718
UCHAR WaitBlockFill11[3 *sizeof(KWAIT_BLOCK)+FIELD_OFFSET(KWAIT_BLOCK, Object)]
Definition: ketypes.h:1777
volatile VOID * StackLimit
Definition: ketypes.h:1572
LIST_ENTRY QueueListEntry
Definition: ketypes.h:1799
ULONG ProcessDetachActive
Definition: ketypes.h:1615
KAPC_STATE ApcState
Definition: ketypes.h:1685
struct _KSCHEDULING_GROUP * SchedulingGroup
Definition: ketypes.h:1584
PKPROCESS Process
Definition: ketypes.h:1815
KIRQL WaitIrql
Definition: ketypes.h:1702
KAPC SchedulerApc
Definition: ketypes.h:1880
UCHAR Preempted
Definition: ketypes.h:1834
ULONG UserTime
Definition: ketypes.h:1910
ULONG UmsDirectedSwitchEnable
Definition: ketypes.h:1612
ULONG ApcQueueable
Definition: ketypes.h:1618
SINGLE_LIST_ENTRY ForegroundDpcStackListEntry
Definition: ketypes.h:1958
volatile UCHAR State
Definition: ketypes.h:1696
ULONG WaitNext
Definition: ketypes.h:1603
UCHAR UserAffinityFill[FIELD_OFFSET(GROUP_AFFINITY, Reserved)]
Definition: ketypes.h:1822
ULONG ForceDeferSchedule
Definition: ketypes.h:1642
UCHAR WaitBlockCount
Definition: ketypes.h:1850
Definition: ketypes.h:681
KSPIN_LOCK Lock
Definition: ketypes.h:683
ULARGE_INTEGER Time
Definition: ketypes.h:686
LIST_ENTRY Entry
Definition: ketypes.h:685
KTIMER_TABLE_ENTRY TimerEntries[256]
Definition: ketypes.h:692
PKTIMER TimerExpiry[64]
Definition: ketypes.h:691
BOOLEAN ProductTypeIsValid
Definition: ketypes.h:1182
ULONG DbgInstallerDetectEnabled
Definition: ketypes.h:1221
volatile KSYSTEM_TIME SystemTime
Definition: ketypes.h:1171
ULONG TickCountLowDeprecated
Definition: ketypes.h:1168
NT_PRODUCT_TYPE NtProductType
Definition: ketypes.h:1181
ULONG SystemCallReturn
Definition: ketypes.h:1234
ULONGLONG TestRetInstruction
Definition: ketypes.h:1232
volatile ULONG ActiveConsoleId
Definition: ketypes.h:1197
BOOLEAN KdDebuggerEnabled
Definition: ketypes.h:1193
ULONG NtMajorVersion
Definition: ketypes.h:1183
ULONG TickCountMultiplier
Definition: ketypes.h:1169
LONGLONG ConsoleSessionForegroundProcessId
Definition: ketypes.h:1247
ULONG Wow64SharedInformation[MAX_WOW64_SHARED_ENTRIES]
Definition: ketypes.h:1248
ULONG DbgElevationEnabled
Definition: ketypes.h:1219
ULONG SharedDataFlags
Definition: ketypes.h:1216
UCHAR NXSupportPolicy
Definition: ketypes.h:1195
BOOLEAN ProcessorFeatures[PROCESSOR_FEATURE_MAX]
Definition: ketypes.h:1185
ULONG LastSystemRITEventTickCount
Definition: ketypes.h:1200
ULONG NumberOfPhysicalPages
Definition: ketypes.h:1201
volatile ULONG64 TickCountQuad
Definition: ketypes.h:1238
volatile KSYSTEM_TIME TickCount
Definition: ketypes.h:1237
ULONG LargePageMinimum
Definition: ketypes.h:1179
volatile KSYSTEM_TIME InterruptTime
Definition: ketypes.h:1170
ULONG CryptoExponent
Definition: ketypes.h:1177
BOOLEAN SafeBootMode
Definition: ketypes.h:1202
volatile ULONG TimeSlip
Definition: ketypes.h:1188
LARGE_INTEGER SystemExpirationDate
Definition: ketypes.h:1191
ULONG NtMinorVersion
Definition: ketypes.h:1184
WCHAR NtSystemRoot[260]
Definition: ketypes.h:1175
USHORT ImageNumberHigh
Definition: ketypes.h:1174
ULONG MaxStackTraceDepth
Definition: ketypes.h:1176
ULONG DbgErrorPortPresent
Definition: ketypes.h:1218
ULONG DbgVirtEnabled
Definition: ketypes.h:1220
ULONG ImageFileExecutionOptions
Definition: ketypes.h:1258
ULONG Reserved2[7]
Definition: ketypes.h:1180
ULONG ComPlusPackage
Definition: ketypes.h:1199
ALTERNATIVE_ARCHITECTURE_TYPE AlternativeArchitecture
Definition: ketypes.h:1189
volatile ULONG DismountCount
Definition: ketypes.h:1198
volatile KSYSTEM_TIME TimeZoneBias
Definition: ketypes.h:1172
ULONGLONG SystemCallPad[3]
Definition: ketypes.h:1235
USHORT UserModeGlobalLogger[16]
Definition: ketypes.h:1252
USHORT ImageNumberLow
Definition: ketypes.h:1173
Definition: typedefs.h:120
struct _GENERAL_LOOKASIDE * P
Definition: ketypes.h:778
struct _GENERAL_LOOKASIDE * L
Definition: ketypes.h:779
FIXME: should move to rtltypes.h, but we can't include it here.
Definition: ketypes.h:942
PRTL_BALANCED_NODE Root
Definition: ketypes.h:943
PRTL_BALANCED_NODE Min
Definition: ketypes.h:944
Definition: ntbasedef.h:628
ULONG ExTryToAcqExclusiveAcquires
Definition: ketypes.h:744
ULONG ExTryToAcqExclusiveAttempts
Definition: ketypes.h:743
ULONG ExInitializeResourceCount
Definition: ketypes.h:709
ULONG ExecutiveResourceReleaseSharedCount
Definition: ketypes.h:715
ULONG ExAcqResSharedAcquiresExclusive
Definition: ketypes.h:723
ULONG ExAcqResExclusiveNotAcquires
Definition: ketypes.h:721
ULONG ExAcqResSharedStarveExclusiveNotAcquires
Definition: ketypes.h:733
ULONG ExSetResOwnerPointerSharedOld
Definition: ketypes.h:742
ULONG ExAcqResSharedWaitForExclusiveAcquiresSharedRecursive
Definition: ketypes.h:737
ULONG ExAcqResExclusiveAcquiresExclusiveRecursive
Definition: ketypes.h:719
ULONG ExEtwSynchTrackingNotificationsAccountedCount
Definition: ketypes.h:748
ULONG ExecutiveResourceConvertsCount
Definition: ketypes.h:716
ULONG ExecutiveResourceReleaseExclusiveCount
Definition: ketypes.h:714
ULONG IpiSendRequestBroadcastCount
Definition: ketypes.h:706
ULONG ExAcqResExclusiveWaits
Definition: ketypes.h:720
ULONG ExAcqResSharedWaitForExclusiveWaits
Definition: ketypes.h:738
ULONG ExAcqResSharedWaits
Definition: ketypes.h:726
ULONG ExAcqResSharedWaitForExclusiveAcquiresExclusive
Definition: ketypes.h:735
ULONG SpinLockContentionCount
Definition: ketypes.h:704
ULONG ExAcqResSharedStarveExclusiveAttempts
Definition: ketypes.h:728
ULONG ExAcqResSharedAttempts
Definition: ketypes.h:722
ULONG ExDeleteResourceCount
Definition: ketypes.h:711
ULONG ExecutiveResourceContentionsCount
Definition: ketypes.h:713
ULONG ExAcqResSharedWaitForExclusiveAttempts
Definition: ketypes.h:734
ULONG ExAcqResSharedWaitForExclusiveNotAcquires
Definition: ketypes.h:739
ULONG ExEtwSynchTrackingNotificationsCount
Definition: ketypes.h:747
ULONG ExBoostSharedOwners
Definition: ketypes.h:746
ULONG IpiSendRequestRoutineCount
Definition: ketypes.h:707
ULONG ExAcqResSharedStarveExclusiveAcquiresSharedRecursive
Definition: ketypes.h:731
ULONG ExAcqResSharedStarveExclusiveAcquiresShared
Definition: ketypes.h:730
ULONG ExAcqResSharedStarveExclusiveWaits
Definition: ketypes.h:732
ULONG ExAcqResSharedAcquiresShared
Definition: ketypes.h:724
ULONG SpinLockSpinCount
Definition: ketypes.h:705
ULONG IpiSendSoftwareInterruptCount
Definition: ketypes.h:708
ULONG ExSetResOwnerPointerExclusive
Definition: ketypes.h:740
ULONG ExAcqResSharedNotAcquires
Definition: ketypes.h:727
ULONG ExReInitializeResourceCount
Definition: ketypes.h:710
ULONG ExAcqResSharedWaitForExclusiveAcquiresShared
Definition: ketypes.h:736
ULONG ExecutiveResourceAcquiresCount
Definition: ketypes.h:712
ULONG ExAcqResSharedStarveExclusiveAcquiresExclusive
Definition: ketypes.h:729
ULONG ExAcqResExclusiveAttempts
Definition: ketypes.h:717
ULONG ExSetResOwnerPointerSharedNew
Definition: ketypes.h:741
ULONG ExAcqResExclusiveAcquiresExclusive
Definition: ketypes.h:718
ULONG SpinLockAcquireCount
Definition: ketypes.h:703
ULONG ExBoostExclusiveOwner
Definition: ketypes.h:745
ULONG ExAcqResSharedAcquiresSharedRecursive
Definition: ketypes.h:725
Definition: compat.h:836
#define MODE
Definition: telnetd.h:40
uint32_t * PULONG_PTR
Definition: typedefs.h:65
int32_t INT_PTR
Definition: typedefs.h:64
#define OPTIONAL
Definition: typedefs.h:41
uint32_t * PULONG
Definition: typedefs.h:59
int64_t LONG64
Definition: typedefs.h:68
#define FIELD_OFFSET(t, f)
Definition: typedefs.h:255
int64_t LONGLONG
Definition: typedefs.h:68
#define NTAPI
Definition: typedefs.h:36
void * PVOID
Definition: typedefs.h:50
uint32_t ULONG_PTR
Definition: typedefs.h:65
#define IN
Definition: typedefs.h:39
unsigned char * PUCHAR
Definition: typedefs.h:53
uint32_t ULONG
Definition: typedefs.h:59
uint64_t ULONGLONG
Definition: typedefs.h:67
#define OUT
Definition: typedefs.h:40
char CCHAR
Definition: typedefs.h:51
short CSHORT
Definition: umtypes.h:127
_Must_inspect_result_ _In_ WDFCOLLECTION _In_ WDFOBJECT Object
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_ WDF_DEVICE_POWER_STATE PowerState
Definition: wdfdevice.h:3034
_Reserved_ PVOID Reserved
Definition: winddi.h:3974
_In_ ULONG _In_ ULONG _In_ ULONG _Out_ PKIRQL _Out_ PKAFFINITY Affinity
Definition: halfuncs.h:174
_Out_ PULONG UserTime
Definition: kefuncs.h:773
_In_ LARGE_INTEGER _In_ ULONG Period
Definition: kefuncs.h:1327
_In_ LONG _In_ LONG Limit
Definition: kefuncs.h:318
#define PROCESSOR_FEATURE_MAX
struct _KUSER_SHARED_DATA KUSER_SHARED_DATA
XSAVE_FORMAT
Definition: ketypes.h:963
KSTART_ROUTINE * PKSTART_ROUTINE
Definition: ketypes.h:499
struct _KSYSTEM_TIME KSYSTEM_TIME
_KWAIT_REASON
Definition: ketypes.h:414
@ WrLpcReply
Definition: ketypes.h:432
@ WrGuardedMutex
Definition: ketypes.h:450
@ WrPageIn
Definition: ketypes.h:424
@ WrPoolAllocation
Definition: ketypes.h:425
@ Suspended
Definition: ketypes.h:420
@ WrPageOut
Definition: ketypes.h:434
@ PageIn
Definition: ketypes.h:417
@ WrKernel
Definition: ketypes.h:441
@ PoolAllocation
Definition: ketypes.h:418
@ WrYieldExecution
Definition: ketypes.h:448
@ WrUserRequest
Definition: ketypes.h:428
@ UserRequest
Definition: ketypes.h:421
@ WrLpcReceive
Definition: ketypes.h:431
@ WrFreePage
Definition: ketypes.h:423
@ DelayExecution
Definition: ketypes.h:419
@ WrDispatchInt
Definition: ketypes.h:446
@ WrMutex
Definition: ketypes.h:444
@ WrExecutive
Definition: ketypes.h:422
@ WrQuantumEnd
Definition: ketypes.h:445
@ WrResource
Definition: ketypes.h:442
@ WrEventPair
Definition: ketypes.h:429
@ WrPushLock
Definition: ketypes.h:443
@ WrPreempted
Definition: ketypes.h:447
@ WrQueue
Definition: ketypes.h:430
@ MaximumWaitReason
Definition: ketypes.h:452
@ WrRendezvous
Definition: ketypes.h:435
@ FreePage
Definition: ketypes.h:416
@ WrVirtualMemory
Definition: ketypes.h:433
@ WrDelayExecution
Definition: ketypes.h:426
@ WrSuspended
Definition: ketypes.h:427
@ Executive
Definition: ketypes.h:415
CCHAR KPROCESSOR_MODE
Definition: ketypes.h:7
KSERVICE_ROUTINE * PKSERVICE_ROUTINE
Definition: ketypes.h:512
#define MAX_WOW64_SHARED_ENTRIES
Definition: ketypes.h:1155
_In_opt_ PVOID _In_opt_ PVOID SystemArgument1
Definition: ketypes.h:688
struct _KWAIT_BLOCK KWAIT_BLOCK
_MODE
Definition: ketypes.h:10
@ MaximumMode
Definition: ketypes.h:13
enum _KINTERRUPT_POLARITY KINTERRUPT_POLARITY
#define THREAD_WAIT_OBJECTS
Definition: ketypes.h:492
_ALTERNATIVE_ARCHITECTURE_TYPE
Definition: ketypes.h:901
@ EndAlternatives
Definition: ketypes.h:904
@ StandardDesign
Definition: ketypes.h:902
@ NEC98x86
Definition: ketypes.h:903
* PKAPC_STATE
Definition: ketypes.h:1297
struct _KUSER_SHARED_DATA * PKUSER_SHARED_DATA
struct _KSYSTEM_TIME * PKSYSTEM_TIME
VOID(NTAPI * PKINTERRUPT_ROUTINE)(VOID)
Definition: ketypes.h:502
enum _KWAIT_REASON KWAIT_REASON
_In_opt_ PVOID _In_opt_ PVOID _In_opt_ PVOID SystemArgument2
Definition: ketypes.h:689
KAPC_STATE
Definition: ketypes.h:1297
enum _ALTERNATIVE_ARCHITECTURE_TYPE ALTERNATIVE_ARCHITECTURE_TYPE
_In_ ULONG _In_opt_ POBJECT_ATTRIBUTES _In_opt_ HANDLE _Out_opt_ PCLIENT_ID _In_ PKSTART_ROUTINE StartRoutine
Definition: psfuncs.h:91
_In_ KPROCESSOR_MODE PreviousMode
Definition: sefuncs.h:103
unsigned char UCHAR
Definition: xmlstorage.h:181
__wchar_t WCHAR
Definition: xmlstorage.h:180
char CHAR
Definition: xmlstorage.h:175
_In_ PLARGE_INTEGER _In_opt_ PTIMER_APC_ROUTINE _In_opt_ PVOID TimerContext
Definition: zwfuncs.h:430