ReactOS 0.4.16-dev-1541-g7e1d9ef
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// Keep in sync with sdk/include/xdk/ketypes.h
524//
525typedef struct _KUSER_SHARED_DATA
526{
527 ULONG TickCountLowDeprecated; // 0x0
528 ULONG TickCountMultiplier; // 0x4
529 volatile KSYSTEM_TIME InterruptTime; // 0x8
530 volatile KSYSTEM_TIME SystemTime; // 0x14
531 volatile KSYSTEM_TIME TimeZoneBias; // 0x20
532 USHORT ImageNumberLow; // 0x2c
533 USHORT ImageNumberHigh; // 0x2e
534 WCHAR NtSystemRoot[260]; // 0x30
535 ULONG MaxStackTraceDepth; // 0x238
536 ULONG CryptoExponent; // 0x23c
537 ULONG TimeZoneId; // 0x240
538 ULONG LargePageMinimum; // 0x244
539
540#if (NTDDI_VERSION >= NTDDI_WIN8)
541 ULONG AitSamplingValue; // 0x248
542 ULONG AppCompatFlag; // 0x24c
543 ULONGLONG RNGSeedVersion; // 0x250
544 ULONG GlobalValidationRunlevel; // 0x258
545 volatile LONG TimeZoneBiasStamp; // 0x25c
546#if (NTDDI_VERSION >= NTDDI_WIN10)
547 ULONG NtBuildNumber; // 0x260
548#else
549 ULONG Reserved2; // 0x260
550#endif
551#else
552 ULONG Reserved2[7]; // 0x248
553#endif // NTDDI_VERSION >= NTDDI_WIN8
554
555 NT_PRODUCT_TYPE NtProductType; // 0x264
556 BOOLEAN ProductTypeIsValid; // 0x268
557 BOOLEAN Reserved0[1]; // 0x269
558#if (NTDDI_VERSION >= NTDDI_WIN8)
559 USHORT NativeProcessorArchitecture; // 0x26a
560#endif
561 ULONG NtMajorVersion; // 0x26c
562 ULONG NtMinorVersion; // 0x270
563 BOOLEAN ProcessorFeatures[PROCESSOR_FEATURE_MAX]; // 0x274
564 ULONG Reserved1; // 0x2b4
565 ULONG Reserved3; // 0x2b8
566 volatile ULONG TimeSlip; // 0x2bc
567 ALTERNATIVE_ARCHITECTURE_TYPE AlternativeArchitecture; // 0x2c0
568#if (NTDDI_VERSION >= NTDDI_WIN10)
569 ULONG BootId; // 0x2c4
570#else
571 ULONG AltArchitecturePad[1]; // 0x2c4
572#endif
573 LARGE_INTEGER SystemExpirationDate; // 0x2c8
574 ULONG SuiteMask; // 0x2d0
575 BOOLEAN KdDebuggerEnabled; // 0x2d4
576 union
577 {
578 UCHAR MitigationPolicies; // 0x2d5
579 struct
580 {
581 UCHAR NXSupportPolicy : 2;
582 UCHAR SEHValidationPolicy : 2;
583 UCHAR CurDirDevicesSkippedForDlls : 2;
584 UCHAR Reserved : 2;
585 };
586 };
587#if (NTDDI_VERSION >= NTDDI_WIN10_19H1)
588 USHORT CyclesPerYield; // 0x2d6 // Win 10 19H1+
589#else
590 UCHAR Reserved6[2]; // 0x2d6
591#endif
592 volatile ULONG ActiveConsoleId; // 0x2d8
593 volatile ULONG DismountCount; // 0x2dc
594 ULONG ComPlusPackage; // 0x2e0
595 ULONG LastSystemRITEventTickCount; // 0x2e4
596 ULONG NumberOfPhysicalPages; // 0x2e8
597 BOOLEAN SafeBootMode; // 0x2ec
598
599#if (NTDDI_VERSION == NTDDI_WIN7)
600 union
601 {
602 UCHAR TscQpcData; // 0x2ed
603 struct
604 {
605 UCHAR TscQpcEnabled:1; // 0x2ed
606 UCHAR TscQpcSpareFlag:1; // 0x2ed
607 UCHAR TscQpcShift:6; // 0x2ed
610 UCHAR TscQpcPad[2]; // 0x2ee
611#elif (NTDDI_VERSION >= NTDDI_WIN10_RS1)
612 union
613 {
614 UCHAR VirtualizationFlags; // 0x2ed
615#if defined(_ARM64_)
616 struct
617 {
618 UCHAR ArchStartedInEl2 : 1;
619 UCHAR QcSlIsSupported : 1;
620 UCHAR : 6;
621 };
622#endif
623 };
624 UCHAR Reserved12[2]; // 0x2ee
625#else
626 UCHAR Reserved12[3]; // 0x2ed
627#endif // NTDDI_VERSION == NTDDI_WIN7
628
629#if (NTDDI_VERSION >= NTDDI_VISTA)
630 union
631 {
632 ULONG SharedDataFlags; // 0x2f0
633 struct
634 {
635 ULONG DbgErrorPortPresent : 1; // 0x2f0
636 ULONG DbgElevationEnabled : 1; // 0x2f0
637 ULONG DbgVirtEnabled : 1; // 0x2f0
638 ULONG DbgInstallerDetectEnabled : 1; // 0x2f0
639#if (NTDDI_VERSION >= NTDDI_WIN8)
640 ULONG DbgLkgEnabled : 1; // 0x2f0
641#else
642 ULONG DbgSystemDllRelocated : 1; // 0x2f0
643#endif
644 ULONG DbgDynProcessorEnabled : 1; // 0x2f0
645#if (NTDDI_VERSION >= NTDDI_WIN8)
646 ULONG DbgConsoleBrokerEnabled : 1; // 0x2f0
647#else
648 ULONG DbgSEHValidationEnabled : 1; // 0x2f0
649#endif
650 ULONG DbgSecureBootEnabled : 1; // 0x2f0 Win8+
651 ULONG DbgMultiSessionSku : 1; // 0x2f0 Win 10+
652 ULONG DbgMultiUsersInSessionSku : 1; // 0x2f0 Win 10 RS1+
653 ULONG DbgStateSeparationEnabled : 1; // 0x2f0 Win 10 RS3+
654 ULONG SpareBits : 21; // 0x2f0
657#else
658 ULONG TraceLogging;
659#endif // NTDDI_VERSION >= NTDDI_VISTA
660
661 ULONG DataFlagsPad[1]; // 0x2f4
662 ULONGLONG TestRetInstruction; // 0x2f8
663#if (NTDDI_VERSION >= NTDDI_WIN8)
664 ULONGLONG QpcFrequency; // 0x300
665#else
666 ULONG SystemCall; // 0x300
667 ULONG SystemCallReturn; // 0x304
668#endif
669#if (NTDDI_VERSION >= NTDDI_WIN10_TH2)
670 ULONG SystemCall; // 0x308
671 ULONG SystemCallPad0; // 0x30c Renamed to Reserved2 in Vibranium R3
672 ULONGLONG SystemCallPad[2]; // 0x310
673#else
674 ULONGLONG SystemCallPad[3]; // 0x308
675#endif
676 union
677 {
678 volatile KSYSTEM_TIME TickCount; // 0x320
679 volatile ULONG64 TickCountQuad; // 0x320
680 struct
681 {
682 ULONG ReservedTickCountOverlay[3]; // 0x320
683 ULONG TickCountPad[1]; // 0x32c
686 ULONG Cookie; // 0x330
687
688#if (NTDDI_VERSION < NTDDI_VISTA)
689 ULONG Wow64SharedInformation[MAX_WOW64_SHARED_ENTRIES]; // 0x334
690#endif
691
692//
693// Windows Vista and later
694//
695#if (NTDDI_VERSION >= NTDDI_VISTA)
696
697 ULONG CookiePad[1]; // 0x334
698 LONGLONG ConsoleSessionForegroundProcessId; // 0x338
699
700#if (NTDDI_VERSION >= NTDDI_WIN8)
701#if (NTDDI_VERSION >= NTDDI_WINBLUE)
702 ULONGLONG TimeUpdateLock; // 0x340
703#else
704 ULONGLONG TimeUpdateSequence; // 0x340
705#endif
706 ULONGLONG BaselineSystemTimeQpc; // 0x348
707 ULONGLONG BaselineInterruptTimeQpc; // 0x350
708 ULONGLONG QpcSystemTimeIncrement; // 0x358
709 ULONGLONG QpcInterruptTimeIncrement; // 0x360
710#if (NTDDI_VERSION >= NTDDI_WIN10)
711 UCHAR QpcSystemTimeIncrementShift; // 0x368
712 UCHAR QpcInterruptTimeIncrementShift; // 0x369
713 USHORT UnparkedProcessorCount; // 0x36a
714 ULONG EnclaveFeatureMask[4]; // 0x36c Win 10 TH2+
715 ULONG TelemetryCoverageRound; // 0x37c Win 10 RS2+
716#else // NTDDI_VERSION < NTDDI_WIN10
717 ULONG QpcSystemTimeIncrement32; // 0x368
718 ULONG QpcInterruptTimeIncrement32; // 0x36c
719 UCHAR QpcSystemTimeIncrementShift; // 0x370
720 UCHAR QpcInterruptTimeIncrementShift; // 0x371
721#if (NTDDI_VERSION >= NTDDI_WINBLUE)
722 USHORT UnparkedProcessorCount; // 0x372
723 UCHAR Reserved8[12]; // 0x374
724#else
725 UCHAR Reserved8[14]; // 0x372
726#endif
727#endif // NTDDI_VERSION < NTDDI_WIN10
728#elif (NTDDI_VERSION >= NTDDI_VISTASP2)
729 ULONG DEPRECATED_Wow64SharedInformation[MAX_WOW64_SHARED_ENTRIES]; // 0x340
730#else
731 ULONG Wow64SharedInformation[MAX_WOW64_SHARED_ENTRIES]; // 0x340
732#endif // NTDDI_VERSION >= NTDDI_VISTA
733
734#if (NTDDI_VERSION >= NTDDI_WIN7)
735 USHORT UserModeGlobalLogger[16]; // 0x380
736#else
737 USHORT UserModeGlobalLogger[8]; // 0x380
738 ULONG HeapTracingPid[2]; // 0x390
739 ULONG CritSecTracingPid[2]; // 0x398
740#endif
741
742 ULONG ImageFileExecutionOptions; // 0x3a0
743 ULONG LangGenerationCount; // 0x3a4 Vista SP2+
744
745#if (NTDDI_VERSION >= NTDDI_WIN8)
746 ULONGLONG Reserved4; // 0x3a8
747#elif (NTDDI_VERSION >= NTDDI_WIN7)
748 ULONGLONG Reserved5; // 0x3a8
749#else
750 union
751 {
752 KAFFINITY ActiveProcessorAffinity; // 0x3a8
753 ULONGLONG AffinityPad; // 0x3a8
754 };
755#endif
756
757 volatile ULONGLONG InterruptTimeBias; // 0x3b0
758#endif // NTDDI_VERSION >= NTDDI_VISTA
759
760//
761// Windows 7 and later
762//
763#if (NTDDI_VERSION >= NTDDI_WIN7)
764 volatile ULONGLONG QpcBias; // 0x3b8 // Win7: TscQpcBias
765 /* volatile */ ULONG ActiveProcessorCount; // 0x3c0 // not volatile since Win 8.1 Update 1
766
767#if (NTDDI_VERSION >= NTDDI_WIN8)
768 volatile UCHAR ActiveGroupCount; // 0x3c4
769 UCHAR Reserved9; // 0x3c5
770 union
771 {
772 USHORT QpcData; // 0x3c6
773 struct
774 {
775 volatile UCHAR QpcBypassEnabled; // 0x3c6
776 UCHAR QpcShift; // 0x3c7
777 };
778 };
779 LARGE_INTEGER TimeZoneBiasEffectiveStart; // 0x3c8
780 LARGE_INTEGER TimeZoneBiasEffectiveEnd; // 0x3d0
781 XSTATE_CONFIGURATION XState; // 0x3d8
782#else
783 USHORT ActiveGroupCount; // 0x3c4
784 USHORT Reserved4; // 0x3c6
785 volatile ULONG AitSamplingValue; // 0x3c8
786 volatile ULONG AppCompatFlag; // 0x3cc
787 ULONGLONG SystemDllNativeRelocation; // 0x3d0 deprecated in Win7 SP2
788 ULONG SystemDllWowRelocation; // 0x3d8 deprecated in Win7 SP2
789 ULONG XStatePad[1]; // 0x3dc
790 XSTATE_CONFIGURATION XState; // 0x3e0
791#endif // NTDDI_VERSION >= NTDDI_WIN8
792#endif // NTDDI_VERSION >= NTDDI_WIN7
793
794//
795// Windows 10 Vibranium and later
796//
797#if (NTDDI_VERSION >= NTDDI_WIN10_VB)
798 KSYSTEM_TIME FeatureConfigurationChangeStamp; // 0x710 // Win 11: 0x720
799 ULONG Spare; // 0x71c // Win 11: 0x72c
800#endif // NTDDI_VERSION >= NTDDI_WIN10_VB
801
802//
803// Windows 11 Nickel and later
804//
805#if (NTDDI_VERSION >= NTDDI_WIN11_NI)
806 ULONG64 UserPointerAuthMask; // 0x730
807#endif // NTDDI_VERSION >= NTDDI_WIN11_NI
808
809#if (NTDDI_VERSION < NTDDI_WIN7) && defined(__REACTOS__)
811#endif
813
814//
815// VDM Structures
816//
817#include "pshpack1.h"
818typedef struct _VdmVirtualIca
819{
820 LONG ica_count[8];
821 LONG ica_int_line;
822 LONG ica_cpu_int;
823 USHORT ica_base;
824 USHORT ica_hipiri;
825 USHORT ica_mode;
826 UCHAR ica_master;
827 UCHAR ica_irr;
828 UCHAR ica_isr;
829 UCHAR ica_imr;
830 UCHAR ica_ssr;
831} VDMVIRTUALICA, *PVDMVIRTUALICA;
832#include "poppack.h"
833
834typedef struct _VdmIcaUserData
835{
836 PVOID pIcaLock;
837 PVDMVIRTUALICA pIcaMaster;
838 PVDMVIRTUALICA pIcaSlave;
839 PULONG pDelayIrq;
840 PULONG pUndelayIrq;
841 PULONG pDelayIret;
842 PULONG pIretHooked;
843 PULONG pAddrIretBopTable;
844 PHANDLE phWowIdleEvent;
845 PLARGE_INTEGER pIcaTimeout;
846 PHANDLE phMainThreadSuspended;
847} VDMICAUSERDATA, *PVDMICAUSERDATA;
848
849typedef struct _VDM_INITIALIZE_DATA
850{
851 PVOID TrapcHandler;
852 PVDMICAUSERDATA IcaUserData;
853} VDM_INITIALIZE_DATA, *PVDM_INITIALIZE_DATA;
854
855#else
856
857//
858// System Thread Start Routine
859//
860typedef
864 PVOID StartContext
865);
866
867#ifndef _NTSYSTEM_
868typedef VOID
870 IN PVOID NormalContext OPTIONAL,
873
874typedef VOID
876 IN struct _KAPC *Apc);
877
878typedef VOID
880 IN struct _KAPC *Apc,
881 IN OUT PKNORMAL_ROUTINE *NormalRoutine OPTIONAL,
885#endif
886
887//
888// APC Environment Types
889//
891{
897
899{
900#if (NTDDI_VERSION >= NTDDI_LONGHORN) || defined(_M_ARM) || defined(_M_AMD64)
902#endif
906
907typedef struct _KTIMER_TABLE
908{
912
913typedef struct _KDPC_LIST
914{
918
919typedef struct _SYNCH_COUNTERS
920{
968
969//
970// PRCB DPC Data
971//
972typedef struct _KDPC_DATA
973{
974#if (NTDDI_VERSION >= NTDDI_LONGHORN)
976#else
977 LIST_ENTRY DpcListHead;
978#endif
980#if defined(_M_AMD64) || defined(_M_ARM)
981 volatile LONG DpcQueueDepth;
982#else
984#endif
986#if (NTDDI_VERSION >= NTDDI_LONGHORN) || defined(_M_ARM)
988#endif
990
991//
992// Per-Processor Lookaside List
993//
994typedef struct _PP_LOOKASIDE_LIST
995{
999
1000//
1001// Architectural Types
1002//
1003#include <arch/ketypes.h>
1004
1005//
1006// Kernel Memory Node
1007//
1008typedef struct _KNODE
1009{
1016 struct _flags {
1024
1025//
1026// Structure for Get/SetContext APC
1027//
1028typedef struct _GETSETCONTEXT
1029{
1035
1036//
1037// Kernel Profile Object
1038//
1039typedef struct _KPROFILE
1040{
1054
1055//
1056// Kernel Interrupt Object
1057//
1058typedef struct _KINTERRUPT
1059{
1064#if (NTDDI_VERSION >= NTDDI_LONGHORN)
1067#endif
1081#if (NTDDI_VERSION >= NTDDI_LONGHORN)
1083#endif
1086#if (NTDDI_VERSION >= NTDDI_LONGHORN)
1088#endif
1089#ifdef _M_AMD64
1090 PKTRAP_FRAME TrapFrame;
1092#endif
1095
1096//
1097// Kernel Event Pair Object
1098//
1099typedef struct _KEVENT_PAIR
1100{
1106
1107//
1108// Kernel No Execute Options
1109//
1110typedef struct _KEXECUTE_OPTIONS
1111{
1120
1121#if (NTDDI_VERSION >= NTDDI_WIN7)
1123{
1125 struct
1126 {
1134 };
1136
1137typedef struct _COUNTER_READING
1138{
1144
1145typedef struct _KTHREAD_COUNTERS
1146{
1148 struct _THREAD_PERFORMANCE_DATA* UserData;
1155#endif
1156
1158#if (NTDDI_VERSION >= NTDDI_WIN8)
1159typedef struct _RTL_RB_TREE
1160{
1164#endif
1165
1166#if (NTDDI_VERSION >= NTDDI_WINBLUE)
1168{
1169 union
1170 {
1171 struct
1172 {
1173#if (NTDDI_VERSION >= NTDDI_WIN10) // since 6.4.9841.0
1175#else
1176 ULONG_PTR Waiting : 1;
1177#endif
1179 ULONG_PTR Reserved : (8 * sizeof(PVOID)) - 3; // previously Spare
1181 };
1183 };
1184 union
1185 {
1187 struct
1188 {
1190#ifdef _WIN64
1191 ULONG SessionPad;
1192#endif
1193 };
1194 };
1196
1197typedef struct _KLOCK_ENTRY
1198{
1199 union
1200 {
1203 };
1204#if (NTDDI_VERSION >= NTDDI_WIN10)
1205 union
1206 {
1208 struct
1209 {
1211 union
1212 {
1214 struct
1215 {
1218 };
1219 };
1220 union
1221 {
1224 };
1225 union
1226 {
1228 struct
1229 {
1232 UCHAR IoQoSWaiter : 1; // since TH2
1234 };
1235 };
1236 };
1237 struct
1238 {
1241 };
1242 };
1243#ifdef _WIN64
1244 ULONG SpareFlags;
1245#endif
1246#else
1247 union
1248 {
1249 PVOID ThreadUnsafe;
1250 struct
1251 {
1252 volatile UCHAR HeadNodeByte;
1253 UCHAR Reserved1[2];
1254 volatile UCHAR AcquiredByte;
1255 };
1256 };
1257#endif
1258
1259 union
1260 {
1263 struct
1264 {
1265#if (NTDDI_VERSION >= NTDDI_WIN10)
1267#else
1268 volatile UCHAR WaitingAndBusyByte;
1269#endif
1270 UCHAR Reserved[sizeof(PVOID) - 2];
1272 union
1273 {
1275 struct
1276 {
1278#ifdef _WIN64
1279 ULONG SessionPad;
1280#endif
1281 };
1282 };
1283 };
1284 };
1285 union
1286 {
1287 struct
1288 {
1291 };
1293 };
1295 union
1296 {
1297#if _WIN64
1298 ULONG AllBoosts : 17;
1299#else
1301#endif
1302 struct
1303 {
1304 struct
1305 {
1308 };
1309 struct
1310 {
1314 };
1315 };
1316 };
1317#if _WIN64
1318 ULONG SparePad;
1319#endif
1321
1322#endif
1323
1324//
1325// Kernel Thread (KTHREAD)
1326//
1327#if (NTDDI_VERSION < NTDDI_WIN8)
1328
1329typedef struct _KTHREAD
1330{
1332#if (NTDDI_VERSION >= NTDDI_LONGHORN) // [
1334#ifndef _WIN64 // [
1336#endif // ]
1338#else // ][
1340#endif // ]
1342 ULONG_PTR StackLimit; // FIXME: PVOID
1345#if (NTDDI_VERSION >= NTDDI_WIN7) // [
1348 BOOLEAN Alerted[2];
1349 union
1350 {
1351 struct
1352 {
1353 ULONG KernelStackResident:1;
1356 ULONG WaitNext:1;
1358 ULONG Alertable:1;
1359 ULONG GdiFlushActive:1;
1366 ULONG Reserved:19;
1367 };
1369 };
1370#endif // ]
1371 union
1372 {
1374 struct
1375 {
1376 UCHAR ApcStateFill[FIELD_OFFSET(KAPC_STATE, UserApcPending) + 1];
1377#if (NTDDI_VERSION >= NTDDI_LONGHORN) // [
1379#if (NTDDI_VERSION >= NTDDI_WIN7) // [
1380 /* On x86, the following members "fall out" of the union */
1381 volatile ULONG NextProcessor;
1382 volatile ULONG DeferredProcessor;
1383#else // ][
1384 /* On x86, the following members "fall out" of the union */
1385 volatile USHORT NextProcessor;
1386 volatile USHORT DeferredProcessor;
1387#endif // ]
1388#else // ][
1390 /* On x86, the following members "fall out" of the union */
1391 volatile UCHAR NextProcessor;
1392 volatile UCHAR DeferredProcessor;
1395#endif // ]
1396 };
1397 };
1398 KSPIN_LOCK ApcQueueLock;
1399#if !defined(_M_AMD64) && !defined(_M_ARM64) // [
1401 volatile UCHAR State;
1405#endif // ]
1407#if (NTDDI_VERSION >= NTDDI_WIN7) // [
1409#else // ][
1410 union
1411 {
1414 };
1415#if (NTDDI_VERSION >= NTDDI_LONGHORN) // [
1416 union
1417 {
1418 struct
1419 {
1420 ULONG KernelStackResident:1;
1423 ULONG WaitNext:1;
1425 ULONG Alertable:1;
1426 ULONG GdiFlushActive:1;
1427 ULONG Reserved:25;
1428 };
1430 };
1431#else // ][
1434#endif // ]
1436#if (NTDDI_VERSION < NTDDI_LONGHORN)
1439#endif // ]
1440 volatile UCHAR SwapBusy;
1442#endif // ]
1443 union
1444 {
1447 };
1448 PKQUEUE Queue;
1449#if !defined(_M_AMD64) && !defined(_M_ARM64) // [
1451 union
1452 {
1453 struct
1454 {
1457 };
1459 };
1460#endif // ]
1461 struct _TEB *Teb;
1462
1463#if (NTDDI_VERSION >= NTDDI_WIN7) // [
1464 KTIMER Timer;
1465#else // ][
1466 union
1467 {
1468 KTIMER Timer;
1469 struct
1470 {
1471 UCHAR TimerFill[FIELD_OFFSET(KTIMER, Period) + sizeof(LONG)];
1472#if !defined(_WIN64) // [
1473 };
1474 };
1475#endif // ]
1476#endif // ]
1477 union
1478 {
1479 struct
1480 {
1483#if (NTDDI_VERSION >= NTDDI_LONGHORN) // [
1484 ULONG EtwStackTraceApc1Inserted:1;
1485 ULONG EtwStackTraceApc2Inserted:1;
1486 ULONG CycleChargePending:1;
1490 ULONG GuiThread:1;
1491 ULONG ReservedFlags:23;
1492#else // ][
1493 LONG ReservedFlags:30;
1494#endif // ]
1495 };
1497 };
1498#if defined(_WIN64) && (NTDDI_VERSION < NTDDI_WIN7) // [
1499 };
1500 };
1501#endif // ]
1502#if (NTDDI_VERSION >= NTDDI_WIN7) // [
1503#if defined(_WIN64) // [
1504 ULONG Spare0;
1505#else // ][
1507#endif // ]
1508#endif // ]
1509 union
1510 {
1512#if (NTDDI_VERSION < NTDDI_WIN7) // [
1513 struct
1514 {
1515 UCHAR WaitBlockFill0[FIELD_OFFSET(KWAIT_BLOCK, SpareByte)]; // 32bit = 23, 64bit = 43
1516#if (NTDDI_VERSION >= NTDDI_LONGHORN) // [
1517 UCHAR IdealProcessor;
1518#else // ][
1519 BOOLEAN SystemAffinityActive;
1520#endif // ]
1521 };
1522 struct
1523 {
1524 UCHAR WaitBlockFill1[1 * sizeof(KWAIT_BLOCK) + FIELD_OFFSET(KWAIT_BLOCK, SpareByte)]; // 47 / 91
1526 };
1527 struct
1528 {
1529 UCHAR WaitBlockFill2[2 * sizeof(KWAIT_BLOCK) + FIELD_OFFSET(KWAIT_BLOCK, SpareByte)]; // 71 / 139
1530 UCHAR ResourceIndex;
1531 };
1532 struct
1533 {
1534 UCHAR WaitBlockFill3[3 * sizeof(KWAIT_BLOCK) + FIELD_OFFSET(KWAIT_BLOCK, SpareByte)]; // 95 / 187
1535 UCHAR LargeStack;
1536 };
1537#endif // ]
1538#ifdef _WIN64 // [
1539 struct
1540 {
1541 UCHAR WaitBlockFill4[FIELD_OFFSET(KWAIT_BLOCK, SpareLong)];
1542 ULONG ContextSwitches;
1543 };
1544 struct
1545 {
1546 UCHAR WaitBlockFill5[1 * sizeof(KWAIT_BLOCK) + FIELD_OFFSET(KWAIT_BLOCK, SpareLong)];
1547 UCHAR State;
1548 UCHAR NpxState;
1549 UCHAR WaitIrql;
1550 CHAR WaitMode;
1551 };
1552 struct
1553 {
1554 UCHAR WaitBlockFill6[2 * sizeof(KWAIT_BLOCK) + FIELD_OFFSET(KWAIT_BLOCK, SpareLong)];
1555 ULONG WaitTime;
1556 };
1557#if (NTDDI_VERSION >= NTDDI_WIN7) // [
1558 struct
1559 {
1560 UCHAR WaitBlockFill7[168];
1561 PVOID TebMappedLowVa;
1562 struct _UMS_CONTROL_BLOCK* Ucb;
1563 };
1564#endif // ]
1565 struct
1566 {
1567#if (NTDDI_VERSION >= NTDDI_WIN7) // [
1568 UCHAR WaitBlockFill8[188];
1569#else // ][
1570 UCHAR WaitBlockFill7[3 * sizeof(KWAIT_BLOCK) + FIELD_OFFSET(KWAIT_BLOCK, SpareLong)];
1571#endif // ]
1572 union
1573 {
1574 struct
1575 {
1576 SHORT KernelApcDisable;
1577 SHORT SpecialApcDisable;
1578 };
1579 ULONG CombinedApcDisable;
1580 };
1581 };
1582#endif // ]
1583 };
1584 LIST_ENTRY QueueListEntry;
1585 PKTRAP_FRAME TrapFrame;
1586#if (NTDDI_VERSION >= NTDDI_LONGHORN) // [
1587 PVOID FirstArgument;
1588 union
1589 {
1590 PVOID CallbackStack;
1591 ULONG_PTR CallbackDepth;
1592 };
1593#else // ][
1594 PVOID CallbackStack;
1595#endif // ]
1596#if (NTDDI_VERSION < NTDDI_LONGHORN) || ((NTDDI_VERSION < NTDDI_WIN7) && !defined(_WIN64)) // [
1598#endif // ]
1599#if (NTDDI_VERSION < NTDDI_LONGHORN) && defined(_WIN64) // [
1600 ULONG KernelLimit;
1601#endif // ]
1602 UCHAR ApcStateIndex;
1603#if (NTDDI_VERSION < NTDDI_LONGHORN) // [
1604 UCHAR IdealProcessor;
1605 BOOLEAN Preempted;
1606 BOOLEAN ProcessReadyQueue;
1607#ifdef _WIN64 // [
1608 PVOID Win32kTable;
1609 ULONG Win32kLimit;
1610#endif // ]
1611 BOOLEAN KernelStackResident;
1612#endif // ]
1613 SCHAR BasePriority;
1614 SCHAR PriorityDecrement;
1615#if (NTDDI_VERSION >= NTDDI_LONGHORN) // [
1616 BOOLEAN Preempted;
1617 UCHAR AdjustReason;
1618 CHAR AdjustIncrement;
1619#if (NTDDI_VERSION >= NTDDI_WIN7)
1621#else
1622 UCHAR Spare01;
1623#endif
1624#endif // ]
1625 CHAR Saturation;
1626#if (NTDDI_VERSION >= NTDDI_LONGHORN) // [
1627 ULONG SystemCallNumber;
1628#if (NTDDI_VERSION >= NTDDI_WIN7) // [
1629 ULONG FreezeCount;
1630#else // ][
1631 ULONG Spare02;
1632#endif // ]
1633#endif // ]
1634#if (NTDDI_VERSION >= NTDDI_WIN7) // [
1635 GROUP_AFFINITY UserAffinity;
1636 struct _KPROCESS *Process;
1638 ULONG IdealProcessor;
1639 ULONG UserIdealProcessor;
1640#else // ][
1641 KAFFINITY UserAffinity;
1642 struct _KPROCESS *Process;
1644#endif // ]
1645 PKAPC_STATE ApcStatePointer[2];
1646 union
1647 {
1648 KAPC_STATE SavedApcState;
1649 struct
1650 {
1651 UCHAR SavedApcStateFill[FIELD_OFFSET(KAPC_STATE, UserApcPending) + 1];
1652#if (NTDDI_VERSION >= NTDDI_WIN7) // [
1653 UCHAR WaitReason;
1654#else // ][
1655 CCHAR FreezeCount;
1656#endif // ]
1657#ifndef _WIN64 // [
1658 };
1659 };
1660#endif // ]
1661 CCHAR SuspendCount;
1662#if (NTDDI_VERSION >= NTDDI_WIN7) // [
1663 CCHAR Spare1;
1664#else // ][
1665 UCHAR UserIdealProcessor;
1666#endif // ]
1667#if (NTDDI_VERSION >= NTDDI_WIN7) // [
1668#elif (NTDDI_VERSION >= NTDDI_LONGHORN) // ][
1669 UCHAR Spare03;
1670#else // ][
1671 UCHAR CalloutActive;
1672#endif // ]
1673#ifdef _WIN64 // [
1674 UCHAR CodePatchInProgress;
1675 };
1676 };
1677#endif // ]
1678#if defined(_M_IX86) // [
1679#if (NTDDI_VERSION >= NTDDI_LONGHORN) // [
1680 UCHAR OtherPlatformFill;
1681#else // ][
1682 UCHAR Iopl;
1683#endif // ]
1684#endif // ]
1685 PVOID Win32Thread;
1686 PVOID StackBase;
1687 union
1688 {
1689 KAPC SuspendApc;
1690 struct
1691 {
1692 UCHAR SuspendApcFill0[1];
1693#if (NTDDI_VERSION >= NTDDI_WIN7) // [
1694 UCHAR ResourceIndex;
1695#elif (NTDDI_VERSION >= NTDDI_LONGHORN) // ][
1696 CHAR Spare04;
1697#else // ][
1698 SCHAR Quantum;
1699#endif // ]
1700 };
1701 struct
1702 {
1703 UCHAR SuspendApcFill1[3];
1705 };
1706 struct
1707 {
1708 UCHAR SuspendApcFill2[4];
1710 };
1711 struct
1712 {
1713 UCHAR SuspendApcFill3[FIELD_OFFSET(KAPC, SystemArgument1)];
1714#if (NTDDI_VERSION >= NTDDI_LONGHORN)
1715 PKPRCB WaitPrcb;
1716#else
1717 PVOID TlsArray;
1718#endif
1719 };
1720 struct
1721 {
1722 UCHAR SuspendApcFill4[FIELD_OFFSET(KAPC, SystemArgument2)]; // 40 / 72
1723 PVOID LegoData;
1724 };
1725 struct
1726 {
1727 UCHAR SuspendApcFill5[FIELD_OFFSET(KAPC, Inserted) + 1]; // 47 / 83
1728#if (NTDDI_VERSION >= NTDDI_WIN7) // [
1729 UCHAR LargeStack;
1730#else // ][
1732#endif // ]
1733#ifdef _WIN64 // [
1735#endif // ]
1736 };
1737 };
1738#ifndef _WIN64 // [
1740#endif // ]
1741 union
1742 {
1743 KSEMAPHORE SuspendSemaphore;
1744 struct
1745 {
1746 UCHAR SuspendSemaphorefill[FIELD_OFFSET(KSEMAPHORE, Limit) + 4]; // 20 / 28
1747#ifdef _WIN64 // [
1748 ULONG SListFaultCount;
1749#endif // ]
1750 };
1751 };
1752#ifndef _WIN64 // [
1753 ULONG SListFaultCount;
1754#endif // ]
1755 LIST_ENTRY ThreadListEntry;
1756#if (NTDDI_VERSION >= NTDDI_LONGHORN) // [
1757 LIST_ENTRY MutantListHead;
1758#endif // ]
1759 PVOID SListFaultAddress;
1760#ifdef _M_AMD64 // [
1761 LONG64 ReadOperationCount;
1762 LONG64 WriteOperationCount;
1763 LONG64 OtherOperationCount;
1764 LONG64 ReadTransferCount;
1765 LONG64 WriteTransferCount;
1766 LONG64 OtherTransferCount;
1767#endif // ]
1768#if (NTDDI_VERSION >= NTDDI_WIN7) // [
1769 PKTHREAD_COUNTERS ThreadCounters;
1770 PXSTATE_SAVE XStateSave;
1771#elif (NTDDI_VERSION >= NTDDI_LONGHORN) // ][
1772 PVOID MdlForLockedTeb;
1773#endif // ]
1774#if defined(__REACTOS__) && defined(_M_AMD64) // HACK!
1775 XSAVE_FORMAT* StateSaveArea;
1776#endif
1777} KTHREAD;
1778
1779#else // not (NTDDI_VERSION < NTDDI_WIN8)
1780
1781#if defined(_WIN64) && (NTDDI_VERSION < 0x06032580) // since WIN 8.1 Update1 6.3.9600.16384
1782#define NUMBER_OF_LOCK_ENTRIES 5
1783#else
1784#define NUMBER_OF_LOCK_ENTRIES 6
1785#endif
1786
1787typedef struct _KTHREAD
1788{
1793 volatile VOID *StackLimit;
1797#ifndef _WIN64
1800#endif
1805 struct _KSCHEDULING_GROUP* SchedulingGroup;
1809
1810 union
1811 {
1812 struct
1813 {
1814#if (NTDDI_VERSION < NTDDI_WIN10)
1815 ULONG KernelStackResident : 1;
1816#else
1818#endif
1820#if (NTDDI_VERSION < NTDDI_WIN10TH2)
1822#endif
1827#if (NTDDI_VERSION < NTDDI_WIN81)
1828 ULONG CodePatchInProgress : 1;
1829#endif
1844 };
1846 };
1847
1848 union
1849 {
1850 struct
1851 {
1866#if (NTDDI_VERSION >= 0x060324D7) // since 6.3.9431.0
1867 ULONG TerminationApcRequest : 1;
1868#endif
1869#if (NTDDI_VERSION >= 0x06032580) // since 6.3.9600.16384
1870 ULONG AutoBoostEntriesExhausted : 1;
1871#endif
1872#if (NTDDI_VERSION >= 0x06032580) // since 6.3.9600.17031
1873 ULONG KernelStackResident : 1;
1874#endif
1875#if (NTDDI_VERSION >= NTDDI_WIN10)
1879#endif
1881#if (NTDDI_VERSION < NTDDI_WIN10)
1882 ULONG ReservedFlags : 10;
1883#endif
1884 };
1886 };
1887
1888#if (NTDDI_VERSION >= NTDDI_WIN10)
1889 volatile UCHAR Tag;
1894#else
1895 ULONG Spare0;
1896#endif
1898#ifdef _WIN64
1899 ULONG Spare1; // Win 10: Spare10
1900#endif
1903
1904 union
1905 {
1907 struct
1908 {
1909 UCHAR ApcStateFill[RTL_SIZEOF_THROUGH_FIELD(KAPC_STATE, UserApcPending)]; // 32bit: 23/0x17, 64bit: 43/0x2B
1912 };
1913 };
1914
1915#ifndef _WIN64
1917 volatile UCHAR State;
1918#if (NTDDI_VERSION >= NTDDI_WIN10) // since 10.0.10074.0
1920#else
1921 CHAR NpxState;
1922#endif
1925#endif
1926
1929 union
1930 {
1933 };
1936#if (NTDDI_VERSION >= NTDDI_WIN8 /* 0x060223F0 */) // since 6.2.9200.16384
1938#endif
1940
1941 union
1942 {
1944#ifdef _WIN64
1945 struct
1946 {
1947 UCHAR WaitBlockFill4[FIELD_OFFSET(KWAIT_BLOCK, SpareLong)]; // 32bit: -, 64bit: 20/0x14
1949 };
1950 struct
1951 {
1952 UCHAR WaitBlockFill5[1 * sizeof(KWAIT_BLOCK) + FIELD_OFFSET(KWAIT_BLOCK, SpareLong)]; // 32bit: -, 64bit: 68/0x44
1953 UCHAR State;
1954#if (NTDDI_VERSION >= NTDDI_WIN10)
1955 CHAR Spare13;
1956#else
1957 CHAR NpxState;
1958#endif
1960 CHAR WaitMode;
1961 };
1962 struct
1963 {
1964 UCHAR WaitBlockFill6[2 * sizeof(KWAIT_BLOCK) + FIELD_OFFSET(KWAIT_BLOCK, SpareLong)]; // 32bit: -, 64bit: 116/0x74
1966 };
1967 struct
1968 {
1969 UCHAR WaitBlockFill7[3 * sizeof(KWAIT_BLOCK) + FIELD_OFFSET(KWAIT_BLOCK, SpareLong)]; // 32bit: -, 64bit: 164/0xA4
1970 union
1971 {
1972 struct
1973 {
1976 };
1978 };
1979 };
1980#endif
1981 struct
1982 {
1983 UCHAR WaitBlockFill8[FIELD_OFFSET(KWAIT_BLOCK, SparePtr)]; // 32bit: 20/0x14, 64bit: 40/0x28
1985 };
1986 struct
1987 {
1988 UCHAR WaitBlockFill9[1 * sizeof(KWAIT_BLOCK) + FIELD_OFFSET(KWAIT_BLOCK, SparePtr)]; // 32bit: 44/0x2C, 64bit: 88/0x58
1990 };
1991 struct
1992 {
1993 UCHAR WaitBlockFill10[2 * sizeof(KWAIT_BLOCK) + FIELD_OFFSET(KWAIT_BLOCK, SparePtr)]; // 32bit: 68/0x44, 64bit: 136/0x88
1995 };
1996 struct
1997 {
1998 UCHAR WaitBlockFill11[3 * sizeof(KWAIT_BLOCK) + FIELD_OFFSET(KWAIT_BLOCK, Object)]; // 32bit: 88/0x58, 64bit: 176/0xB0
1999#ifdef _WIN64
2000 struct _UMS_CONTROL_BLOCK* Ucb;
2001 struct _KUMS_CONTEXT_HEADER* Uch;
2002#else
2004 union
2005 {
2006 struct
2007 {
2010 };
2012 };
2013#endif
2014 };
2015 };
2016
2017#ifdef _WIN64
2018 PVOID TebMappedLowVa;
2019#endif
2021#if (NTDDI_VERSION >= 0x060223F0) // since 6.2.9200.16384
2022 union
2023 {
2025 struct
2026 {
2027 ULONG NextProcessorNumber : 31;
2028 ULONG SharedReadyQueue : 1;
2029 };
2030 };
2031 LONG QueuePriority;
2032#else
2035#endif
2037
2038 union
2039 {
2041 struct
2042 {
2043 UCHAR UserAffinityFill[FIELD_OFFSET(GROUP_AFFINITY, Reserved)]; // 32bit: 6/0x6, 64bit: 10/0x0A
2046 union
2047 {
2049 struct
2050 {
2053 };
2054 };
2058 };
2059 };
2060
2061#if (NTDDI_VERSION >= NTDDI_WIN10) // since 10.0.10240.16384
2063#endif
2064 union
2065 {
2067 struct
2068 {
2069 UCHAR AffinityFill[FIELD_OFFSET(GROUP_AFFINITY, Reserved)]; // 32bit: 6/0x6, 64bit: 10/0x0A
2073 };
2074 };
2075
2076#if (NTDDI_VERSION >= NTDDI_WIN10) // since 10.0.10240.16384
2077#ifdef _WIN64
2079#else
2081#endif
2082#else
2083 PKAPC_STATE ApcStatePointer[2];
2084#endif
2085
2086 union
2087 {
2089 struct
2090 {
2091 UCHAR SavedApcStateFill[FIELD_OFFSET(KAPC_STATE, UserApcPending) + 1]; // 32bit: 23/0x17, 64bit: 43/0x2B
2096 };
2097 };
2098
2099 union
2100 {
2102 struct
2103 {
2104 UCHAR SchedulerApcFill0[FIELD_OFFSET(KAPC, SpareByte0)]; // 32bit: 1/0x01, 64bit: 1/0x01
2106 };
2107 struct
2108 {
2109 UCHAR SchedulerApcFill1[FIELD_OFFSET(KAPC, SpareByte1)]; // 32bit: 3/0x03, 64bit: 3/0x03
2111 };
2112 struct
2113 {
2114 UCHAR SchedulerApcFill2[FIELD_OFFSET(KAPC, SpareLong0)]; // 32bit: 4/0x04, 64bit: 4/0x04
2116 };
2117 struct
2118 {
2121 };
2122 struct
2123 {
2126 };
2127 struct
2128 {
2129 UCHAR SchedulerApcFill5[FIELD_OFFSET(KAPC, Inserted) + 1]; // 32 bit:, 64 bit: 83/0x53
2132 };
2133 };
2134
2138
2139#if (NTDDI_VERSION >= NTDDI_WIN10)
2143#if _WIN64
2144 ULONG SecureThreadCookie;
2145#endif
2146#elif (NTDDI_VERSION >= NTDDI_WINBLUE) // 6.3.9431.0
2147 SINGLE_LIST_ENTRY LockEntriesFreeList;
2148#endif
2149
2150#if (NTDDI_VERSION >= NTDDI_WINBLUE /* 0x06032580 */) // since 6.3.9600.16384
2157 #if (NTDDI_VERSION >= NTDDI_WIN10_RS1)
2159 #endif
2160
2161 #if (NTDDI_VERSION >= NTDDI_WIN10) // since 10.0.10240.16384
2163 #else
2164 volatile SHORT AbReferenceCount;
2165 #endif
2166 #if (NTDDI_VERSION >= 0x06040000) // since 6.4.9841.0
2167 UCHAR AbOrphanedEntrySummary;
2168 UCHAR AbOwnedEntryCount;
2169 #else
2172 #endif
2174 union
2175 {
2177 struct
2178 {
2181 };
2182 };
2183#endif
2184
2185#if _WIN64
2186 LONG64 ReadOperationCount;
2187 LONG64 WriteOperationCount;
2188 LONG64 OtherOperationCount;
2189 LONG64 ReadTransferCount;
2190 LONG64 WriteTransferCount;
2191 LONG64 OtherTransferCount;
2192#endif
2193#if (NTDDI_VERSION >= NTDDI_WIN10) // since 10.0.10041.0
2194 struct _KSCB *QueuedScb;
2195#ifndef _WIN64
2197#endif
2198#endif
2200
2201#endif
2202
2203
2204#define ASSERT_THREAD(object) \
2205 ASSERT((((object)->Header.Type & KOBJECT_TYPE_MASK) == ThreadObject))
2206
2207//
2208// Kernel Process (KPROCESS)
2209//
2210typedef struct _KPROCESS
2211{
2214#if (NTDDI_VERSION >= NTDDI_LONGHORN)
2217#else
2219#endif
2220#if defined(_M_IX86)
2221 KGDTENTRY LdtDescriptor;
2222 KIDTENTRY Int21Descriptor;
2223#endif
2225#if defined(_M_IX86)
2226 UCHAR Iopl;
2227 UCHAR Unused;
2228#endif
2238 union
2239 {
2240 struct
2241 {
2246 };
2248 };
2256 union
2257 {
2260 };
2263#if (NTDDI_VERSION >= NTDDI_LONGHORN) // [
2265#endif // ]
2267
2268#define ASSERT_PROCESS(object) \
2269 ASSERT((((object)->Header.Type & KOBJECT_TYPE_MASK) == ProcessObject))
2270
2271//
2272// System Service Table Descriptor
2273//
2275{
2279#if defined(_IA64_)
2280 LONG TableBaseGpOffset;
2281#endif
2284
2285#if (NTDDI_VERSION >= NTDDI_WIN8)
2286//
2287// Entropy Timing State
2288//
2290{
2297
2298//
2299// Constants from ks386.inc, ksamd64.inc and ksarm.h
2300//
2301#define KENTROPY_TIMING_INTERRUPTS_PER_BUFFER 0x400
2302#define KENTROPY_TIMING_BUFFER_MASK 0x7ff
2303#define KENTROPY_TIMING_ANALYSIS 0x0
2304
2305#endif /* (NTDDI_VERSION >= NTDDI_WIN8) */
2306
2307//
2308// Exported Loader Parameter Block
2309//
2311
2312//
2313// Exported Hardware Data
2314//
2322
2323//
2324// Exported System Service Descriptor Tables
2325//
2328
2329#endif // !NTOS_MODE_USER
2330
2331#endif // _KETYPES_H
_In_ PVOID _In_ ULONG _Out_ PVOID _In_ ULONG _Inout_ PULONG _In_ KPROCESSOR_MODE PreviousMode
unsigned char BOOLEAN
#define VOID
Definition: acefi.h:82
static SERVICE_TABLE_ENTRYW ServiceTable[2]
Definition: eventlog.c:24
@ Reserved2
Definition: bcd.h:202
@ 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: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
_HARDWARE_COUNTER_TYPE
Definition: pstypes.h:123
BOOLEAN KdDebuggerEnabled
Definition: kddata.c:82
#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:1784
struct _KINTERRUPT KINTERRUPT
VOID(NTAPI * PKSYSTEM_ROUTINE)(PKSTART_ROUTINE StartRoutine, PVOID StartContext)
Definition: ketypes.h:862
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:30
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:875
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:891
@ AttachedApcEnvironment
Definition: ketypes.h:893
@ OriginalApcEnvironment
Definition: ketypes.h:892
@ CurrentApcEnvironment
Definition: ketypes.h:894
@ InsertApcEnvironment
Definition: ketypes.h:895
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: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:879
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:869
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 DECLSPEC_ALIGN(x)
Definition: ntbasedef.h:263
#define DUMMYSTRUCTNAME2
Definition: ntbasedef.h:60
#define DUMMYUNIONNAME2
Definition: ntbasedef.h:34
#define RTL_SIZEOF_THROUGH_FIELD(type, field)
Definition: ntbasedef.h:684
#define DUMMYUNIONNAME
Definition: ntbasedef.h:32
#define DUMMYSTRUCTNAME
Definition: ntbasedef.h:58
#define DUMMYUNIONNAME3
Definition: ntbasedef.h:35
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
UNICODE_STRING NtSystemRoot
Definition: init.c:76
ULONG NtMajorVersion
Definition: init.c:45
ULONG NtMinorVersion
Definition: init.c:46
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
@ Reserved3
Definition: sacdrv.h:1471
@ Reserved4
Definition: sacdrv.h:1472
@ Reserved5
Definition: sacdrv.h:1473
enum _KINTERRUPT_MODE KINTERRUPT_MODE
signed char SCHAR
Definition: sqltypes.h:14
ULONG NtBuildNumber
Definition: init.c:50
enum _HARDWARE_COUNTER_TYPE Type
Definition: ketypes.h:1139
ULONG64 Start
Definition: ketypes.h:1141
ULONG64 Total
Definition: ketypes.h:1142
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:1033
KPROCESSOR_MODE Mode
Definition: ketypes.h:1032
KEVENT Event
Definition: ketypes.h:1031
Definition: ketypes.h:547
PVOID NormalContext
Definition: ketypes.h:562
ULONG DpcCount
Definition: ketypes.h:985
ULONG_PTR DpcLock
Definition: ketypes.h:979
volatile ULONG DpcQueueDepth
Definition: ketypes.h:983
PKDPC ActiveDpc
Definition: ketypes.h:987
KDPC_LIST DpcList
Definition: ketypes.h:975
SINGLE_LIST_ENTRY ListHead
Definition: ketypes.h:915
SINGLE_LIST_ENTRY * LastEntry
Definition: ketypes.h:916
Definition: ketypes.h:699
CSHORT Type
Definition: ketypes.h:1101
KEVENT HighEvent
Definition: ketypes.h:1104
CSHORT Size
Definition: ketypes.h:1102
KEVENT LowEvent
Definition: ketypes.h:1103
UCHAR DisableThunkEmulation
Definition: ketypes.h:1114
UCHAR ExecuteDisable
Definition: ketypes.h:1112
UCHAR ExecuteEnable
Definition: ketypes.h:1113
UCHAR ExecuteDispatchEnable
Definition: ketypes.h:1116
UCHAR ImageDispatchEnable
Definition: ketypes.h:1117
KIRQL SynchronizeIrql
Definition: ketypes.h:1075
CCHAR Number
Definition: ketypes.h:1078
ULONG ServiceCount
Definition: ketypes.h:1084
PKINTERRUPT_ROUTINE DispatchAddress
Definition: ketypes.h:1072
ULONG DispatchCount
Definition: ketypes.h:1085
CSHORT Size
Definition: ketypes.h:1061
ULONG DispatchCode[DISPATCH_LENGTH]
Definition: ketypes.h:1093
BOOLEAN Connected
Definition: ketypes.h:1077
KINTERRUPT_POLARITY Polarity
Definition: ketypes.h:1082
KINTERRUPT_MODE Mode
Definition: ketypes.h:1080
BOOLEAN ShareVector
Definition: ketypes.h:1079
ULONG Vector
Definition: ketypes.h:1073
PKSERVICE_ROUTINE MessageServiceRoutine
Definition: ketypes.h:1065
KSPIN_LOCK SpinLock
Definition: ketypes.h:1069
KIRQL Irql
Definition: ketypes.h:1074
BOOLEAN FloatingSave
Definition: ketypes.h:1076
LIST_ENTRY InterruptListEntry
Definition: ketypes.h:1062
ULONG MessageIndex
Definition: ketypes.h:1066
ULONG TickCount
Definition: ketypes.h:1070
PKSPIN_LOCK ActualLock
Definition: ketypes.h:1071
CSHORT Type
Definition: ketypes.h:1060
ULONGLONG Rsvd1
Definition: ketypes.h:1087
PKSERVICE_ROUTINE ServiceRoutine
Definition: ketypes.h:1063
PVOID ServiceContext
Definition: ketypes.h:1068
Definition: ketypes.h:1168
ULONG_PTR Busy
Definition: ketypes.h:1178
ULONG_PTR CrossThreadReleasable
Definition: ketypes.h:1174
ULONG_PTR InTree
Definition: ketypes.h:1180
ULONG_PTR Reserved
Definition: ketypes.h:1179
PVOID LockState
Definition: ketypes.h:1182
ULONG SessionId
Definition: ketypes.h:1189
PVOID SessionState
Definition: ketypes.h:1186
Definition: ketypes.h:1198
KLOCK_ENTRY_LOCK_STATE LockState
Definition: ketypes.h:1261
UCHAR Spare0
Definition: ketypes.h:1217
UCHAR AcquiredByte
Definition: ketypes.h:1222
PVOID SessionState
Definition: ketypes.h:1274
UCHAR WaitingBit
Definition: ketypes.h:1216
USHORT IoBoost
Definition: ketypes.h:1307
RTL_RB_TREE WaiterTree
Definition: ketypes.h:1290
ULONG SessionId
Definition: ketypes.h:1277
USHORT IoQoSWaiterCount
Definition: ketypes.h:1313
USHORT IoQoSBoost
Definition: ketypes.h:1311
ULONG_PTR EntryLock
Definition: ketypes.h:1294
volatile UCHAR CrossThreadReleasableAndBusyByte
Definition: ketypes.h:1266
RTL_RB_TREE OwnerTree
Definition: ketypes.h:1289
ULONG AllFlags
Definition: ketypes.h:1240
UCHAR HeadNodeBit
Definition: ketypes.h:1230
SINGLE_LIST_ENTRY FreeListEntry
Definition: ketypes.h:1202
UCHAR IoQoSWaiter
Definition: ketypes.h:1232
ULONG EntryFlags
Definition: ketypes.h:1207
UCHAR AcquiredBit
Definition: ketypes.h:1223
UCHAR InTreeByte
Definition: ketypes.h:1271
USHORT CpuBoostsBitmap
Definition: ketypes.h:1306
PVOID LockUnsafe
Definition: ketypes.h:1262
UCHAR ThreadLocalFlags
Definition: ketypes.h:1213
UCHAR IoPriorityBit
Definition: ketypes.h:1231
CHAR CpuPriorityKey
Definition: ketypes.h:1292
USHORT AllBoosts
Definition: ketypes.h:1300
UCHAR Spare1
Definition: ketypes.h:1233
ULONG StaticState
Definition: ketypes.h:1239
UCHAR EntryOffset
Definition: ketypes.h:1210
RTL_BALANCED_NODE TreeNode
Definition: ketypes.h:1201
UCHAR CrossThreadFlags
Definition: ketypes.h:1227
USHORT IoNormalPriorityWaiterCount
Definition: ketypes.h:1312
UCHAR Removable
Definition: ketypes.h:1017
SLIST_HEADER DeadStackList
Definition: ketypes.h:1010
UCHAR Seed
Definition: ketypes.h:1014
ULONG_PTR FreeCount[2]
Definition: ketypes.h:1021
ULONG MmShiftedColor
Definition: ketypes.h:1020
struct _SINGLE_LIST_ENTRY * PfnDeferredList
Definition: ketypes.h:1022
struct _KNODE::_flags Flags
UCHAR NodeNumber
Definition: ketypes.h:1015
KAFFINITY ProcessorMask
Definition: ketypes.h:1012
SLIST_HEADER PfnDereferenceSListHead
Definition: ketypes.h:1011
UCHAR Color
Definition: ketypes.h:1013
DISPATCHER_HEADER Header
Definition: ketypes.h:2212
SCHAR BasePriority
Definition: ketypes.h:2249
SCHAR QuantumReset
Definition: ketypes.h:2250
LIST_ENTRY ProcessListEntry
Definition: ketypes.h:2262
SINGLE_LIST_ENTRY SwapListEntry
Definition: ketypes.h:2233
ULONG StackCount
Definition: ketypes.h:2261
UCHAR ThreadSeed
Definition: ketypes.h:2252
UCHAR IdealNode
Definition: ketypes.h:2254
LONG DisableQuantum
Definition: ketypes.h:2244
LONG DisableBoost
Definition: ketypes.h:2243
USHORT IopmOffset
Definition: ketypes.h:2224
LONG ProcessFlags
Definition: ketypes.h:2247
UCHAR ExecuteOptions
Definition: ketypes.h:2259
ULONG_PTR Unused0
Definition: ketypes.h:2216
PVOID VdmTrapcHandler
Definition: ketypes.h:2234
volatile KAFFINITY ActiveProcessors
Definition: ketypes.h:2229
ULONG KernelTime
Definition: ketypes.h:2230
LONG AutoAlignment
Definition: ketypes.h:2242
ULONG_PTR DirectoryTableBase
Definition: ketypes.h:2215
UCHAR Visited
Definition: ketypes.h:2255
ULONG UserTime
Definition: ketypes.h:2231
ULONGLONG CycleTime
Definition: ketypes.h:2264
UCHAR State
Definition: ketypes.h:2251
KAFFINITY Affinity
Definition: ketypes.h:2237
LIST_ENTRY ProfileListHead
Definition: ketypes.h:2213
LONG ReservedFlags
Definition: ketypes.h:2245
UCHAR PowerState
Definition: ketypes.h:2253
KEXECUTE_OPTIONS Flags
Definition: ketypes.h:2258
LIST_ENTRY ThreadListHead
Definition: ketypes.h:2235
LIST_ENTRY ReadyListHead
Definition: ketypes.h:2232
KSPIN_LOCK ProcessLock
Definition: ketypes.h:2236
struct _KPROCESS * Process
Definition: ketypes.h:1044
CSHORT Size
Definition: ketypes.h:1042
ULONG BucketShift
Definition: ketypes.h:1047
PVOID RangeLimit
Definition: ketypes.h:1046
KPROFILE_SOURCE Source
Definition: ketypes.h:1051
PVOID Buffer
Definition: ketypes.h:1048
BOOLEAN Started
Definition: ketypes.h:1052
ULONG_PTR Segment
Definition: ketypes.h:1049
PVOID RangeBase
Definition: ketypes.h:1045
CSHORT Type
Definition: ketypes.h:1041
KAFFINITY Affinity
Definition: ketypes.h:1050
LIST_ENTRY ProfileListEntry
Definition: ketypes.h:1043
LONG High1Time
Definition: ketypes.h:930
LONG High2Time
Definition: ketypes.h:931
ULONG LowPart
Definition: ketypes.h:929
ULONG64 CycleTimeBias
Definition: ketypes.h:1151
ULONG64 WaitReasonBitMap
Definition: ketypes.h:1147
ULONG64 HardwareCounters
Definition: ketypes.h:1152
struct _THREAD_PERFORMANCE_DATA * UserData
Definition: ketypes.h:1148
COUNTER_READING HwCounter[16]
Definition: ketypes.h:1153
ULONG ContextSwitches
Definition: ketypes.h:1150
ULONG ApcInterruptRequest
Definition: ketypes.h:1831
PKTRAP_FRAME TrapFrame
Definition: ketypes.h:1902
PVOID InitialStack
Definition: ketypes.h:1792
ULONG SystemCallNumber
Definition: ketypes.h:1897
PKQUEUE Queue
Definition: ketypes.h:1934
ULONG UserIdealProcessor
Definition: ketypes.h:1911
UCHAR AdjustReason
Definition: ketypes.h:2056
UCHAR UnusualBoost
Definition: ketypes.h:2052
ULONG CurrentRunTime
Definition: ketypes.h:1801
UCHAR SchedulerApcFill4[FIELD_OFFSET(KAPC, SystemArgument2)]
Definition: ketypes.h:2124
GROUP_AFFINITY Affinity
Definition: ketypes.h:2066
ULONG IdealProcessor
Definition: ketypes.h:2072
ULONG ThreadFlagsSpare
Definition: ketypes.h:1878
ULONG UserStackWalkActive
Definition: ketypes.h:1830
ULONG DisableBoost
Definition: ketypes.h:1853
volatile INT_PTR WaitStatus
Definition: ketypes.h:1927
UCHAR ForegroundBoost
Definition: ketypes.h:2051
ULONG ProcessReadyQueue
Definition: ketypes.h:1823
ULONG ChargeOnlyGroup
Definition: ketypes.h:1860
ULONG QuantumDonation
Definition: ketypes.h:1856
KPROCESSOR_MODE WaitMode
Definition: ketypes.h:1924
UCHAR CallbackNestingLevel
Definition: ketypes.h:2130
LIST_ENTRY WaitListEntry
Definition: ketypes.h:1931
ULONG FreezeCount
Definition: ketypes.h:1865
SHORT SListFaultCount
Definition: ketypes.h:2095
ULONG ReservedStackInUse
Definition: ketypes.h:1840
LONG AbCompletedIoQoSBoostCount
Definition: ketypes.h:2158
CHAR PriorityDecrement
Definition: ketypes.h:2048
ULONG QuantumEndMigrate
Definition: ketypes.h:1832
BOOLEAN Running
Definition: ketypes.h:1807
KAPC_STATE SavedApcState
Definition: ketypes.h:2088
ULONG_PTR AffinityVersion
Definition: ketypes.h:2062
UCHAR WaitBlockFill10[2 *sizeof(KWAIT_BLOCK)+FIELD_OFFSET(KWAIT_BLOCK, SparePtr)]
Definition: ketypes.h:1993
ULONG Reserved
Definition: ketypes.h:1843
ULONG ExpectedRunTime
Definition: ketypes.h:1802
ULONG DisableQuantum
Definition: ketypes.h:1859
ULONG64 QuantumTarget
Definition: ketypes.h:1791
PVOID Win32Thread
Definition: ketypes.h:1994
ULONG_PTR InGlobalForegroundList
Definition: ketypes.h:2180
ULONG SystemAffinityActive
Definition: ketypes.h:1825
BOOLEAN Alerted[MaximumMode]
Definition: ketypes.h:1808
volatile ULONG64 CycleTime
Definition: ketypes.h:1796
ULONG ForegroundLossTime
Definition: ketypes.h:2173
LIST_ENTRY GlobalForegroundListEntry
Definition: ketypes.h:2176
UCHAR AbFreeEntryCount
Definition: ketypes.h:2170
struct _KSCB * QueuedScb
Definition: ketypes.h:2194
LONG ThreadFlags
Definition: ketypes.h:1885
ULONG CombinedApcDisable
Definition: ketypes.h:2011
ULONG Alertable
Definition: ketypes.h:1826
PKPRCB WaitPrcb
Definition: ketypes.h:2120
KSPIN_LOCK ThreadLock
Definition: ketypes.h:1795
volatile LONG AbCompletedIoBoostCount
Definition: ketypes.h:2156
UCHAR ApcStateFill[RTL_SIZEOF_THROUGH_FIELD(KAPC_STATE, UserApcPending)]
Definition: ketypes.h:1909
PVOID FirstArgument
Definition: ketypes.h:1901
ULONG CalloutActive
Definition: ketypes.h:1837
SCHAR Priority
Definition: ketypes.h:1910
ULONG UserAffinitySet
Definition: ketypes.h:1854
SHORT SpecialApcDisable
Definition: ketypes.h:2009
ULONG CommitFailTerminateRequest
Definition: ketypes.h:1876
UCHAR SuspendApcFill3[FIELD_OFFSET(KAPC, SystemArgument1)]
Definition: ketypes.h:2119
UCHAR ApcStateIndex
Definition: ketypes.h:2070
PVOID SListFaultAddress
Definition: ketypes.h:1790
USHORT Spare20
Definition: ketypes.h:2142
UCHAR SchedulerApcFill0[FIELD_OFFSET(KAPC, SpareByte0)]
Definition: ketypes.h:2104
PVOID Teb
Definition: ketypes.h:1935
struct _KTHREAD_COUNTERS * ThreadCounters
Definition: ketypes.h:1984
SINGLE_LIST_ENTRY SwapListEntry
Definition: ketypes.h:1932
CHAR PreviousMode
Definition: ketypes.h:2044
KLOCK_ENTRY LockEntries[NUMBER_OF_LOCK_ENTRIES]
Definition: ketypes.h:2151
PVOID ServiceTable
Definition: ketypes.h:1799
ULONG QueueDeferPreemption
Definition: ketypes.h:1862
UCHAR SchedulerApcFill5[FIELD_OFFSET(KAPC, Inserted)+1]
Definition: ketypes.h:2129
ULONG64 NpxState
Definition: ketypes.h:2196
ULONG AutoAlignment
Definition: ketypes.h:1852
ULONG AutoBoostActive
Definition: ketypes.h:1817
ULONG ReadyTransition
Definition: ketypes.h:1819
ULONG ScbReadyQueue
Definition: ketypes.h:1838
GROUP_AFFINITY UserAffinity
Definition: ketypes.h:2040
PVOID KernelStack
Definition: ketypes.h:1803
ULONG GuiThread
Definition: ketypes.h:1858
ULONG DeferredProcessor
Definition: ketypes.h:2034
ULONG KernelTime
Definition: ketypes.h:2115
ULONG Spare15
Definition: ketypes.h:2080
UCHAR ResourceIndex
Definition: ketypes.h:2105
LIST_ENTRY ThreadListEntry
Definition: ketypes.h:2136
UCHAR SystemHeteroCpuPolicy
Definition: ketypes.h:1890
ULONG UmsPerformingSyscall
Definition: ketypes.h:1841
CHAR BasePriority
Definition: ketypes.h:2045
ULONG WaitTime
Definition: ketypes.h:2003
UCHAR UserHeteroCpuPolicy
Definition: ketypes.h:1891
UCHAR SchedulerApcFill2[FIELD_OFFSET(KAPC, SpareLong0)]
Definition: ketypes.h:2114
UCHAR AffinityFill[FIELD_OFFSET(GROUP_AFFINITY, Reserved)]
Definition: ketypes.h:2069
ULONG PriorityFloorSummary
Definition: ketypes.h:2155
UCHAR QuantumReset
Definition: ketypes.h:2110
PVOID LegoData
Definition: ketypes.h:2125
UCHAR WaitReason
Definition: ketypes.h:2092
volatile SHORT KeReferenceCount
Definition: ketypes.h:2162
PXSTATE_SAVE XStateSave
Definition: ketypes.h:1989
PVOID StackBase
Definition: ketypes.h:1794
ULONG SystemThread
Definition: ketypes.h:1835
ULONG NextProcessor
Definition: ketypes.h:2033
ULONG ExplicitIdealProcessor
Definition: ketypes.h:1864
ULONG EnableStackSwap
Definition: ketypes.h:1857
UCHAR WaitBlockFill8[FIELD_OFFSET(KWAIT_BLOCK, SparePtr)]
Definition: ketypes.h:1983
LONG MiscFlags
Definition: ketypes.h:1845
ULONG TimerActive
Definition: ketypes.h:1834
UCHAR AbWaitEntryCount
Definition: ketypes.h:2141
CHAR AdjustIncrement
Definition: ketypes.h:2057
volatile ULONG HighCycleTime
Definition: ketypes.h:1798
LIST_ENTRY MutantListHead
Definition: ketypes.h:2137
UCHAR SchedulerApcFill1[FIELD_OFFSET(KAPC, SpareByte1)]
Definition: ketypes.h:2109
UCHAR PriorityFloorCounts[16]
Definition: ketypes.h:2154
UCHAR ExplicitSystemHeteroCpuPolicy
Definition: ketypes.h:1892
volatile UCHAR Tag
Definition: ketypes.h:1889
UCHAR AbEntrySummary
Definition: ketypes.h:2140
SHORT KernelApcDisable
Definition: ketypes.h:2008
ULONG AlertedByThreadId
Definition: ketypes.h:1855
SINGLE_LIST_ENTRY IoSelfBoostsEntry
Definition: ketypes.h:2153
KEVENT SuspendEvent
Definition: ketypes.h:2135
CHAR Spare12
Definition: ketypes.h:1919
SINGLE_LIST_ENTRY PropagateBoostsEntry
Definition: ketypes.h:2152
DISPATCHER_HEADER Header
Definition: ketypes.h:1789
KWAIT_STATUS_REGISTER WaitRegister
Definition: ketypes.h:1806
PKWAIT_BLOCK WaitBlockList
Definition: ketypes.h:1928
ULONG ProcessStackCountDecremented
Definition: ketypes.h:1877
ULONG ContextSwitches
Definition: ketypes.h:1916
ULONG64 RelativeTimerBias
Definition: ketypes.h:1937
ULONG DisableStackCheck
Definition: ketypes.h:1842
ULONG EtwStackTraceApcInserted
Definition: ketypes.h:1880
UCHAR SavedApcStateFill[FIELD_OFFSET(KAPC_STATE, UserApcPending)+1]
Definition: ketypes.h:2091
UCHAR WaitBlockFill9[1 *sizeof(KWAIT_BLOCK)+FIELD_OFFSET(KWAIT_BLOCK, SparePtr)]
Definition: ketypes.h:1988
CHAR Saturation
Definition: ketypes.h:2094
XSAVE_FORMAT * StateSaveArea
Definition: ketypes.h:1804
CHAR SuspendCount
Definition: ketypes.h:2093
ULONG DeferPreemption
Definition: ketypes.h:1861
UCHAR Spare0
Definition: ketypes.h:1893
KTIMER Timer
Definition: ketypes.h:1939
UCHAR WaitBlockFill11[3 *sizeof(KWAIT_BLOCK)+FIELD_OFFSET(KWAIT_BLOCK, Object)]
Definition: ketypes.h:1998
volatile VOID * StackLimit
Definition: ketypes.h:1793
LIST_ENTRY QueueListEntry
Definition: ketypes.h:2020
ULONG ProcessDetachActive
Definition: ketypes.h:1836
KAPC_STATE ApcState
Definition: ketypes.h:1906
struct _KSCHEDULING_GROUP * SchedulingGroup
Definition: ketypes.h:1805
PKPROCESS Process
Definition: ketypes.h:2036
KIRQL WaitIrql
Definition: ketypes.h:1923
KAPC SchedulerApc
Definition: ketypes.h:2101
UCHAR Preempted
Definition: ketypes.h:2055
ULONG UserTime
Definition: ketypes.h:2131
ULONG UmsDirectedSwitchEnable
Definition: ketypes.h:1833
ULONG ApcQueueable
Definition: ketypes.h:1839
SINGLE_LIST_ENTRY ForegroundDpcStackListEntry
Definition: ketypes.h:2179
volatile UCHAR State
Definition: ketypes.h:1917
ULONG WaitNext
Definition: ketypes.h:1824
UCHAR UserAffinityFill[FIELD_OFFSET(GROUP_AFFINITY, Reserved)]
Definition: ketypes.h:2043
ULONG ForceDeferSchedule
Definition: ketypes.h:1863
UCHAR WaitBlockCount
Definition: ketypes.h:2071
Definition: ketypes.h:899
KSPIN_LOCK Lock
Definition: ketypes.h:901
ULARGE_INTEGER Time
Definition: ketypes.h:904
LIST_ENTRY Entry
Definition: ketypes.h:903
KTIMER_TABLE_ENTRY TimerEntries[256]
Definition: ketypes.h:910
PKTIMER TimerExpiry[64]
Definition: ketypes.h:909
Definition: typedefs.h:120
struct _GENERAL_LOOKASIDE * P
Definition: ketypes.h:996
struct _GENERAL_LOOKASIDE * L
Definition: ketypes.h:997
FIXME: should move to rtltypes.h, but we can't include it here.
Definition: ketypes.h:1160
PRTL_BALANCED_NODE Root
Definition: ketypes.h:1161
PRTL_BALANCED_NODE Min
Definition: ketypes.h:1162
Definition: ntbasedef.h:640
ULONG ExTryToAcqExclusiveAcquires
Definition: ketypes.h:962
ULONG ExTryToAcqExclusiveAttempts
Definition: ketypes.h:961
ULONG ExInitializeResourceCount
Definition: ketypes.h:927
ULONG ExecutiveResourceReleaseSharedCount
Definition: ketypes.h:933
ULONG ExAcqResSharedAcquiresExclusive
Definition: ketypes.h:941
ULONG ExAcqResExclusiveNotAcquires
Definition: ketypes.h:939
ULONG ExAcqResSharedStarveExclusiveNotAcquires
Definition: ketypes.h:951
ULONG ExSetResOwnerPointerSharedOld
Definition: ketypes.h:960
ULONG ExAcqResSharedWaitForExclusiveAcquiresSharedRecursive
Definition: ketypes.h:955
ULONG ExAcqResExclusiveAcquiresExclusiveRecursive
Definition: ketypes.h:937
ULONG ExEtwSynchTrackingNotificationsAccountedCount
Definition: ketypes.h:966
ULONG ExecutiveResourceConvertsCount
Definition: ketypes.h:934
ULONG ExecutiveResourceReleaseExclusiveCount
Definition: ketypes.h:932
ULONG IpiSendRequestBroadcastCount
Definition: ketypes.h:924
ULONG ExAcqResExclusiveWaits
Definition: ketypes.h:938
ULONG ExAcqResSharedWaitForExclusiveWaits
Definition: ketypes.h:956
ULONG ExAcqResSharedWaits
Definition: ketypes.h:944
ULONG ExAcqResSharedWaitForExclusiveAcquiresExclusive
Definition: ketypes.h:953
ULONG SpinLockContentionCount
Definition: ketypes.h:922
ULONG ExAcqResSharedStarveExclusiveAttempts
Definition: ketypes.h:946
ULONG ExAcqResSharedAttempts
Definition: ketypes.h:940
ULONG ExDeleteResourceCount
Definition: ketypes.h:929
ULONG ExecutiveResourceContentionsCount
Definition: ketypes.h:931
ULONG ExAcqResSharedWaitForExclusiveAttempts
Definition: ketypes.h:952
ULONG ExAcqResSharedWaitForExclusiveNotAcquires
Definition: ketypes.h:957
ULONG ExEtwSynchTrackingNotificationsCount
Definition: ketypes.h:965
ULONG ExBoostSharedOwners
Definition: ketypes.h:964
ULONG IpiSendRequestRoutineCount
Definition: ketypes.h:925
ULONG ExAcqResSharedStarveExclusiveAcquiresSharedRecursive
Definition: ketypes.h:949
ULONG ExAcqResSharedStarveExclusiveAcquiresShared
Definition: ketypes.h:948
ULONG ExAcqResSharedStarveExclusiveWaits
Definition: ketypes.h:950
ULONG ExAcqResSharedAcquiresShared
Definition: ketypes.h:942
ULONG SpinLockSpinCount
Definition: ketypes.h:923
ULONG IpiSendSoftwareInterruptCount
Definition: ketypes.h:926
ULONG ExSetResOwnerPointerExclusive
Definition: ketypes.h:958
ULONG ExAcqResSharedNotAcquires
Definition: ketypes.h:945
ULONG ExReInitializeResourceCount
Definition: ketypes.h:928
ULONG ExAcqResSharedWaitForExclusiveAcquiresShared
Definition: ketypes.h:954
ULONG ExecutiveResourceAcquiresCount
Definition: ketypes.h:930
ULONG ExAcqResSharedStarveExclusiveAcquiresExclusive
Definition: ketypes.h:947
ULONG ExAcqResExclusiveAttempts
Definition: ketypes.h:935
ULONG ExSetResOwnerPointerSharedNew
Definition: ketypes.h:959
ULONG ExAcqResExclusiveAcquiresExclusive
Definition: ketypes.h:936
ULONG SpinLockAcquireCount
Definition: ketypes.h:921
ULONG ExBoostExclusiveOwner
Definition: ketypes.h:963
ULONG ExAcqResSharedAcquiresSharedRecursive
Definition: ketypes.h:943
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_opt_ PVOID _Out_ PLARGE_INTEGER Cookie
Definition: cmfuncs.h:14
_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
#define PROCESSOR_FEATURE_MAX
XSAVE_FORMAT
Definition: ketypes.h:966
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
_In_opt_ PVOID _In_opt_ PVOID SystemArgument1
Definition: ketypes.h:688
KUSER_SHARED_DATA
Definition: ketypes.h:1571
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:1589
struct _KSYSTEM_TIME * PKSYSTEM_TIME
VOID(NTAPI * PKINTERRUPT_ROUTINE)(VOID)
Definition: ketypes.h:502
* PKUSER_SHARED_DATA
Definition: ketypes.h:1571
enum _KWAIT_REASON KWAIT_REASON
_In_opt_ PVOID _In_opt_ PVOID _In_opt_ PVOID SystemArgument2
Definition: ketypes.h:689
KAPC_STATE
Definition: ketypes.h:1589
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
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