ReactOS 0.4.17-dev-301-g9127a53
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// Quantum values and decrements
130//
131#define MAX_QUANTUM 0x7F
132#define WAIT_QUANTUM_DECREMENT 1
133#define CLOCK_QUANTUM_DECREMENT 3
134
135//
136// Internal Exception Codes
137//
138#define KI_EXCEPTION_INTERNAL 0x10000000
139#define KI_EXCEPTION_ACCESS_VIOLATION (KI_EXCEPTION_INTERNAL | 0x04)
140
141typedef struct _FIBER /* Field offsets: */
142{ /* i386 arm x64 */
143 PVOID FiberData; /* 0x000 0x000 0x000 */
144 struct _EXCEPTION_REGISTRATION_RECORD *ExceptionList;/* 0x004 0x004 0x008 */
145 PVOID StackBase; /* 0x008 0x008 0x010 */
146 PVOID StackLimit; /* 0x00C 0x00C 0x018 */
147 PVOID DeallocationStack; /* 0x010 0x010 0x020 */
148 CONTEXT FiberContext; /* 0x014 0x018 0x030 */
149#if (NTDDI_VERSION >= NTDDI_LONGHORN)
150 PVOID Wx86Tib; /* 0x2E0 0x1b8 0x500 */
152 PVOID FlsData; /* 0x2E8 0x1c0 0x510 */
153 ULONG GuaranteedStackBytes; /* 0x2EC 0x1c4 0x518 */
154 ULONG TebFlags; /* 0x2F0 0x1c8 0x51C */
155#else
156 ULONG GuaranteedStackBytes; /* 0x2E0 */
157 PVOID FlsData; /* 0x2E4 */
159#endif
161
162//
163// KUSER_SHARED_DATA location in User Mode
164//
165#define USER_SHARED_DATA 0x7FFE0000
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,
311 WrKernel,
314 WrMutex,
321 WrRundown,
322#if (NTDDI_VERSION >= NTDDI_WIN8)
325#endif
326#if (NTDDI_VERSION >= NTDDI_WIN10_RS3)
328#endif
329#if (NTDDI_VERSION >= NTDDI_WIN11)
330 WrIoRing,
331#endif
332#if (NTDDI_VERSION >= NTDDI_WIN11_NI)
334#endif
335#if (NTDDI_VERSION >= NTDDI_WIN11_GE)
336 WrRcu,
337#endif
340
341//
342// Profiling Sources
343//
344typedef enum _KPROFILE_SOURCE
345{
372
373//
374// NT Product and Architecture Types
375//
376typedef enum _NT_PRODUCT_TYPE
377{
378 NtProductWinNt = 1,
382
384{
386 NEC98x86,
389
390//
391// Flags for NXSupportPolicy
392//
393#if (NTDDI_VERSION >= NTDDI_WINXPSP2)
394#define NX_SUPPORT_POLICY_ALWAYSOFF 0
395#define NX_SUPPORT_POLICY_ALWAYSON 1
396#define NX_SUPPORT_POLICY_OPTIN 2
397#define NX_SUPPORT_POLICY_OPTOUT 3
398#endif
399
400#endif // NTOS_MODE_USER
401
402//
403// Thread States
404//
405typedef enum _KTHREAD_STATE
406{
415#if (NTDDI_VERSION >= NTDDI_WS03)
417#endif
419
420//
421// Kernel Object Types
422//
423typedef enum _KOBJECTS
424{
452
453//
454// Adjust reasons
455//
456typedef enum _ADJUST_REASON
457{
460 AdjustBoost = 2
462
463//
464// Continue Status
465//
467{
473
474//
475// Process States
476//
477typedef enum _KPROCESS_STATE
478{
485
486//
487// NtVdmControl Classes
488//
490{
507
508#ifdef NTOS_MODE_USER
509
510//
511// APC Normal Routine
512//
513typedef VOID
515 _In_ PVOID NormalContext,
518);
519
520//
521// Timer Routine
522//
523typedef VOID
526 _In_ ULONG TimerLowValue,
527 _In_ LONG TimerHighValue
528);
529
530//
531// System Time Structure
532//
533typedef struct _KSYSTEM_TIME
534{
539
540//
541// Shared Kernel User Data
542// Keep in sync with sdk/include/xdk/ketypes.h
543//
544typedef struct _KUSER_SHARED_DATA
545{
548 volatile KSYSTEM_TIME InterruptTime; // 0x8
549 volatile KSYSTEM_TIME SystemTime; // 0x14
550 volatile KSYSTEM_TIME TimeZoneBias; // 0x20
551 USHORT ImageNumberLow; // 0x2c
552 USHORT ImageNumberHigh; // 0x2e
553 WCHAR NtSystemRoot[260]; // 0x30
554 ULONG MaxStackTraceDepth; // 0x238
555 ULONG CryptoExponent; // 0x23c
556 ULONG TimeZoneId; // 0x240
557 ULONG LargePageMinimum; // 0x244
558
559#if (NTDDI_VERSION >= NTDDI_WIN8)
560 ULONG AitSamplingValue; // 0x248
561 ULONG AppCompatFlag; // 0x24c
562 ULONGLONG RNGSeedVersion; // 0x250
563 ULONG GlobalValidationRunlevel; // 0x258
564 volatile LONG TimeZoneBiasStamp; // 0x25c
565#if (NTDDI_VERSION >= NTDDI_WIN10)
566 ULONG NtBuildNumber; // 0x260
567#else
568 ULONG Reserved2; // 0x260
569#endif
570#else
571 ULONG Reserved2[7]; // 0x248
572#endif // NTDDI_VERSION >= NTDDI_WIN8
573
576 BOOLEAN Reserved0[1]; // 0x269
577#if (NTDDI_VERSION >= NTDDI_WIN8)
579#endif
580 ULONG NtMajorVersion; // 0x26c
581 ULONG NtMinorVersion; // 0x270
583 ULONG Reserved1; // 0x2b4
584 ULONG Reserved3; // 0x2b8
585 volatile ULONG TimeSlip; // 0x2bc
587#if (NTDDI_VERSION >= NTDDI_WIN10)
588 ULONG BootId; // 0x2c4
589#else
590 ULONG AltArchitecturePad[1]; // 0x2c4
591#endif
593 ULONG SuiteMask; // 0x2d0
594 BOOLEAN KdDebuggerEnabled; // 0x2d4
595 union
596 {
597 UCHAR MitigationPolicies; // 0x2d5
598 struct
599 {
601 UCHAR SEHValidationPolicy : 2;
602 UCHAR CurDirDevicesSkippedForDlls : 2;
603 UCHAR Reserved : 2;
604 };
605 };
606#if (NTDDI_VERSION >= NTDDI_WIN10_19H1)
607 USHORT CyclesPerYield; // 0x2d6 // Win 10 19H1+
608#else
609 UCHAR Reserved6[2]; // 0x2d6
610#endif
611 volatile ULONG ActiveConsoleId; // 0x2d8
612 volatile ULONG DismountCount; // 0x2dc
613 ULONG ComPlusPackage; // 0x2e0
616 BOOLEAN SafeBootMode; // 0x2ec
617
618#if (NTDDI_VERSION == NTDDI_WIN7)
619 union
620 {
621 UCHAR TscQpcData; // 0x2ed
622 struct
623 {
624 UCHAR TscQpcEnabled:1; // 0x2ed
625 UCHAR TscQpcSpareFlag:1; // 0x2ed
626 UCHAR TscQpcShift:6; // 0x2ed
629 UCHAR TscQpcPad[2]; // 0x2ee
630#elif (NTDDI_VERSION >= NTDDI_WIN10_RS1)
631 union
632 {
633 UCHAR VirtualizationFlags; // 0x2ed
634#if defined(_ARM64_)
635 struct
636 {
637 UCHAR ArchStartedInEl2 : 1;
638 UCHAR QcSlIsSupported : 1;
639 UCHAR : 6;
640 };
641#endif
642 };
643 UCHAR Reserved12[2]; // 0x2ee
644#else
645 UCHAR Reserved12[3]; // 0x2ed
646#endif // NTDDI_VERSION == NTDDI_WIN7
647
648#if (NTDDI_VERSION >= NTDDI_VISTA)
649 union
650 {
651 ULONG SharedDataFlags; // 0x2f0
652 struct
653 {
654 ULONG DbgErrorPortPresent : 1; // 0x2f0
655 ULONG DbgElevationEnabled : 1; // 0x2f0
656 ULONG DbgVirtEnabled : 1; // 0x2f0
657 ULONG DbgInstallerDetectEnabled : 1; // 0x2f0
658#if (NTDDI_VERSION >= NTDDI_WIN8)
659 ULONG DbgLkgEnabled : 1; // 0x2f0
660#else
661 ULONG DbgSystemDllRelocated : 1; // 0x2f0
662#endif
663 ULONG DbgDynProcessorEnabled : 1; // 0x2f0
664#if (NTDDI_VERSION >= NTDDI_WIN8)
665 ULONG DbgConsoleBrokerEnabled : 1; // 0x2f0
666#else
667 ULONG DbgSEHValidationEnabled : 1; // 0x2f0
668#endif
669 ULONG DbgSecureBootEnabled : 1; // 0x2f0 Win8+
670 ULONG DbgMultiSessionSku : 1; // 0x2f0 Win 10+
671 ULONG DbgMultiUsersInSessionSku : 1; // 0x2f0 Win 10 RS1+
672 ULONG DbgStateSeparationEnabled : 1; // 0x2f0 Win 10 RS3+
673 ULONG SpareBits : 21; // 0x2f0
676#else
677 ULONG TraceLogging;
678#endif // NTDDI_VERSION >= NTDDI_VISTA
679
680 ULONG DataFlagsPad[1]; // 0x2f4
682#if (NTDDI_VERSION >= NTDDI_WIN8)
683 ULONGLONG QpcFrequency; // 0x300
684#else
685 ULONG SystemCall; // 0x300
686 ULONG SystemCallReturn; // 0x304
687#endif
688#if (NTDDI_VERSION >= NTDDI_WIN10_TH2)
689 ULONG SystemCall; // 0x308
690 ULONG SystemCallPad0; // 0x30c Renamed to Reserved2 in Vibranium R3
691 ULONGLONG SystemCallPad[2]; // 0x310
692#else
693 ULONGLONG SystemCallPad[3]; // 0x308
694#endif
695 union
696 {
697 volatile KSYSTEM_TIME TickCount; // 0x320
698 volatile ULONG64 TickCountQuad; // 0x320
699 struct
700 {
701 ULONG ReservedTickCountOverlay[3]; // 0x320
702 ULONG TickCountPad[1]; // 0x32c
705 ULONG Cookie; // 0x330
706
707#if (NTDDI_VERSION < NTDDI_VISTA)
708 ULONG Wow64SharedInformation[MAX_WOW64_SHARED_ENTRIES]; // 0x334
709#endif
710
711//
712// Windows Vista and later
713//
714#if (NTDDI_VERSION >= NTDDI_VISTA)
715
716 ULONG CookiePad[1]; // 0x334
718
719#if (NTDDI_VERSION >= NTDDI_WIN8)
720#if (NTDDI_VERSION >= NTDDI_WINBLUE)
721 ULONGLONG TimeUpdateLock; // 0x340
722#else
723 ULONGLONG TimeUpdateSequence; // 0x340
724#endif
729#if (NTDDI_VERSION >= NTDDI_WIN10)
733 ULONG EnclaveFeatureMask[4]; // 0x36c Win 10 TH2+
734 ULONG TelemetryCoverageRound; // 0x37c Win 10 RS2+
735#else // NTDDI_VERSION < NTDDI_WIN10
736 ULONG QpcSystemTimeIncrement32; // 0x368
737 ULONG QpcInterruptTimeIncrement32; // 0x36c
740#if (NTDDI_VERSION >= NTDDI_WINBLUE)
742 UCHAR Reserved8[12]; // 0x374
743#else
744 UCHAR Reserved8[14]; // 0x372
745#endif
746#endif // NTDDI_VERSION < NTDDI_WIN10
747#elif (NTDDI_VERSION >= NTDDI_VISTASP2)
748 ULONG DEPRECATED_Wow64SharedInformation[MAX_WOW64_SHARED_ENTRIES]; // 0x340
749#else
750 ULONG Wow64SharedInformation[MAX_WOW64_SHARED_ENTRIES]; // 0x340
751#endif // NTDDI_VERSION >= NTDDI_VISTA
752
753#if (NTDDI_VERSION >= NTDDI_WIN7)
754 USHORT UserModeGlobalLogger[16]; // 0x380
755#else
756 USHORT UserModeGlobalLogger[8]; // 0x380
757 ULONG HeapTracingPid[2]; // 0x390
758 ULONG CritSecTracingPid[2]; // 0x398
759#endif
760
762 ULONG LangGenerationCount; // 0x3a4 Vista SP2+
763
764#if (NTDDI_VERSION >= NTDDI_WIN8)
765 ULONGLONG Reserved4; // 0x3a8
766#elif (NTDDI_VERSION >= NTDDI_WIN7)
767 ULONGLONG Reserved5; // 0x3a8
768#else
769 union
770 {
772 ULONGLONG AffinityPad; // 0x3a8
773 };
774#endif
775
776 volatile ULONGLONG InterruptTimeBias; // 0x3b0
777#endif // NTDDI_VERSION >= NTDDI_VISTA
778
779//
780// Windows 7 and later
781//
782#if (NTDDI_VERSION >= NTDDI_WIN7)
783 volatile ULONGLONG QpcBias; // 0x3b8 // Win7: TscQpcBias
784 /* volatile */ ULONG ActiveProcessorCount; // 0x3c0 // not volatile since Win 8.1 Update 1
785
786#if (NTDDI_VERSION >= NTDDI_WIN8)
787 volatile UCHAR ActiveGroupCount; // 0x3c4
788 UCHAR Reserved9; // 0x3c5
789 union
790 {
791 USHORT QpcData; // 0x3c6
792 struct
793 {
794 volatile UCHAR QpcBypassEnabled; // 0x3c6
795 UCHAR QpcShift; // 0x3c7
796 };
797 };
801#else
802 USHORT ActiveGroupCount; // 0x3c4
803 USHORT Reserved4; // 0x3c6
804 volatile ULONG AitSamplingValue; // 0x3c8
805 volatile ULONG AppCompatFlag; // 0x3cc
806 ULONGLONG SystemDllNativeRelocation; // 0x3d0 deprecated in Win7 SP2
807 ULONG SystemDllWowRelocation; // 0x3d8 deprecated in Win7 SP2
808 ULONG XStatePad[1]; // 0x3dc
810#endif // NTDDI_VERSION >= NTDDI_WIN8
811#endif // NTDDI_VERSION >= NTDDI_WIN7
812
813//
814// Windows 10 Vibranium and later
815//
816#if (NTDDI_VERSION >= NTDDI_WIN10_VB)
817 KSYSTEM_TIME FeatureConfigurationChangeStamp; // 0x710 // Win 11: 0x720
818 ULONG Spare; // 0x71c // Win 11: 0x72c
819#endif // NTDDI_VERSION >= NTDDI_WIN10_VB
820
821//
822// Windows 11 Nickel and later
823//
824#if (NTDDI_VERSION >= NTDDI_WIN11_NI)
825 ULONG64 UserPointerAuthMask; // 0x730
826#endif // NTDDI_VERSION >= NTDDI_WIN11_NI
827
828#if (NTDDI_VERSION < NTDDI_WIN7) && defined(__REACTOS__)
830#endif
832
833//
834// VDM Structures
835//
836#include "pshpack1.h"
837typedef struct _VdmVirtualIca
838{
839 LONG ica_count[8];
840 LONG ica_int_line;
841 LONG ica_cpu_int;
842 USHORT ica_base;
843 USHORT ica_hipiri;
844 USHORT ica_mode;
845 UCHAR ica_master;
846 UCHAR ica_irr;
847 UCHAR ica_isr;
848 UCHAR ica_imr;
849 UCHAR ica_ssr;
850} VDMVIRTUALICA, *PVDMVIRTUALICA;
851#include "poppack.h"
852
853typedef struct _VdmIcaUserData
854{
855 PVOID pIcaLock;
856 PVDMVIRTUALICA pIcaMaster;
857 PVDMVIRTUALICA pIcaSlave;
858 PULONG pDelayIrq;
859 PULONG pUndelayIrq;
860 PULONG pDelayIret;
861 PULONG pIretHooked;
862 PULONG pAddrIretBopTable;
863 PHANDLE phWowIdleEvent;
864 PLARGE_INTEGER pIcaTimeout;
865 PHANDLE phMainThreadSuspended;
866} VDMICAUSERDATA, *PVDMICAUSERDATA;
867
868typedef struct _VDM_INITIALIZE_DATA
869{
870 PVOID TrapcHandler;
871 PVDMICAUSERDATA IcaUserData;
872} VDM_INITIALIZE_DATA, *PVDM_INITIALIZE_DATA;
873
874#else
875
876//
877// System Thread Start Routine
878//
879typedef
883 PVOID StartContext
884);
885
886#ifndef _NTSYSTEM_
887typedef VOID
889 IN PVOID NormalContext OPTIONAL,
892
893typedef VOID
895 IN struct _KAPC *Apc);
896
897typedef VOID
899 IN struct _KAPC *Apc,
900 IN OUT PKNORMAL_ROUTINE *NormalRoutine OPTIONAL,
904#endif
905
906//
907// APC Environment Types
908//
910{
916
918{
919#if (NTDDI_VERSION >= NTDDI_LONGHORN) || defined(_M_ARM) || defined(_M_AMD64)
921#endif
925
926typedef struct _KTIMER_TABLE
927{
931
932typedef struct _KDPC_LIST
933{
937
938typedef struct _SYNCH_COUNTERS
939{
987
988//
989// PRCB DPC Data
990//
991typedef struct _KDPC_DATA
992{
993#if (NTDDI_VERSION >= NTDDI_LONGHORN)
995#else
996 LIST_ENTRY DpcListHead;
997#endif
999#if defined(_M_AMD64) || defined(_M_ARM)
1000 volatile LONG DpcQueueDepth;
1001#else
1003#endif
1005#if (NTDDI_VERSION >= NTDDI_LONGHORN) || defined(_M_ARM)
1007#endif
1009
1010//
1011// Per-Processor Lookaside List
1012//
1014{
1018
1019//
1020// Architectural Types
1021//
1022#include <arch/ketypes.h>
1023
1024//
1025// Kernel Memory Node
1026//
1027typedef struct _KNODE
1028{
1035 struct _flags {
1043
1044//
1045// Structure for Get/SetContext APC
1046//
1047typedef struct _GETSETCONTEXT
1048{
1054
1055//
1056// Kernel Profile Object
1057//
1058typedef struct _KPROFILE
1059{
1073
1074//
1075// Kernel Interrupt Object
1076//
1077typedef struct _KINTERRUPT
1078{
1083#if (NTDDI_VERSION >= NTDDI_LONGHORN)
1086#endif
1100#if (NTDDI_VERSION >= NTDDI_LONGHORN)
1102#endif
1105#if (NTDDI_VERSION >= NTDDI_LONGHORN)
1107#endif
1108#ifdef _M_AMD64
1109 PKTRAP_FRAME TrapFrame;
1111#endif
1114
1115//
1116// Kernel Event Pair Object
1117//
1118typedef struct _KEVENT_PAIR
1119{
1125
1126//
1127// Kernel No Execute Options
1128//
1129typedef struct _KEXECUTE_OPTIONS
1130{
1139
1140#if (NTDDI_VERSION >= NTDDI_WIN7)
1142{
1144 struct
1145 {
1153 };
1155
1156typedef struct _COUNTER_READING
1157{
1163
1164typedef struct _KTHREAD_COUNTERS
1165{
1167 struct _THREAD_PERFORMANCE_DATA* UserData;
1174#endif
1175
1177#if (NTDDI_VERSION >= NTDDI_WIN8)
1178typedef struct _RTL_RB_TREE
1179{
1183#endif
1184
1185#if (NTDDI_VERSION >= NTDDI_WINBLUE)
1187{
1188 union
1189 {
1190 struct
1191 {
1192#if (NTDDI_VERSION >= NTDDI_WIN10) // since 6.4.9841.0
1194#else
1195 ULONG_PTR Waiting : 1;
1196#endif
1198 ULONG_PTR Reserved : (8 * sizeof(PVOID)) - 3; // previously Spare
1200 };
1202 };
1203 union
1204 {
1206 struct
1207 {
1209#ifdef _WIN64
1210 ULONG SessionPad;
1211#endif
1212 };
1213 };
1215
1216typedef struct _KLOCK_ENTRY
1217{
1218 union
1219 {
1222 };
1223#if (NTDDI_VERSION >= NTDDI_WIN10)
1224 union
1225 {
1227 struct
1228 {
1230 union
1231 {
1233 struct
1234 {
1237 };
1238 };
1239 union
1240 {
1243 };
1244 union
1245 {
1247 struct
1248 {
1251 UCHAR IoQoSWaiter : 1; // since TH2
1253 };
1254 };
1255 };
1256 struct
1257 {
1260 };
1261 };
1262#ifdef _WIN64
1263 ULONG SpareFlags;
1264#endif
1265#else
1266 union
1267 {
1268 PVOID ThreadUnsafe;
1269 struct
1270 {
1271 volatile UCHAR HeadNodeByte;
1272 UCHAR Reserved1[2];
1273 volatile UCHAR AcquiredByte;
1274 };
1275 };
1276#endif
1277
1278 union
1279 {
1282 struct
1283 {
1284#if (NTDDI_VERSION >= NTDDI_WIN10)
1286#else
1287 volatile UCHAR WaitingAndBusyByte;
1288#endif
1289 UCHAR Reserved[sizeof(PVOID) - 2];
1291 union
1292 {
1294 struct
1295 {
1297#ifdef _WIN64
1298 ULONG SessionPad;
1299#endif
1300 };
1301 };
1302 };
1303 };
1304 union
1305 {
1306 struct
1307 {
1310 };
1312 };
1314 union
1315 {
1316#if _WIN64
1317 ULONG AllBoosts : 17;
1318#else
1320#endif
1321 struct
1322 {
1323 struct
1324 {
1327 };
1328 struct
1329 {
1333 };
1334 };
1335 };
1336#if _WIN64
1337 ULONG SparePad;
1338#endif
1340
1341#endif
1342
1343//
1344// Kernel Thread (KTHREAD)
1345//
1346#if (NTDDI_VERSION < NTDDI_WIN8)
1347
1348typedef struct _KTHREAD
1349{
1351#if (NTDDI_VERSION >= NTDDI_LONGHORN) // [
1353#ifndef _WIN64 // [
1355#endif // ]
1357#else // ][
1359#endif // ]
1361 ULONG_PTR StackLimit; // FIXME: PVOID
1364#if (NTDDI_VERSION >= NTDDI_WIN7) // [
1367 BOOLEAN Alerted[2];
1368 union
1369 {
1370 struct
1371 {
1372 ULONG KernelStackResident:1;
1375 ULONG WaitNext:1;
1377 ULONG Alertable:1;
1378 ULONG GdiFlushActive:1;
1385 ULONG Reserved:19;
1386 };
1388 };
1389#endif // ]
1390 union
1391 {
1393 struct
1394 {
1395 UCHAR ApcStateFill[FIELD_OFFSET(KAPC_STATE, UserApcPending) + 1];
1396#if (NTDDI_VERSION >= NTDDI_LONGHORN) // [
1398#if (NTDDI_VERSION >= NTDDI_WIN7) // [
1399 /* On x86, the following members "fall out" of the union */
1400 volatile ULONG NextProcessor;
1401 volatile ULONG DeferredProcessor;
1402#else // ][
1403 /* On x86, the following members "fall out" of the union */
1404 volatile USHORT NextProcessor;
1405 volatile USHORT DeferredProcessor;
1406#endif // ]
1407#else // ][
1409 /* On x86, the following members "fall out" of the union */
1410 volatile UCHAR NextProcessor;
1411 volatile UCHAR DeferredProcessor;
1414#endif // ]
1415 };
1416 };
1417 KSPIN_LOCK ApcQueueLock;
1418#if !defined(_M_AMD64) && !defined(_M_ARM64) // [
1420 volatile UCHAR State;
1424#endif // ]
1426#if (NTDDI_VERSION >= NTDDI_WIN7) // [
1428#else // ][
1429 union
1430 {
1433 };
1434#if (NTDDI_VERSION >= NTDDI_LONGHORN) // [
1435 union
1436 {
1437 struct
1438 {
1439 ULONG KernelStackResident:1;
1442 ULONG WaitNext:1;
1444 ULONG Alertable:1;
1445 ULONG GdiFlushActive:1;
1446 ULONG Reserved:25;
1447 };
1449 };
1450#else // ][
1453#endif // ]
1455#if (NTDDI_VERSION < NTDDI_LONGHORN)
1458#endif // ]
1459 volatile UCHAR SwapBusy;
1461#endif // ]
1462 union
1463 {
1466 };
1467 PKQUEUE Queue;
1468#if !defined(_M_AMD64) && !defined(_M_ARM64) // [
1470 union
1471 {
1472 struct
1473 {
1476 };
1478 };
1479#endif // ]
1480 struct _TEB *Teb;
1481
1482#if (NTDDI_VERSION >= NTDDI_WIN7) // [
1483 KTIMER Timer;
1484#else // ][
1485 union
1486 {
1487 KTIMER Timer;
1488 struct
1489 {
1490 UCHAR TimerFill[FIELD_OFFSET(KTIMER, Period) + sizeof(LONG)];
1491#if !defined(_WIN64) // [
1492 };
1493 };
1494#endif // ]
1495#endif // ]
1496 union
1497 {
1498 struct
1499 {
1502#if (NTDDI_VERSION >= NTDDI_LONGHORN) // [
1503 ULONG EtwStackTraceApc1Inserted:1;
1504 ULONG EtwStackTraceApc2Inserted:1;
1505 ULONG CycleChargePending:1;
1509 ULONG GuiThread:1;
1510 ULONG ReservedFlags:23;
1511#else // ][
1512 LONG ReservedFlags:30;
1513#endif // ]
1514 };
1516 };
1517#if defined(_WIN64) && (NTDDI_VERSION < NTDDI_WIN7) // [
1518 };
1519 };
1520#endif // ]
1521#if (NTDDI_VERSION >= NTDDI_WIN7) // [
1522#if defined(_WIN64) // [
1523 ULONG Spare0;
1524#else // ][
1526#endif // ]
1527#endif // ]
1528 union
1529 {
1531#if (NTDDI_VERSION < NTDDI_WIN7) // [
1532 struct
1533 {
1534 UCHAR WaitBlockFill0[FIELD_OFFSET(KWAIT_BLOCK, SpareByte)]; // 32bit = 23, 64bit = 43
1535#if (NTDDI_VERSION >= NTDDI_LONGHORN) // [
1536 UCHAR IdealProcessor;
1537#else // ][
1538 BOOLEAN SystemAffinityActive;
1539#endif // ]
1540 };
1541 struct
1542 {
1543 UCHAR WaitBlockFill1[1 * sizeof(KWAIT_BLOCK) + FIELD_OFFSET(KWAIT_BLOCK, SpareByte)]; // 47 / 91
1545 };
1546 struct
1547 {
1548 UCHAR WaitBlockFill2[2 * sizeof(KWAIT_BLOCK) + FIELD_OFFSET(KWAIT_BLOCK, SpareByte)]; // 71 / 139
1549 UCHAR ResourceIndex;
1550 };
1551 struct
1552 {
1553 UCHAR WaitBlockFill3[3 * sizeof(KWAIT_BLOCK) + FIELD_OFFSET(KWAIT_BLOCK, SpareByte)]; // 95 / 187
1554 UCHAR LargeStack;
1555 };
1556#endif // ]
1557#ifdef _WIN64 // [
1558 struct
1559 {
1560 UCHAR WaitBlockFill4[FIELD_OFFSET(KWAIT_BLOCK, SpareLong)];
1561 ULONG ContextSwitches;
1562 };
1563 struct
1564 {
1565 UCHAR WaitBlockFill5[1 * sizeof(KWAIT_BLOCK) + FIELD_OFFSET(KWAIT_BLOCK, SpareLong)];
1566 UCHAR State;
1567 UCHAR NpxState;
1568 UCHAR WaitIrql;
1569 CHAR WaitMode;
1570 };
1571 struct
1572 {
1573 UCHAR WaitBlockFill6[2 * sizeof(KWAIT_BLOCK) + FIELD_OFFSET(KWAIT_BLOCK, SpareLong)];
1574 ULONG WaitTime;
1575 };
1576#if (NTDDI_VERSION >= NTDDI_WIN7) // [
1577 struct
1578 {
1579 UCHAR WaitBlockFill7[168];
1580 PVOID TebMappedLowVa;
1581 struct _UMS_CONTROL_BLOCK* Ucb;
1582 };
1583#endif // ]
1584 struct
1585 {
1586#if (NTDDI_VERSION >= NTDDI_WIN7) // [
1587 UCHAR WaitBlockFill8[188];
1588#else // ][
1589 UCHAR WaitBlockFill7[3 * sizeof(KWAIT_BLOCK) + FIELD_OFFSET(KWAIT_BLOCK, SpareLong)];
1590#endif // ]
1591 union
1592 {
1593 struct
1594 {
1595 SHORT KernelApcDisable;
1596 SHORT SpecialApcDisable;
1597 };
1598 ULONG CombinedApcDisable;
1599 };
1600 };
1601#endif // ]
1602 };
1603 LIST_ENTRY QueueListEntry;
1604 PKTRAP_FRAME TrapFrame;
1605#if (NTDDI_VERSION >= NTDDI_LONGHORN) // [
1606 PVOID FirstArgument;
1607 union
1608 {
1609 PVOID CallbackStack;
1610 ULONG_PTR CallbackDepth;
1611 };
1612#else // ][
1613 PVOID CallbackStack;
1614#endif // ]
1615#if (NTDDI_VERSION < NTDDI_LONGHORN) || ((NTDDI_VERSION < NTDDI_WIN7) && !defined(_WIN64)) // [
1617#endif // ]
1618#if (NTDDI_VERSION < NTDDI_LONGHORN) && defined(_WIN64) // [
1619 ULONG KernelLimit;
1620#endif // ]
1621 UCHAR ApcStateIndex;
1622#if (NTDDI_VERSION < NTDDI_LONGHORN) // [
1623 UCHAR IdealProcessor;
1624 BOOLEAN Preempted;
1625 BOOLEAN ProcessReadyQueue;
1626#ifdef _WIN64 // [
1627 PVOID Win32kTable;
1628 ULONG Win32kLimit;
1629#endif // ]
1630 BOOLEAN KernelStackResident;
1631#endif // ]
1632 SCHAR BasePriority;
1633 SCHAR PriorityDecrement;
1634#if (NTDDI_VERSION >= NTDDI_LONGHORN) // [
1635 BOOLEAN Preempted;
1636 UCHAR AdjustReason;
1637 CHAR AdjustIncrement;
1638#if (NTDDI_VERSION >= NTDDI_WIN7)
1640#else
1641 UCHAR Spare01;
1642#endif
1643#endif // ]
1644 CHAR Saturation;
1645#if (NTDDI_VERSION >= NTDDI_LONGHORN) // [
1646 ULONG SystemCallNumber;
1647#if (NTDDI_VERSION >= NTDDI_WIN7) // [
1648 ULONG FreezeCount;
1649#else // ][
1650 ULONG Spare02;
1651#endif // ]
1652#endif // ]
1653#if (NTDDI_VERSION >= NTDDI_WIN7) // [
1654 GROUP_AFFINITY UserAffinity;
1655 struct _KPROCESS *Process;
1657 ULONG IdealProcessor;
1658 ULONG UserIdealProcessor;
1659#else // ][
1660 KAFFINITY UserAffinity;
1661 struct _KPROCESS *Process;
1663#endif // ]
1664 PKAPC_STATE ApcStatePointer[2];
1665 union
1666 {
1667 KAPC_STATE SavedApcState;
1668 struct
1669 {
1670 UCHAR SavedApcStateFill[FIELD_OFFSET(KAPC_STATE, UserApcPending) + 1];
1671#if (NTDDI_VERSION >= NTDDI_WIN7) // [
1672 UCHAR WaitReason;
1673#else // ][
1674 CCHAR FreezeCount;
1675#endif // ]
1676#ifndef _WIN64 // [
1677 };
1678 };
1679#endif // ]
1680 CCHAR SuspendCount;
1681#if (NTDDI_VERSION >= NTDDI_WIN7) // [
1682 CCHAR Spare1;
1683#else // ][
1684 UCHAR UserIdealProcessor;
1685#endif // ]
1686#if (NTDDI_VERSION >= NTDDI_WIN7) // [
1687#elif (NTDDI_VERSION >= NTDDI_LONGHORN) // ][
1688 UCHAR Spare03;
1689#else // ][
1690 UCHAR CalloutActive;
1691#endif // ]
1692#ifdef _WIN64 // [
1693 UCHAR CodePatchInProgress;
1694 };
1695 };
1696#endif // ]
1697#if defined(_M_IX86) // [
1698#if (NTDDI_VERSION >= NTDDI_LONGHORN) // [
1699 UCHAR OtherPlatformFill;
1700#else // ][
1701 UCHAR Iopl;
1702#endif // ]
1703#endif // ]
1704 PVOID Win32Thread;
1705 PVOID StackBase;
1706 union
1707 {
1708 KAPC SuspendApc;
1709 struct
1710 {
1711 UCHAR SuspendApcFill0[1];
1712#if (NTDDI_VERSION >= NTDDI_WIN7) // [
1713 UCHAR ResourceIndex;
1714#elif (NTDDI_VERSION >= NTDDI_LONGHORN) // ][
1715 CHAR Spare04;
1716#else // ][
1717 SCHAR Quantum;
1718#endif // ]
1719 };
1720 struct
1721 {
1722 UCHAR SuspendApcFill1[3];
1724 };
1725 struct
1726 {
1727 UCHAR SuspendApcFill2[4];
1729 };
1730 struct
1731 {
1732 UCHAR SuspendApcFill3[FIELD_OFFSET(KAPC, SystemArgument1)];
1733#if (NTDDI_VERSION >= NTDDI_LONGHORN)
1734 PKPRCB WaitPrcb;
1735#else
1736 PVOID TlsArray;
1737#endif
1738 };
1739 struct
1740 {
1741 UCHAR SuspendApcFill4[FIELD_OFFSET(KAPC, SystemArgument2)]; // 40 / 72
1742 PVOID LegoData;
1743 };
1744 struct
1745 {
1746 UCHAR SuspendApcFill5[FIELD_OFFSET(KAPC, Inserted) + 1]; // 47 / 83
1747#if (NTDDI_VERSION >= NTDDI_WIN7) // [
1748 UCHAR LargeStack;
1749#else // ][
1751#endif // ]
1752#ifdef _WIN64 // [
1754#endif // ]
1755 };
1756 };
1757#ifndef _WIN64 // [
1759#endif // ]
1760 union
1761 {
1762 KSEMAPHORE SuspendSemaphore;
1763 struct
1764 {
1765 UCHAR SuspendSemaphorefill[FIELD_OFFSET(KSEMAPHORE, Limit) + 4]; // 20 / 28
1766#ifdef _WIN64 // [
1767 ULONG SListFaultCount;
1768#endif // ]
1769 };
1770 };
1771#ifndef _WIN64 // [
1772 ULONG SListFaultCount;
1773#endif // ]
1774 LIST_ENTRY ThreadListEntry;
1775#if (NTDDI_VERSION >= NTDDI_LONGHORN) // [
1776 LIST_ENTRY MutantListHead;
1777#endif // ]
1778 PVOID SListFaultAddress;
1779#ifdef _M_AMD64 // [
1780 LONG64 ReadOperationCount;
1781 LONG64 WriteOperationCount;
1782 LONG64 OtherOperationCount;
1783 LONG64 ReadTransferCount;
1784 LONG64 WriteTransferCount;
1785 LONG64 OtherTransferCount;
1786#endif // ]
1787#if (NTDDI_VERSION >= NTDDI_WIN7) // [
1788 PKTHREAD_COUNTERS ThreadCounters;
1789 PXSTATE_SAVE XStateSave;
1790#elif (NTDDI_VERSION >= NTDDI_LONGHORN) // ][
1791 PVOID MdlForLockedTeb;
1792#endif // ]
1793#if defined(__REACTOS__) && defined(_M_AMD64) // HACK!
1794 XSAVE_FORMAT* StateSaveArea;
1795#endif
1796} KTHREAD;
1797
1798#else // not (NTDDI_VERSION < NTDDI_WIN8)
1799
1800#if defined(_WIN64) && (NTDDI_VERSION < 0x06032580) // since WIN 8.1 Update1 6.3.9600.16384
1801#define NUMBER_OF_LOCK_ENTRIES 5
1802#else
1803#define NUMBER_OF_LOCK_ENTRIES 6
1804#endif
1805
1806typedef struct _KTHREAD
1807{
1812 volatile VOID *StackLimit;
1816#ifndef _WIN64
1819#endif
1824 struct _KSCHEDULING_GROUP* SchedulingGroup;
1828
1829 union
1830 {
1831 struct
1832 {
1833#if (NTDDI_VERSION < NTDDI_WIN10)
1834 ULONG KernelStackResident : 1;
1835#else
1837#endif
1839#if (NTDDI_VERSION < NTDDI_WIN10TH2)
1841#endif
1846#if (NTDDI_VERSION < NTDDI_WIN81)
1847 ULONG CodePatchInProgress : 1;
1848#endif
1863 };
1865 };
1866
1867 union
1868 {
1869 struct
1870 {
1885#if (NTDDI_VERSION >= 0x060324D7) // since 6.3.9431.0
1886 ULONG TerminationApcRequest : 1;
1887#endif
1888#if (NTDDI_VERSION >= 0x06032580) // since 6.3.9600.16384
1889 ULONG AutoBoostEntriesExhausted : 1;
1890#endif
1891#if (NTDDI_VERSION >= 0x06032580) // since 6.3.9600.17031
1892 ULONG KernelStackResident : 1;
1893#endif
1894#if (NTDDI_VERSION >= NTDDI_WIN10)
1898#endif
1900#if (NTDDI_VERSION < NTDDI_WIN10)
1901 ULONG ReservedFlags : 10;
1902#endif
1903 };
1905 };
1906
1907#if (NTDDI_VERSION >= NTDDI_WIN10)
1908 volatile UCHAR Tag;
1913#else
1914 ULONG Spare0;
1915#endif
1917#ifdef _WIN64
1918 ULONG Spare1; // Win 10: Spare10
1919#endif
1922
1923 union
1924 {
1926 struct
1927 {
1928 UCHAR ApcStateFill[RTL_SIZEOF_THROUGH_FIELD(KAPC_STATE, UserApcPending)]; // 32bit: 23/0x17, 64bit: 43/0x2B
1931 };
1932 };
1933
1934#ifndef _WIN64
1936 volatile UCHAR State;
1937#if (NTDDI_VERSION >= NTDDI_WIN10) // since 10.0.10074.0
1939#else
1940 CHAR NpxState;
1941#endif
1944#endif
1945
1948 union
1949 {
1952 };
1955#if (NTDDI_VERSION >= NTDDI_WIN8 /* 0x060223F0 */) // since 6.2.9200.16384
1957#endif
1959
1960 union
1961 {
1963#ifdef _WIN64
1964 struct
1965 {
1966 UCHAR WaitBlockFill4[FIELD_OFFSET(KWAIT_BLOCK, SpareLong)]; // 32bit: -, 64bit: 20/0x14
1968 };
1969 struct
1970 {
1971 UCHAR WaitBlockFill5[1 * sizeof(KWAIT_BLOCK) + FIELD_OFFSET(KWAIT_BLOCK, SpareLong)]; // 32bit: -, 64bit: 68/0x44
1972 UCHAR State;
1973#if (NTDDI_VERSION >= NTDDI_WIN10)
1974 CHAR Spare13;
1975#else
1976 CHAR NpxState;
1977#endif
1979 CHAR WaitMode;
1980 };
1981 struct
1982 {
1983 UCHAR WaitBlockFill6[2 * sizeof(KWAIT_BLOCK) + FIELD_OFFSET(KWAIT_BLOCK, SpareLong)]; // 32bit: -, 64bit: 116/0x74
1985 };
1986 struct
1987 {
1988 UCHAR WaitBlockFill7[3 * sizeof(KWAIT_BLOCK) + FIELD_OFFSET(KWAIT_BLOCK, SpareLong)]; // 32bit: -, 64bit: 164/0xA4
1989 union
1990 {
1991 struct
1992 {
1995 };
1997 };
1998 };
1999#endif
2000 struct
2001 {
2002 UCHAR WaitBlockFill8[FIELD_OFFSET(KWAIT_BLOCK, SparePtr)]; // 32bit: 20/0x14, 64bit: 40/0x28
2004 };
2005 struct
2006 {
2007 UCHAR WaitBlockFill9[1 * sizeof(KWAIT_BLOCK) + FIELD_OFFSET(KWAIT_BLOCK, SparePtr)]; // 32bit: 44/0x2C, 64bit: 88/0x58
2009 };
2010 struct
2011 {
2012 UCHAR WaitBlockFill10[2 * sizeof(KWAIT_BLOCK) + FIELD_OFFSET(KWAIT_BLOCK, SparePtr)]; // 32bit: 68/0x44, 64bit: 136/0x88
2014 };
2015 struct
2016 {
2017 UCHAR WaitBlockFill11[3 * sizeof(KWAIT_BLOCK) + FIELD_OFFSET(KWAIT_BLOCK, Object)]; // 32bit: 88/0x58, 64bit: 176/0xB0
2018#ifdef _WIN64
2019 struct _UMS_CONTROL_BLOCK* Ucb;
2020 struct _KUMS_CONTEXT_HEADER* Uch;
2021#else
2023 union
2024 {
2025 struct
2026 {
2029 };
2031 };
2032#endif
2033 };
2034 };
2035
2036#ifdef _WIN64
2037 PVOID TebMappedLowVa;
2038#endif
2040#if (NTDDI_VERSION >= 0x060223F0) // since 6.2.9200.16384
2041 union
2042 {
2044 struct
2045 {
2046 ULONG NextProcessorNumber : 31;
2047 ULONG SharedReadyQueue : 1;
2048 };
2049 };
2050 LONG QueuePriority;
2051#else
2054#endif
2056
2057 union
2058 {
2060 struct
2061 {
2062 UCHAR UserAffinityFill[FIELD_OFFSET(GROUP_AFFINITY, Reserved)]; // 32bit: 6/0x6, 64bit: 10/0x0A
2065 union
2066 {
2068 struct
2069 {
2072 };
2073 };
2077 };
2078 };
2079
2080#if (NTDDI_VERSION >= NTDDI_WIN10) // since 10.0.10240.16384
2082#endif
2083 union
2084 {
2086 struct
2087 {
2088 UCHAR AffinityFill[FIELD_OFFSET(GROUP_AFFINITY, Reserved)]; // 32bit: 6/0x6, 64bit: 10/0x0A
2092 };
2093 };
2094
2095#if (NTDDI_VERSION >= NTDDI_WIN10) // since 10.0.10240.16384
2096#ifdef _WIN64
2098#else
2100#endif
2101#else
2102 PKAPC_STATE ApcStatePointer[2];
2103#endif
2104
2105 union
2106 {
2108 struct
2109 {
2110 UCHAR SavedApcStateFill[FIELD_OFFSET(KAPC_STATE, UserApcPending) + 1]; // 32bit: 23/0x17, 64bit: 43/0x2B
2115 };
2116 };
2117
2118 union
2119 {
2121 struct
2122 {
2123 UCHAR SchedulerApcFill0[FIELD_OFFSET(KAPC, SpareByte0)]; // 32bit: 1/0x01, 64bit: 1/0x01
2125 };
2126 struct
2127 {
2128 UCHAR SchedulerApcFill1[FIELD_OFFSET(KAPC, SpareByte1)]; // 32bit: 3/0x03, 64bit: 3/0x03
2130 };
2131 struct
2132 {
2133 UCHAR SchedulerApcFill2[FIELD_OFFSET(KAPC, SpareLong0)]; // 32bit: 4/0x04, 64bit: 4/0x04
2135 };
2136 struct
2137 {
2140 };
2141 struct
2142 {
2145 };
2146 struct
2147 {
2148 UCHAR SchedulerApcFill5[FIELD_OFFSET(KAPC, Inserted) + 1]; // 32 bit:, 64 bit: 83/0x53
2151 };
2152 };
2153
2157
2158#if (NTDDI_VERSION >= NTDDI_WIN10)
2162#if _WIN64
2163 ULONG SecureThreadCookie;
2164#endif
2165#elif (NTDDI_VERSION >= NTDDI_WINBLUE) // 6.3.9431.0
2166 SINGLE_LIST_ENTRY LockEntriesFreeList;
2167#endif
2168
2169#if (NTDDI_VERSION >= NTDDI_WINBLUE /* 0x06032580 */) // since 6.3.9600.16384
2176 #if (NTDDI_VERSION >= NTDDI_WIN10_RS1)
2178 #endif
2179
2180 #if (NTDDI_VERSION >= NTDDI_WIN10) // since 10.0.10240.16384
2182 #else
2183 volatile SHORT AbReferenceCount;
2184 #endif
2185 #if (NTDDI_VERSION >= 0x06040000) // since 6.4.9841.0
2186 UCHAR AbOrphanedEntrySummary;
2187 UCHAR AbOwnedEntryCount;
2188 #else
2191 #endif
2193 union
2194 {
2196 struct
2197 {
2200 };
2201 };
2202#endif
2203
2204#if _WIN64
2205 LONG64 ReadOperationCount;
2206 LONG64 WriteOperationCount;
2207 LONG64 OtherOperationCount;
2208 LONG64 ReadTransferCount;
2209 LONG64 WriteTransferCount;
2210 LONG64 OtherTransferCount;
2211#endif
2212#if (NTDDI_VERSION >= NTDDI_WIN10) // since 10.0.10041.0
2213 struct _KSCB *QueuedScb;
2214#ifndef _WIN64
2216#endif
2217#endif
2219
2220#endif
2221
2222
2223#define ASSERT_THREAD(object) \
2224 ASSERT((((object)->Header.Type & KOBJECT_TYPE_MASK) == ThreadObject))
2225
2226//
2227// Kernel Process (KPROCESS)
2228//
2229typedef struct _KPROCESS
2230{
2233#if (NTDDI_VERSION >= NTDDI_LONGHORN)
2236#else
2238#endif
2239#if defined(_M_IX86)
2240 KGDTENTRY LdtDescriptor;
2241 KIDTENTRY Int21Descriptor;
2242#endif
2244#if defined(_M_IX86)
2245 UCHAR Iopl;
2246 UCHAR Unused;
2247#endif
2257 union
2258 {
2259 struct
2260 {
2265 };
2267 };
2275 union
2276 {
2279 };
2282#if (NTDDI_VERSION >= NTDDI_LONGHORN) // [
2284#endif // ]
2286
2287#define ASSERT_PROCESS(object) \
2288 ASSERT((((object)->Header.Type & KOBJECT_TYPE_MASK) == ProcessObject))
2289
2290//
2291// System Service Table Descriptor
2292//
2294{
2298#if defined(_IA64_)
2299 LONG TableBaseGpOffset;
2300#endif
2303
2304#if (NTDDI_VERSION >= NTDDI_WIN8)
2305//
2306// Entropy Timing State
2307//
2309{
2316
2317//
2318// Constants from ks386.inc, ksamd64.inc and ksarm.h
2319//
2320#define KENTROPY_TIMING_INTERRUPTS_PER_BUFFER 0x400
2321#define KENTROPY_TIMING_BUFFER_MASK 0x7ff
2322#define KENTROPY_TIMING_ANALYSIS 0x0
2323
2324#endif /* (NTDDI_VERSION >= NTDDI_WIN8) */
2325
2326//
2327// Exported Loader Parameter Block
2328//
2330
2331//
2332// Exported Hardware Data
2333//
2341
2342//
2343// Exported System Service Descriptor Tables
2344//
2347
2348#endif // !NTOS_MODE_USER
2349
2350#endif // _KETYPES_H
_In_ PVOID _In_ ULONG _Out_ PVOID _In_ ULONG _Inout_ PULONG _In_ KPROCESSOR_MODE PreviousMode
#define VOID
Definition: acefi.h:82
unsigned char BOOLEAN
Definition: actypes.h:127
static SERVICE_TABLE_ENTRYW ServiceTable[2]
Definition: eventlog.c:24
#define NTSYSAPI
Definition: ntoskrnl.h:12
Definition: bufpool.h:45
ULONG_PTR KAFFINITY
Definition: compat.h:85
#define DECLSPEC_ALIGN(x)
Definition: corecrt.h:141
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
_HARDWARE_COUNTER_TYPE
Definition: pstypes.h:123
#define Unused(x)
Definition: atlwin.h:28
unsigned __int64 ULONG64
Definition: imports.h:198
__int3264 LONG_PTR
Definition: mstsclib_h.h:276
#define KernelMode
Definition: asm.h:38
#define UserMode
Definition: asm.h:39
#define NUMBER_OF_LOCK_ENTRIES
Definition: ketypes.h:1803
struct _KINTERRUPT KINTERRUPT
VOID(NTAPI * PKSYSTEM_ROUTINE)(PKSTART_ROUTINE StartRoutine, PVOID StartContext)
Definition: ketypes.h:881
ULONG NTSYSAPI KeIcacheFlushCount
Definition: cpu.c:19
struct _KNODE * PKNODE
_KPROCESS_STATE
Definition: ketypes.h:478
@ ProcessOutOfMemory
Definition: ketypes.h:480
@ ProcessInMemory
Definition: ketypes.h:479
@ ProcessOutSwap
Definition: ketypes.h:483
@ ProcessInSwap
Definition: ketypes.h:482
@ ProcessInTransition
Definition: ketypes.h:481
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:424
@ ApcObject
Definition: ketypes.h:443
@ Spare3Object
Definition: ketypes.h:436
@ ProfileObject
Definition: ketypes.h:448
@ EventSynchronizationObject
Definition: ketypes.h:426
@ TimerNotificationObject
Definition: ketypes.h:433
@ Spare4Object
Definition: ketypes.h:437
@ DeviceQueueObject
Definition: ketypes.h:445
@ TimerSynchronizationObject
Definition: ketypes.h:434
@ Spare5Object
Definition: ketypes.h:438
@ Spare2Object
Definition: ketypes.h:435
@ MaximumKernelObject
Definition: ketypes.h:450
@ QueueObject
Definition: ketypes.h:429
@ Spare8Object
Definition: ketypes.h:441
@ Spare6Object
Definition: ketypes.h:439
@ ProcessObject
Definition: ketypes.h:428
@ SemaphoreObject
Definition: ketypes.h:430
@ DpcObject
Definition: ketypes.h:444
@ EventNotificationObject
Definition: ketypes.h:425
@ GateObject
Definition: ketypes.h:432
@ ThreadObject
Definition: ketypes.h:431
@ ThreadedDpcObject
Definition: ketypes.h:449
@ Spare7Object
Definition: ketypes.h:440
@ MutantObject
Definition: ketypes.h:427
@ InterruptObject
Definition: ketypes.h:447
@ EventPairObject
Definition: ketypes.h:446
@ Spare9Object
Definition: ketypes.h:442
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:30
struct _PP_LOOKASIDE_LIST PP_LOOKASIDE_LIST
_VDMSERVICECLASS
Definition: ketypes.h:490
@ VdmSetLdtEntries
Definition: ketypes.h:501
@ VdmSetProcessLdtInfo
Definition: ketypes.h:502
@ VdmQueryDir
Definition: ketypes.h:497
@ VdmSetInt21Handler
Definition: ketypes.h:496
@ VdmAdlibEmulation
Definition: ketypes.h:503
@ VdmQueueInterrupt
Definition: ketypes.h:492
@ VdmDelayInterrupt
Definition: ketypes.h:493
@ VdmPrinterDirectIoClose
Definition: ketypes.h:499
@ VdmPrinterDirectIoOpen
Definition: ketypes.h:498
@ VdmPrinterInitialize
Definition: ketypes.h:500
@ VdmFeatures
Definition: ketypes.h:495
@ VdmPMCliControl
Definition: ketypes.h:504
@ VdmInitialize
Definition: ketypes.h:494
@ VdmQueryVdmProcess
Definition: ketypes.h:505
@ VdmStartExecution
Definition: ketypes.h:491
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:894
struct _KLOCK_ENTRY_LOCK_STATE KLOCK_ENTRY_LOCK_STATE
union _KWAIT_STATUS_REGISTER KWAIT_STATUS_REGISTER
_KTHREAD_STATE
Definition: ketypes.h:406
@ Terminated
Definition: ketypes.h:411
@ Ready
Definition: ketypes.h:408
@ Running
Definition: ketypes.h:409
@ GateWait
Definition: ketypes.h:416
@ Standby
Definition: ketypes.h:410
@ DeferredReady
Definition: ketypes.h:414
@ Waiting
Definition: ketypes.h:412
@ Transition
Definition: ketypes.h:413
@ Initialized
Definition: ketypes.h:407
_KAPC_ENVIRONMENT
Definition: ketypes.h:910
@ AttachedApcEnvironment
Definition: ketypes.h:912
@ OriginalApcEnvironment
Definition: ketypes.h:911
@ CurrentApcEnvironment
Definition: ketypes.h:913
@ InsertApcEnvironment
Definition: ketypes.h:914
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:467
@ ContinueNextProcessor
Definition: ketypes.h:471
@ ContinueProcessorReselected
Definition: ketypes.h:470
@ ContinueError
Definition: ketypes.h:468
@ ContinueSuccess
Definition: ketypes.h:469
#define DISPATCH_LENGTH
Definition: ketypes.h:174
struct _KEXECUTE_OPTIONS * PKEXECUTE_OPTIONS
struct _KSERVICE_TABLE_DESCRIPTOR * PKSERVICE_TABLE_DESCRIPTOR
_ADJUST_REASON
Definition: ketypes.h:457
@ AdjustUnwait
Definition: ketypes.h:459
@ AdjustNone
Definition: ketypes.h:458
@ AdjustBoost
Definition: ketypes.h:460
struct _KENTROPY_TIMING_STATE KENTROPY_TIMING_STATE
struct _LOADER_PARAMETER_BLOCK NTSYSAPI * KeLoaderBlock
Definition: krnlinit.c:28
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:898
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:888
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 _In_
Definition: no_sal2.h:158
#define RTL_SIZEOF_THROUGH_FIELD(type, field)
Definition: ntbasedef.h:684
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 WCHAR
Definition: pedump.c:58
short SHORT
Definition: pedump.c:59
long LONG
Definition: pedump.c:60
unsigned short USHORT
Definition: pedump.c:61
char CHAR
Definition: pedump.c:57
@ Reserved4
Definition: sacdrv.h:1472
@ Reserved2
Definition: sacdrv.h:1470
@ Reserved5
Definition: sacdrv.h:1473
@ Reserved1
Definition: sacdrv.h:1464
enum _KINTERRUPT_MODE KINTERRUPT_MODE
signed char SCHAR
Definition: sqltypes.h:14
enum _HARDWARE_COUNTER_TYPE Type
Definition: ketypes.h:1158
ULONG64 Start
Definition: ketypes.h:1160
ULONG64 Total
Definition: ketypes.h:1161
PVOID StackLimit
Definition: ketypes.h:146
CONTEXT FiberContext
Definition: ketypes.h:148
PVOID DeallocationStack
Definition: ketypes.h:147
PVOID Wx86Tib
Definition: ketypes.h:150
ULONG GuaranteedStackBytes
Definition: ketypes.h:153
PVOID StackBase
Definition: ketypes.h:145
ULONG TebFlags
Definition: ketypes.h:154
struct _ACTIVATION_CONTEXT_STACK * ActivationContextStackPointer
Definition: ketypes.h:151
struct _EXCEPTION_REGISTRATION_RECORD * ExceptionList
Definition: ketypes.h:144
PVOID FiberData
Definition: ketypes.h:143
PVOID FlsData
Definition: ketypes.h:152
CONTEXT Context
Definition: ketypes.h:1052
KPROCESSOR_MODE Mode
Definition: ketypes.h:1051
KEVENT Event
Definition: ketypes.h:1050
Definition: ketypes.h:615
PVOID NormalContext
Definition: ketypes.h:630
ULONG DpcCount
Definition: ketypes.h:1004
ULONG_PTR DpcLock
Definition: ketypes.h:998
volatile ULONG DpcQueueDepth
Definition: ketypes.h:1002
PKDPC ActiveDpc
Definition: ketypes.h:1006
KDPC_LIST DpcList
Definition: ketypes.h:994
SINGLE_LIST_ENTRY ListHead
Definition: ketypes.h:934
SINGLE_LIST_ENTRY * LastEntry
Definition: ketypes.h:935
Definition: ketypes.h:767
CSHORT Type
Definition: ketypes.h:1120
KEVENT HighEvent
Definition: ketypes.h:1123
CSHORT Size
Definition: ketypes.h:1121
KEVENT LowEvent
Definition: ketypes.h:1122
UCHAR DisableThunkEmulation
Definition: ketypes.h:1133
UCHAR ExecuteDisable
Definition: ketypes.h:1131
UCHAR ExecuteEnable
Definition: ketypes.h:1132
UCHAR ExecuteDispatchEnable
Definition: ketypes.h:1135
UCHAR ImageDispatchEnable
Definition: ketypes.h:1136
KIRQL SynchronizeIrql
Definition: ketypes.h:1094
CCHAR Number
Definition: ketypes.h:1097
ULONG ServiceCount
Definition: ketypes.h:1103
PKINTERRUPT_ROUTINE DispatchAddress
Definition: ketypes.h:1091
ULONG DispatchCount
Definition: ketypes.h:1104
CSHORT Size
Definition: ketypes.h:1080
ULONG DispatchCode[DISPATCH_LENGTH]
Definition: ketypes.h:1112
BOOLEAN Connected
Definition: ketypes.h:1096
KINTERRUPT_POLARITY Polarity
Definition: ketypes.h:1101
KINTERRUPT_MODE Mode
Definition: ketypes.h:1099
BOOLEAN ShareVector
Definition: ketypes.h:1098
ULONG Vector
Definition: ketypes.h:1092
PKSERVICE_ROUTINE MessageServiceRoutine
Definition: ketypes.h:1084
KSPIN_LOCK SpinLock
Definition: ketypes.h:1088
KIRQL Irql
Definition: ketypes.h:1093
BOOLEAN FloatingSave
Definition: ketypes.h:1095
LIST_ENTRY InterruptListEntry
Definition: ketypes.h:1081
ULONG MessageIndex
Definition: ketypes.h:1085
ULONG TickCount
Definition: ketypes.h:1089
PKSPIN_LOCK ActualLock
Definition: ketypes.h:1090
CSHORT Type
Definition: ketypes.h:1079
ULONGLONG Rsvd1
Definition: ketypes.h:1106
PKSERVICE_ROUTINE ServiceRoutine
Definition: ketypes.h:1082
PVOID ServiceContext
Definition: ketypes.h:1087
Definition: ketypes.h:1187
ULONG_PTR Busy
Definition: ketypes.h:1197
ULONG_PTR CrossThreadReleasable
Definition: ketypes.h:1193
ULONG_PTR InTree
Definition: ketypes.h:1199
ULONG_PTR Reserved
Definition: ketypes.h:1198
PVOID LockState
Definition: ketypes.h:1201
ULONG SessionId
Definition: ketypes.h:1208
PVOID SessionState
Definition: ketypes.h:1205
Definition: ketypes.h:1217
KLOCK_ENTRY_LOCK_STATE LockState
Definition: ketypes.h:1280
UCHAR Spare0
Definition: ketypes.h:1236
UCHAR AcquiredByte
Definition: ketypes.h:1241
PVOID SessionState
Definition: ketypes.h:1293
UCHAR WaitingBit
Definition: ketypes.h:1235
USHORT IoBoost
Definition: ketypes.h:1326
RTL_RB_TREE WaiterTree
Definition: ketypes.h:1309
ULONG SessionId
Definition: ketypes.h:1296
USHORT IoQoSWaiterCount
Definition: ketypes.h:1332
USHORT IoQoSBoost
Definition: ketypes.h:1330
ULONG_PTR EntryLock
Definition: ketypes.h:1313
volatile UCHAR CrossThreadReleasableAndBusyByte
Definition: ketypes.h:1285
RTL_RB_TREE OwnerTree
Definition: ketypes.h:1308
ULONG AllFlags
Definition: ketypes.h:1259
UCHAR HeadNodeBit
Definition: ketypes.h:1249
SINGLE_LIST_ENTRY FreeListEntry
Definition: ketypes.h:1221
UCHAR IoQoSWaiter
Definition: ketypes.h:1251
ULONG EntryFlags
Definition: ketypes.h:1226
UCHAR AcquiredBit
Definition: ketypes.h:1242
UCHAR InTreeByte
Definition: ketypes.h:1290
USHORT CpuBoostsBitmap
Definition: ketypes.h:1325
PVOID LockUnsafe
Definition: ketypes.h:1281
UCHAR ThreadLocalFlags
Definition: ketypes.h:1232
UCHAR IoPriorityBit
Definition: ketypes.h:1250
CHAR CpuPriorityKey
Definition: ketypes.h:1311
USHORT AllBoosts
Definition: ketypes.h:1319
UCHAR Spare1
Definition: ketypes.h:1252
ULONG StaticState
Definition: ketypes.h:1258
UCHAR EntryOffset
Definition: ketypes.h:1229
RTL_BALANCED_NODE TreeNode
Definition: ketypes.h:1220
UCHAR CrossThreadFlags
Definition: ketypes.h:1246
USHORT IoNormalPriorityWaiterCount
Definition: ketypes.h:1331
UCHAR Removable
Definition: ketypes.h:1036
SLIST_HEADER DeadStackList
Definition: ketypes.h:1029
UCHAR Seed
Definition: ketypes.h:1033
ULONG_PTR FreeCount[2]
Definition: ketypes.h:1040
ULONG MmShiftedColor
Definition: ketypes.h:1039
struct _SINGLE_LIST_ENTRY * PfnDeferredList
Definition: ketypes.h:1041
struct _KNODE::_flags Flags
UCHAR NodeNumber
Definition: ketypes.h:1034
KAFFINITY ProcessorMask
Definition: ketypes.h:1031
SLIST_HEADER PfnDereferenceSListHead
Definition: ketypes.h:1030
UCHAR Color
Definition: ketypes.h:1032
DISPATCHER_HEADER Header
Definition: ketypes.h:2231
SCHAR BasePriority
Definition: ketypes.h:2268
SCHAR QuantumReset
Definition: ketypes.h:2269
LIST_ENTRY ProcessListEntry
Definition: ketypes.h:2281
SINGLE_LIST_ENTRY SwapListEntry
Definition: ketypes.h:2252
ULONG StackCount
Definition: ketypes.h:2280
UCHAR ThreadSeed
Definition: ketypes.h:2271
UCHAR IdealNode
Definition: ketypes.h:2273
LONG DisableQuantum
Definition: ketypes.h:2263
LONG DisableBoost
Definition: ketypes.h:2262
USHORT IopmOffset
Definition: ketypes.h:2243
LONG ProcessFlags
Definition: ketypes.h:2266
UCHAR ExecuteOptions
Definition: ketypes.h:2278
ULONG_PTR Unused0
Definition: ketypes.h:2235
PVOID VdmTrapcHandler
Definition: ketypes.h:2253
volatile KAFFINITY ActiveProcessors
Definition: ketypes.h:2248
ULONG KernelTime
Definition: ketypes.h:2249
LONG AutoAlignment
Definition: ketypes.h:2261
ULONG_PTR DirectoryTableBase
Definition: ketypes.h:2234
UCHAR Visited
Definition: ketypes.h:2274
ULONG UserTime
Definition: ketypes.h:2250
ULONGLONG CycleTime
Definition: ketypes.h:2283
UCHAR State
Definition: ketypes.h:2270
KAFFINITY Affinity
Definition: ketypes.h:2256
LIST_ENTRY ProfileListHead
Definition: ketypes.h:2232
LONG ReservedFlags
Definition: ketypes.h:2264
UCHAR PowerState
Definition: ketypes.h:2272
KEXECUTE_OPTIONS Flags
Definition: ketypes.h:2277
LIST_ENTRY ThreadListHead
Definition: ketypes.h:2254
LIST_ENTRY ReadyListHead
Definition: ketypes.h:2251
KSPIN_LOCK ProcessLock
Definition: ketypes.h:2255
struct _KPROCESS * Process
Definition: ketypes.h:1063
CSHORT Size
Definition: ketypes.h:1061
ULONG BucketShift
Definition: ketypes.h:1066
PVOID RangeLimit
Definition: ketypes.h:1065
KPROFILE_SOURCE Source
Definition: ketypes.h:1070
PVOID Buffer
Definition: ketypes.h:1067
BOOLEAN Started
Definition: ketypes.h:1071
ULONG_PTR Segment
Definition: ketypes.h:1068
PVOID RangeBase
Definition: ketypes.h:1064
CSHORT Type
Definition: ketypes.h:1060
KAFFINITY Affinity
Definition: ketypes.h:1069
LIST_ENTRY ProfileListEntry
Definition: ketypes.h:1062
LONG High1Time
Definition: wdm.h:6
LONG High2Time
Definition: wdm.h:7
ULONG LowPart
Definition: wdm.h:5
ULONG64 CycleTimeBias
Definition: ketypes.h:1170
ULONG64 WaitReasonBitMap
Definition: ketypes.h:1166
ULONG64 HardwareCounters
Definition: ketypes.h:1171
struct _THREAD_PERFORMANCE_DATA * UserData
Definition: ketypes.h:1167
COUNTER_READING HwCounter[16]
Definition: ketypes.h:1172
ULONG ContextSwitches
Definition: ketypes.h:1169
ULONG ApcInterruptRequest
Definition: ketypes.h:1850
PKTRAP_FRAME TrapFrame
Definition: ketypes.h:1921
PVOID InitialStack
Definition: ketypes.h:1811
ULONG SystemCallNumber
Definition: ketypes.h:1916
PKQUEUE Queue
Definition: ketypes.h:1953
ULONG UserIdealProcessor
Definition: ketypes.h:1930
UCHAR AdjustReason
Definition: ketypes.h:2075
UCHAR UnusualBoost
Definition: ketypes.h:2071
ULONG CurrentRunTime
Definition: ketypes.h:1820
UCHAR SchedulerApcFill4[FIELD_OFFSET(KAPC, SystemArgument2)]
Definition: ketypes.h:2143
GROUP_AFFINITY Affinity
Definition: ketypes.h:2085
ULONG IdealProcessor
Definition: ketypes.h:2091
ULONG ThreadFlagsSpare
Definition: ketypes.h:1897
ULONG UserStackWalkActive
Definition: ketypes.h:1849
ULONG DisableBoost
Definition: ketypes.h:1872
volatile INT_PTR WaitStatus
Definition: ketypes.h:1946
UCHAR ForegroundBoost
Definition: ketypes.h:2070
ULONG ProcessReadyQueue
Definition: ketypes.h:1842
ULONG ChargeOnlyGroup
Definition: ketypes.h:1879
ULONG QuantumDonation
Definition: ketypes.h:1875
KPROCESSOR_MODE WaitMode
Definition: ketypes.h:1943
UCHAR CallbackNestingLevel
Definition: ketypes.h:2149
LIST_ENTRY WaitListEntry
Definition: ketypes.h:1950
ULONG FreezeCount
Definition: ketypes.h:1884
SHORT SListFaultCount
Definition: ketypes.h:2114
ULONG ReservedStackInUse
Definition: ketypes.h:1859
LONG AbCompletedIoQoSBoostCount
Definition: ketypes.h:2177
CHAR PriorityDecrement
Definition: ketypes.h:2067
ULONG QuantumEndMigrate
Definition: ketypes.h:1851
BOOLEAN Running
Definition: ketypes.h:1826
KAPC_STATE SavedApcState
Definition: ketypes.h:2107
ULONG_PTR AffinityVersion
Definition: ketypes.h:2081
UCHAR WaitBlockFill10[2 *sizeof(KWAIT_BLOCK)+FIELD_OFFSET(KWAIT_BLOCK, SparePtr)]
Definition: ketypes.h:2012
ULONG Reserved
Definition: ketypes.h:1862
ULONG ExpectedRunTime
Definition: ketypes.h:1821
ULONG DisableQuantum
Definition: ketypes.h:1878
ULONG64 QuantumTarget
Definition: ketypes.h:1810
PVOID Win32Thread
Definition: ketypes.h:2013
ULONG_PTR InGlobalForegroundList
Definition: ketypes.h:2199
ULONG SystemAffinityActive
Definition: ketypes.h:1844
BOOLEAN Alerted[MaximumMode]
Definition: ketypes.h:1827
volatile ULONG64 CycleTime
Definition: ketypes.h:1815
ULONG ForegroundLossTime
Definition: ketypes.h:2192
LIST_ENTRY GlobalForegroundListEntry
Definition: ketypes.h:2195
UCHAR AbFreeEntryCount
Definition: ketypes.h:2189
struct _KSCB * QueuedScb
Definition: ketypes.h:2213
LONG ThreadFlags
Definition: ketypes.h:1904
ULONG CombinedApcDisable
Definition: ketypes.h:2030
ULONG Alertable
Definition: ketypes.h:1845
PKPRCB WaitPrcb
Definition: ketypes.h:2139
KSPIN_LOCK ThreadLock
Definition: ketypes.h:1814
volatile LONG AbCompletedIoBoostCount
Definition: ketypes.h:2175
UCHAR ApcStateFill[RTL_SIZEOF_THROUGH_FIELD(KAPC_STATE, UserApcPending)]
Definition: ketypes.h:1928
PVOID FirstArgument
Definition: ketypes.h:1920
ULONG CalloutActive
Definition: ketypes.h:1856
SCHAR Priority
Definition: ketypes.h:1929
ULONG UserAffinitySet
Definition: ketypes.h:1873
SHORT SpecialApcDisable
Definition: ketypes.h:2028
ULONG CommitFailTerminateRequest
Definition: ketypes.h:1895
UCHAR SuspendApcFill3[FIELD_OFFSET(KAPC, SystemArgument1)]
Definition: ketypes.h:2138
UCHAR ApcStateIndex
Definition: ketypes.h:2089
PVOID SListFaultAddress
Definition: ketypes.h:1809
USHORT Spare20
Definition: ketypes.h:2161
UCHAR SchedulerApcFill0[FIELD_OFFSET(KAPC, SpareByte0)]
Definition: ketypes.h:2123
PVOID Teb
Definition: ketypes.h:1954
struct _KTHREAD_COUNTERS * ThreadCounters
Definition: ketypes.h:2003
SINGLE_LIST_ENTRY SwapListEntry
Definition: ketypes.h:1951
CHAR PreviousMode
Definition: ketypes.h:2063
KLOCK_ENTRY LockEntries[NUMBER_OF_LOCK_ENTRIES]
Definition: ketypes.h:2170
PVOID ServiceTable
Definition: ketypes.h:1818
ULONG QueueDeferPreemption
Definition: ketypes.h:1881
UCHAR SchedulerApcFill5[FIELD_OFFSET(KAPC, Inserted)+1]
Definition: ketypes.h:2148
ULONG64 NpxState
Definition: ketypes.h:2215
ULONG AutoAlignment
Definition: ketypes.h:1871
ULONG AutoBoostActive
Definition: ketypes.h:1836
ULONG ReadyTransition
Definition: ketypes.h:1838
ULONG ScbReadyQueue
Definition: ketypes.h:1857
GROUP_AFFINITY UserAffinity
Definition: ketypes.h:2059
PVOID KernelStack
Definition: ketypes.h:1822
ULONG GuiThread
Definition: ketypes.h:1877
ULONG DeferredProcessor
Definition: ketypes.h:2053
ULONG KernelTime
Definition: ketypes.h:2134
ULONG Spare15
Definition: ketypes.h:2099
UCHAR ResourceIndex
Definition: ketypes.h:2124
LIST_ENTRY ThreadListEntry
Definition: ketypes.h:2155
UCHAR SystemHeteroCpuPolicy
Definition: ketypes.h:1909
ULONG UmsPerformingSyscall
Definition: ketypes.h:1860
CHAR BasePriority
Definition: ketypes.h:2064
ULONG WaitTime
Definition: ketypes.h:2022
UCHAR UserHeteroCpuPolicy
Definition: ketypes.h:1910
UCHAR SchedulerApcFill2[FIELD_OFFSET(KAPC, SpareLong0)]
Definition: ketypes.h:2133
UCHAR AffinityFill[FIELD_OFFSET(GROUP_AFFINITY, Reserved)]
Definition: ketypes.h:2088
ULONG PriorityFloorSummary
Definition: ketypes.h:2174
UCHAR QuantumReset
Definition: ketypes.h:2129
PVOID LegoData
Definition: ketypes.h:2144
UCHAR WaitReason
Definition: ketypes.h:2111
volatile SHORT KeReferenceCount
Definition: ketypes.h:2181
PXSTATE_SAVE XStateSave
Definition: ketypes.h:2008
PVOID StackBase
Definition: ketypes.h:1813
ULONG SystemThread
Definition: ketypes.h:1854
ULONG NextProcessor
Definition: ketypes.h:2052
ULONG ExplicitIdealProcessor
Definition: ketypes.h:1883
ULONG EnableStackSwap
Definition: ketypes.h:1876
UCHAR WaitBlockFill8[FIELD_OFFSET(KWAIT_BLOCK, SparePtr)]
Definition: ketypes.h:2002
LONG MiscFlags
Definition: ketypes.h:1864
ULONG TimerActive
Definition: ketypes.h:1853
UCHAR AbWaitEntryCount
Definition: ketypes.h:2160
CHAR AdjustIncrement
Definition: ketypes.h:2076
volatile ULONG HighCycleTime
Definition: ketypes.h:1817
LIST_ENTRY MutantListHead
Definition: ketypes.h:2156
UCHAR SchedulerApcFill1[FIELD_OFFSET(KAPC, SpareByte1)]
Definition: ketypes.h:2128
UCHAR PriorityFloorCounts[16]
Definition: ketypes.h:2173
UCHAR ExplicitSystemHeteroCpuPolicy
Definition: ketypes.h:1911
volatile UCHAR Tag
Definition: ketypes.h:1908
UCHAR AbEntrySummary
Definition: ketypes.h:2159
SHORT KernelApcDisable
Definition: ketypes.h:2027
ULONG AlertedByThreadId
Definition: ketypes.h:1874
SINGLE_LIST_ENTRY IoSelfBoostsEntry
Definition: ketypes.h:2172
KEVENT SuspendEvent
Definition: ketypes.h:2154
CHAR Spare12
Definition: ketypes.h:1938
SINGLE_LIST_ENTRY PropagateBoostsEntry
Definition: ketypes.h:2171
DISPATCHER_HEADER Header
Definition: ketypes.h:1808
KWAIT_STATUS_REGISTER WaitRegister
Definition: ketypes.h:1825
PKWAIT_BLOCK WaitBlockList
Definition: ketypes.h:1947
ULONG ProcessStackCountDecremented
Definition: ketypes.h:1896
ULONG ContextSwitches
Definition: ketypes.h:1935
ULONG64 RelativeTimerBias
Definition: ketypes.h:1956
ULONG DisableStackCheck
Definition: ketypes.h:1861
ULONG EtwStackTraceApcInserted
Definition: ketypes.h:1899
UCHAR SavedApcStateFill[FIELD_OFFSET(KAPC_STATE, UserApcPending)+1]
Definition: ketypes.h:2110
UCHAR WaitBlockFill9[1 *sizeof(KWAIT_BLOCK)+FIELD_OFFSET(KWAIT_BLOCK, SparePtr)]
Definition: ketypes.h:2007
CHAR Saturation
Definition: ketypes.h:2113
XSAVE_FORMAT * StateSaveArea
Definition: ketypes.h:1823
CHAR SuspendCount
Definition: ketypes.h:2112
ULONG DeferPreemption
Definition: ketypes.h:1880
UCHAR Spare0
Definition: ketypes.h:1912
KTIMER Timer
Definition: ketypes.h:1958
UCHAR WaitBlockFill11[3 *sizeof(KWAIT_BLOCK)+FIELD_OFFSET(KWAIT_BLOCK, Object)]
Definition: ketypes.h:2017
volatile VOID * StackLimit
Definition: ketypes.h:1812
LIST_ENTRY QueueListEntry
Definition: ketypes.h:2039
ULONG ProcessDetachActive
Definition: ketypes.h:1855
KAPC_STATE ApcState
Definition: ketypes.h:1925
struct _KSCHEDULING_GROUP * SchedulingGroup
Definition: ketypes.h:1824
PKPROCESS Process
Definition: ketypes.h:2055
KIRQL WaitIrql
Definition: ketypes.h:1942
KAPC SchedulerApc
Definition: ketypes.h:2120
UCHAR Preempted
Definition: ketypes.h:2074
ULONG UserTime
Definition: ketypes.h:2150
ULONG UmsDirectedSwitchEnable
Definition: ketypes.h:1852
ULONG ApcQueueable
Definition: ketypes.h:1858
SINGLE_LIST_ENTRY ForegroundDpcStackListEntry
Definition: ketypes.h:2198
volatile UCHAR State
Definition: ketypes.h:1936
ULONG WaitNext
Definition: ketypes.h:1843
UCHAR UserAffinityFill[FIELD_OFFSET(GROUP_AFFINITY, Reserved)]
Definition: ketypes.h:2062
ULONG ForceDeferSchedule
Definition: ketypes.h:1882
UCHAR WaitBlockCount
Definition: ketypes.h:2090
Definition: ketypes.h:918
KSPIN_LOCK Lock
Definition: ketypes.h:920
ULARGE_INTEGER Time
Definition: ketypes.h:923
LIST_ENTRY Entry
Definition: ketypes.h:922
KTIMER_TABLE_ENTRY TimerEntries[256]
Definition: ketypes.h:929
PKTIMER TimerExpiry[64]
Definition: ketypes.h:928
ULONG LangGenerationCount
Definition: wdm.h:117
ULONG CookiePad[1]
Definition: wdm.h:103
UCHAR QpcInterruptTimeIncrementShift
Definition: wdm.h:111
XSTATE_CONFIGURATION XState
Definition: wdm.h:132
ULONG DbgStateSeparationEnabled
Definition: wdm.h:80
BOOLEAN ProductTypeIsValid
Definition: wdm.h:45
union _KUSER_SHARED_DATA::@4204 DUMMYUNIONNAME2
ULONG AitSamplingValue
Definition: wdm.h:38
ULONG DbgInstallerDetectEnabled
Definition: wdm.h:73
volatile KSYSTEM_TIME SystemTime
Definition: wdm.h:29
volatile UCHAR ActiveGroupCount
Definition: wdm.h:122
LARGE_INTEGER TimeZoneBiasEffectiveStart
Definition: wdm.h:130
ULONGLONG QpcSystemTimeIncrement
Definition: wdm.h:108
ULONG TickCountLowDeprecated
Definition: wdm.h:26
NT_PRODUCT_TYPE NtProductType
Definition: wdm.h:44
USHORT QpcData
Definition: wdm.h:124
LONGLONG QpcFrequency
Definition: wdm.h:86
ULONGLONG SystemCallPad[2]
Definition: wdm.h:97
ULONG DbgConsoleBrokerEnabled
Definition: wdm.h:76
ULONG ActiveProcessorCount
Definition: wdm.h:121
volatile ULONG TimeZoneBiasStamp
Definition: wdm.h:42
ULONGLONG RNGSeedVersion
Definition: wdm.h:40
UCHAR VirtualizationFlags
Definition: wdm.h:66
ULONG SystemCall
Definition: wdm.h:87
ULONGLONG TestRetInstruction
Definition: wdm.h:85
ULONGLONG QpcInterruptTimeIncrement
Definition: wdm.h:109
volatile ULONG ActiveConsoleId
Definition: wdm.h:60
volatile ULONGLONG InterruptTimeBias
Definition: wdm.h:119
struct _KUSER_SHARED_DATA::@4204::@4208 DUMMYSTRUCTNAME2
BOOLEAN KdDebuggerEnabled
Definition: wdm.h:57
ULONG NtMajorVersion
Definition: wdm.h:47
ULONG AppCompatFlag
Definition: wdm.h:39
ULONGLONG BaselineSystemTimeQpc
Definition: wdm.h:106
UCHAR QpcShift
Definition: wdm.h:127
ULONG TickCountMultiplier
Definition: wdm.h:27
LONGLONG ConsoleSessionForegroundProcessId
Definition: wdm.h:104
USHORT NativeProcessorArchitecture
Definition: wdm.h:46
ULONG SharedDataFlags
Definition: wdm.h:68
UCHAR NXSupportPolicy
Definition: wdm.h:58
volatile ULONGLONG QpcBias
Definition: wdm.h:120
BOOLEAN ProcessorFeatures[PROCESSOR_FEATURE_MAX]
Definition: wdm.h:49
ULONG LastSystemRITEventTickCount
Definition: wdm.h:63
ULONG NumberOfPhysicalPages
Definition: wdm.h:64
ULONG DbgMultiUsersInSessionSku
Definition: wdm.h:79
ULONG BootId
Definition: wdm.h:54
volatile ULONG64 TickCountQuad
Definition: wdm.h:100
volatile KSYSTEM_TIME TickCount
Definition: wdm.h:99
ULONG LargePageMinimum
Definition: wdm.h:37
volatile KSYSTEM_TIME InterruptTime
Definition: wdm.h:28
ULONG SpareBits
Definition: wdm.h:81
ULONG NtBuildNumber
Definition: wdm.h:43
ULONG CryptoExponent
Definition: wdm.h:35
ULONG DbgSecureBootEnabled
Definition: wdm.h:77
ULONG TimeZoneId
Definition: wdm.h:36
BOOLEAN SafeBootMode
Definition: wdm.h:65
ULONG DbgMultiSessionSku
Definition: wdm.h:78
UCHAR volatile QpcBypassEnabled
Definition: wdm.h:126
volatile ULONG TimeSlip
Definition: wdm.h:52
LARGE_INTEGER SystemExpirationDate
Definition: wdm.h:55
ULONG NtMinorVersion
Definition: wdm.h:48
ULONG Cookie
Definition: wdm.h:102
WCHAR NtSystemRoot[260]
Definition: wdm.h:33
ULONG ActiveProcessorAffinity
Definition: wdm.h:118
union _KUSER_SHARED_DATA::@4207 DUMMYUNIONNAME3
USHORT ImageNumberHigh
Definition: wdm.h:32
UCHAR QpcSystemTimeIncrementShift
Definition: wdm.h:110
ULONG Reserved1
Definition: wdm.h:50
ULONG MaxStackTraceDepth
Definition: wdm.h:34
ULONG SuiteMask
Definition: wdm.h:56
ULONG DbgErrorPortPresent
Definition: wdm.h:70
ULONG DbgVirtEnabled
Definition: wdm.h:72
ULONG ImageFileExecutionOptions
Definition: wdm.h:116
USHORT CyclesPerYield
Definition: wdm.h:59
USHORT UnparkedProcessorCount
Definition: wdm.h:112
ULONG ComPlusPackage
Definition: wdm.h:62
union _KUSER_SHARED_DATA::@4206 DUMMYUNIONNAME
ULONG EnclaveFeatureMask[4]
Definition: wdm.h:113
ULONG Reserved3
Definition: wdm.h:51
ALTERNATIVE_ARCHITECTURE_TYPE AlternativeArchitecture
Definition: wdm.h:53
struct _KUSER_SHARED_DATA::@4205::@4209 DUMMYSTRUCTNAME
ULONGLONG TimeUpdateLock
Definition: wdm.h:105
volatile ULONG DismountCount
Definition: wdm.h:61
volatile KSYSTEM_TIME TimeZoneBias
Definition: wdm.h:30
ULONG DbgLkgEnabled
Definition: wdm.h:74
LARGE_INTEGER TimeZoneBiasEffectiveEnd
Definition: wdm.h:131
ULONGLONG BaselineInterruptTimeQpc
Definition: wdm.h:107
ULONG DataFlagsPad[1]
Definition: wdm.h:84
ULONG DbgDynProcessorEnabled
Definition: wdm.h:75
USHORT UserModeGlobalLogger[16]
Definition: wdm.h:115
ULONG TelemetryCoverageRound
Definition: wdm.h:114
USHORT ImageNumberLow
Definition: wdm.h:31
Definition: typedefs.h:120
struct _GENERAL_LOOKASIDE * P
Definition: ketypes.h:1015
struct _GENERAL_LOOKASIDE * L
Definition: ketypes.h:1016
FIXME: should move to rtltypes.h, but we can't include it here.
Definition: ketypes.h:1179
PRTL_BALANCED_NODE Root
Definition: ketypes.h:1180
PRTL_BALANCED_NODE Min
Definition: ketypes.h:1181
Definition: ntbasedef.h:640
ULONG ExTryToAcqExclusiveAcquires
Definition: ketypes.h:981
ULONG ExTryToAcqExclusiveAttempts
Definition: ketypes.h:980
ULONG ExInitializeResourceCount
Definition: ketypes.h:946
ULONG ExecutiveResourceReleaseSharedCount
Definition: ketypes.h:952
ULONG ExAcqResSharedAcquiresExclusive
Definition: ketypes.h:960
ULONG ExAcqResExclusiveNotAcquires
Definition: ketypes.h:958
ULONG ExAcqResSharedStarveExclusiveNotAcquires
Definition: ketypes.h:970
ULONG ExSetResOwnerPointerSharedOld
Definition: ketypes.h:979
ULONG ExAcqResSharedWaitForExclusiveAcquiresSharedRecursive
Definition: ketypes.h:974
ULONG ExAcqResExclusiveAcquiresExclusiveRecursive
Definition: ketypes.h:956
ULONG ExEtwSynchTrackingNotificationsAccountedCount
Definition: ketypes.h:985
ULONG ExecutiveResourceConvertsCount
Definition: ketypes.h:953
ULONG ExecutiveResourceReleaseExclusiveCount
Definition: ketypes.h:951
ULONG IpiSendRequestBroadcastCount
Definition: ketypes.h:943
ULONG ExAcqResExclusiveWaits
Definition: ketypes.h:957
ULONG ExAcqResSharedWaitForExclusiveWaits
Definition: ketypes.h:975
ULONG ExAcqResSharedWaits
Definition: ketypes.h:963
ULONG ExAcqResSharedWaitForExclusiveAcquiresExclusive
Definition: ketypes.h:972
ULONG SpinLockContentionCount
Definition: ketypes.h:941
ULONG ExAcqResSharedStarveExclusiveAttempts
Definition: ketypes.h:965
ULONG ExAcqResSharedAttempts
Definition: ketypes.h:959
ULONG ExDeleteResourceCount
Definition: ketypes.h:948
ULONG ExecutiveResourceContentionsCount
Definition: ketypes.h:950
ULONG ExAcqResSharedWaitForExclusiveAttempts
Definition: ketypes.h:971
ULONG ExAcqResSharedWaitForExclusiveNotAcquires
Definition: ketypes.h:976
ULONG ExEtwSynchTrackingNotificationsCount
Definition: ketypes.h:984
ULONG ExBoostSharedOwners
Definition: ketypes.h:983
ULONG IpiSendRequestRoutineCount
Definition: ketypes.h:944
ULONG ExAcqResSharedStarveExclusiveAcquiresSharedRecursive
Definition: ketypes.h:968
ULONG ExAcqResSharedStarveExclusiveAcquiresShared
Definition: ketypes.h:967
ULONG ExAcqResSharedStarveExclusiveWaits
Definition: ketypes.h:969
ULONG ExAcqResSharedAcquiresShared
Definition: ketypes.h:961
ULONG SpinLockSpinCount
Definition: ketypes.h:942
ULONG IpiSendSoftwareInterruptCount
Definition: ketypes.h:945
ULONG ExSetResOwnerPointerExclusive
Definition: ketypes.h:977
ULONG ExAcqResSharedNotAcquires
Definition: ketypes.h:964
ULONG ExReInitializeResourceCount
Definition: ketypes.h:947
ULONG ExAcqResSharedWaitForExclusiveAcquiresShared
Definition: ketypes.h:973
ULONG ExecutiveResourceAcquiresCount
Definition: ketypes.h:949
ULONG ExAcqResSharedStarveExclusiveAcquiresExclusive
Definition: ketypes.h:966
ULONG ExAcqResExclusiveAttempts
Definition: ketypes.h:954
ULONG ExSetResOwnerPointerSharedNew
Definition: ketypes.h:978
ULONG ExAcqResExclusiveAcquiresExclusive
Definition: ketypes.h:955
ULONG SpinLockAcquireCount
Definition: ketypes.h:940
ULONG ExBoostExclusiveOwner
Definition: ketypes.h:982
ULONG ExAcqResSharedAcquiresSharedRecursive
Definition: ketypes.h:962
Definition: compat.h:836
#define MODE
Definition: telnetd.h:42
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
unsigned char UCHAR
Definition: typedefs.h:53
#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
uint64_t ULONGLONG
Definition: typedefs.h:67
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
#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:3040
#define PROCESSOR_FEATURE_MAX
Definition: wdm.h:10
struct _KSYSTEM_TIME KSYSTEM_TIME
_ALTERNATIVE_ARCHITECTURE_TYPE
Definition: wdm.h:13
@ EndAlternatives
Definition: wdm.h:16
@ StandardDesign
Definition: wdm.h:14
@ NEC98x86
Definition: wdm.h:15
struct _KSYSTEM_TIME * PKSYSTEM_TIME
enum _ALTERNATIVE_ARCHITECTURE_TYPE ALTERNATIVE_ARCHITECTURE_TYPE
_Reserved_ PVOID Reserved
Definition: winddi.h:3974
enum _KPROFILE_SOURCE KPROFILE_SOURCE
VOID(CALLBACK * PTIMER_APC_ROUTINE)(PVOID, ULONG, LONG)
Definition: winternl.h:3621
_KPROFILE_SOURCE
Definition: winternl.h:3730
@ ProfileFpInstructions
Definition: winternl.h:3744
@ ProfileIntegerInstructions
Definition: winternl.h:3745
@ ProfileBranchMispredictions
Definition: winternl.h:3742
@ ProfileMaximum
Definition: winternl.h:3755
@ ProfileStoreInstructions
Definition: winternl.h:3743
@ ProfileAlignmentFixup
Definition: winternl.h:3732
@ ProfilePipelineDry
Definition: winternl.h:3734
@ ProfileMemoryBarrierCycles
Definition: winternl.h:3753
@ Profile3Issue
Definition: winternl.h:3747
@ ProfileLoadLinkedIssues
Definition: winternl.h:3754
@ ProfileDcacheMisses
Definition: winternl.h:3739
@ ProfileIcacheIssues
Definition: winternl.h:3751
@ ProfileIcacheMisses
Definition: winternl.h:3740
@ ProfileTotalNonissues
Definition: winternl.h:3738
@ ProfileTime
Definition: winternl.h:3731
@ ProfileSpecialInstructions
Definition: winternl.h:3749
@ Profile2Issue
Definition: winternl.h:3746
@ ProfileTotalCycles
Definition: winternl.h:3750
@ ProfileBranchInstructions
Definition: winternl.h:3737
@ ProfilePipelineFrozen
Definition: winternl.h:3736
@ ProfileDcacheAccesses
Definition: winternl.h:3752
@ ProfileLoadInstructions
Definition: winternl.h:3735
@ ProfileTotalIssues
Definition: winternl.h:3733
@ Profile4Issue
Definition: winternl.h:3748
@ ProfileCacheMisses
Definition: winternl.h:3741
_In_ ULONG _In_ ULONG _In_ ULONG _Out_ PKIRQL _Out_ PKAFFINITY Affinity
Definition: halfuncs.h:174
_Out_ PULONG UserTime
Definition: kefuncs.h:759
_In_ LARGE_INTEGER _In_ ULONG Period
Definition: kefuncs.h:1313
_In_ LONG _In_ LONG Limit
Definition: kefuncs.h:304
XSAVE_FORMAT
Definition: ketypes.h:1034
KSTART_ROUTINE * PKSTART_ROUTINE
Definition: ketypes.h:567
_KWAIT_REASON
Definition: ketypes.h:466
@ WrLpcReply
Definition: ketypes.h:484
@ WrGuardedMutex
Definition: ketypes.h:502
@ WrIoRing
Definition: ketypes.h:512
@ WrPageIn
Definition: ketypes.h:476
@ WrPoolAllocation
Definition: ketypes.h:477
@ Suspended
Definition: ketypes.h:472
@ WrRcu
Definition: ketypes.h:518
@ WrPageOut
Definition: ketypes.h:486
@ PageIn
Definition: ketypes.h:469
@ WrDeferredPreempt
Definition: ketypes.h:506
@ WrKernel
Definition: ketypes.h:493
@ WrRundown
Definition: ketypes.h:503
@ PoolAllocation
Definition: ketypes.h:470
@ WrYieldExecution
Definition: ketypes.h:500
@ WrUserRequest
Definition: ketypes.h:480
@ WrProcessInSwap
Definition: ketypes.h:490
@ UserRequest
Definition: ketypes.h:473
@ WrLpcReceive
Definition: ketypes.h:483
@ WrFreePage
Definition: ketypes.h:475
@ DelayExecution
Definition: ketypes.h:471
@ WrKeyedEvent
Definition: ketypes.h:488
@ WrPhysicalFault
Definition: ketypes.h:509
@ WrDispatchInt
Definition: ketypes.h:498
@ WrMutex
Definition: ketypes.h:496
@ WrCpuRateControl
Definition: ketypes.h:491
@ WrExecutive
Definition: ketypes.h:474
@ WrQuantumEnd
Definition: ketypes.h:497
@ WrResource
Definition: ketypes.h:494
@ WrEventPair
Definition: ketypes.h:481
@ WrCalloutStack
Definition: ketypes.h:492
@ WrPushLock
Definition: ketypes.h:495
@ WrPreempted
Definition: ketypes.h:499
@ WrQueue
Definition: ketypes.h:482
@ WrFastMutex
Definition: ketypes.h:501
@ WrAlertByThreadId
Definition: ketypes.h:505
@ MaximumWaitReason
Definition: ketypes.h:520
@ WrRendezvous
Definition: ketypes.h:487
@ FreePage
Definition: ketypes.h:468
@ WrVirtualMemory
Definition: ketypes.h:485
@ WrDelayExecution
Definition: ketypes.h:478
@ WrTerminated
Definition: ketypes.h:489
@ WrSuspended
Definition: ketypes.h:479
@ Executive
Definition: ketypes.h:467
@ WrMdlCache
Definition: ketypes.h:515
CCHAR KPROCESSOR_MODE
Definition: ketypes.h:7
KSERVICE_ROUTINE * PKSERVICE_ROUTINE
Definition: ketypes.h:580
#define MAX_WOW64_SHARED_ENTRIES
_In_opt_ PVOID _In_opt_ PVOID SystemArgument1
Definition: ketypes.h:756
KUSER_SHARED_DATA
Definition: ketypes.h:1709
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:560
* PKAPC_STATE
Definition: ketypes.h:1727
VOID(NTAPI * PKINTERRUPT_ROUTINE)(VOID)
Definition: ketypes.h:570
* PKUSER_SHARED_DATA
Definition: ketypes.h:1709
enum _KWAIT_REASON KWAIT_REASON
_In_opt_ PVOID _In_opt_ PVOID _In_opt_ PVOID SystemArgument2
Definition: ketypes.h:757
KAPC_STATE
Definition: ketypes.h:1727
_In_ ULONG _In_opt_ POBJECT_ATTRIBUTES _In_opt_ HANDLE _Out_opt_ PCLIENT_ID _In_ PKSTART_ROUTINE StartRoutine
Definition: psfuncs.h:92
_In_ PLARGE_INTEGER _In_opt_ PTIMER_APC_ROUTINE _In_opt_ PVOID TimerContext
Definition: zwfuncs.h:430