[NDK][XDK] Update definition of KUSER_SHARED_DATA with tests

This commit is contained in:
Timo Kreuzer 2024-09-13 08:56:33 +03:00
parent 21d3e290b7
commit fb8e6124e0
14 changed files with 1208 additions and 54 deletions

View file

@ -577,9 +577,28 @@ typedef struct _KUSER_SHARED_DATA
ULONG CryptoExponent; // 0x23c
ULONG TimeZoneId; // 0x240
ULONG LargePageMinimum; // 0x244
#if (NTDDI_VERSION >= NTDDI_WIN8)
ULONG AitSamplingValue; // 0x248
ULONG AppCompatFlag; // 0x24c
ULONGLONG RNGSeedVersion; // 0x250
ULONG GlobalValidationRunlevel; // 0x258
volatile LONG TimeZoneBiasStamp; // 0x25c
#if (NTDDI_VERSION >= NTDDI_WIN10)
ULONG NtBuildNumber; // 0x260
#else
ULONG Reserved2; // 0x260
#endif
#else
ULONG Reserved2[7]; // 0x248
#endif // NTDDI_VERSION >= NTDDI_WIN8
NT_PRODUCT_TYPE NtProductType; // 0x264
BOOLEAN ProductTypeIsValid; // 0x268
BOOLEAN Reserved0[1]; // 0x269
#if (NTDDI_VERSION >= NTDDI_WIN8)
USHORT NativeProcessorArchitecture; // 0x26a
#endif
ULONG NtMajorVersion; // 0x26c
ULONG NtMinorVersion; // 0x270
BOOLEAN ProcessorFeatures[PROCESSOR_FEATURE_MAX]; // 0x274
@ -587,12 +606,29 @@ typedef struct _KUSER_SHARED_DATA
ULONG Reserved3; // 0x2b8
volatile ULONG TimeSlip; // 0x2bc
ALTERNATIVE_ARCHITECTURE_TYPE AlternativeArchitecture; // 0x2c0
#if (NTDDI_VERSION >= NTDDI_WIN10)
ULONG BootId; // 0x2c4
#else
ULONG AltArchitecturePad[1]; // 0x2c4
#endif
LARGE_INTEGER SystemExpirationDate; // 0x2c8
ULONG SuiteMask; // 0x2d0
BOOLEAN KdDebuggerEnabled; // 0x2d4
#if (NTDDI_VERSION >= NTDDI_WINXPSP2)
UCHAR NXSupportPolicy; // 0x2d5
union
{
UCHAR MitigationPolicies; // 0x2d5
struct
{
UCHAR NXSupportPolicy : 2;
UCHAR SEHValidationPolicy : 2;
UCHAR CurDirDevicesSkippedForDlls : 2;
UCHAR Reserved : 2;
};
};
#if (NTDDI_VERSION >= NTDDI_WIN10_19H1)
USHORT CyclesPerYield; // 0x2d6 // Win 10 19H1+
#else
UCHAR Reserved6[2]; // 0x2d6
#endif
volatile ULONG ActiveConsoleId; // 0x2d8
volatile ULONG DismountCount; // 0x2dc
@ -600,7 +636,8 @@ typedef struct _KUSER_SHARED_DATA
ULONG LastSystemRITEventTickCount; // 0x2e4
ULONG NumberOfPhysicalPages; // 0x2e8
BOOLEAN SafeBootMode; // 0x2ec
#if (NTDDI_VERSION >= NTDDI_WIN7)
#if (NTDDI_VERSION == NTDDI_WIN7)
union
{
UCHAR TscQpcData; // 0x2ed
@ -612,7 +649,24 @@ typedef struct _KUSER_SHARED_DATA
} DUMMYSTRUCTNAME;
} DUMMYUNIONNAME;
UCHAR TscQpcPad[2]; // 0x2ee
#elif (NTDDI_VERSION >= NTDDI_WIN10_RS1)
union
{
UCHAR VirtualizationFlags; // 0x2ed
#if defined(_ARM64_)
struct
{
UCHAR ArchStartedInEl2 : 1;
UCHAR QcSlIsSupported : 1;
UCHAR : 6;
};
#endif
};
UCHAR Reserved12[2]; // 0x2ee
#else
UCHAR Reserved12[3]; // 0x2ed
#endif // NTDDI_VERSION == NTDDI_WIN7
#if (NTDDI_VERSION >= NTDDI_VISTA)
union
{
@ -623,20 +677,43 @@ typedef struct _KUSER_SHARED_DATA
ULONG DbgElevationEnabled : 1; // 0x2f0
ULONG DbgVirtEnabled : 1; // 0x2f0
ULONG DbgInstallerDetectEnabled : 1; // 0x2f0
#if (NTDDI_VERSION >= NTDDI_WIN8)
ULONG DbgLkgEnabled : 1; // 0x2f0
#else
ULONG DbgSystemDllRelocated : 1; // 0x2f0
#endif
ULONG DbgDynProcessorEnabled : 1; // 0x2f0
#if (NTDDI_VERSION >= NTDDI_WIN8)
ULONG DbgConsoleBrokerEnabled : 1; // 0x2f0
#else
ULONG DbgSEHValidationEnabled : 1; // 0x2f0
ULONG SpareBits:25; // 0x2f0
#endif
ULONG DbgSecureBootEnabled : 1; // 0x2f0 Win8+
ULONG DbgMultiSessionSku : 1; // 0x2f0 Win 10+
ULONG DbgMultiUsersInSessionSku : 1; // 0x2f0 Win 10 RS1+
ULONG DbgStateSeparationEnabled : 1; // 0x2f0 Win 10 RS3+
ULONG SpareBits : 21; // 0x2f0
} DUMMYSTRUCTNAME2;
} DUMMYUNIONNAME2;
#else
ULONG TraceLogging;
#endif
#endif // NTDDI_VERSION >= NTDDI_VISTA
ULONG DataFlagsPad[1]; // 0x2f4
ULONGLONG TestRetInstruction; // 0x2f8
#if (NTDDI_VERSION >= NTDDI_WIN8)
ULONGLONG QpcFrequency; // 0x300
#else
ULONG SystemCall; // 0x300
ULONG SystemCallReturn; // 0x304
#endif
#if (NTDDI_VERSION >= NTDDI_WIN10_TH2)
ULONG SystemCall; // 0x308
ULONG SystemCallPad0; // 0x30c Renamed to Reserved2 in Vibranium R3
ULONGLONG SystemCallPad[2]; // 0x310
#else
ULONGLONG SystemCallPad[3]; // 0x308
#endif
union
{
volatile KSYSTEM_TIME TickCount; // 0x320
@ -648,14 +725,53 @@ typedef struct _KUSER_SHARED_DATA
} DUMMYSTRUCTNAME;
} DUMMYUNIONNAME3;
ULONG Cookie; // 0x330
#if (NTDDI_VERSION < NTDDI_VISTA)
ULONG Wow64SharedInformation[MAX_WOW64_SHARED_ENTRIES]; // 0x334
#endif
//
// Windows Vista and later
//
#if (NTDDI_VERSION >= NTDDI_VISTA)
ULONG CookiePad[1]; // 0x334
LONGLONG ConsoleSessionForegroundProcessId; // 0x338
#if (NTDDI_VERSION >= NTDDI_WIN8)
#if (NTDDI_VERSION >= NTDDI_WINBLUE)
ULONGLONG TimeUpdateLock; // 0x340
#else
ULONGLONG TimeUpdateSequence; // 0x340
#endif
#if (NTDDI_VERSION >= NTDDI_WS03)
ULONG Wow64SharedInformation[MAX_WOW64_SHARED_ENTRIES]; // 2K3: 0x334 / Vista+: 0x340
ULONGLONG BaselineSystemTimeQpc; // 0x348
ULONGLONG BaselineInterruptTimeQpc; // 0x350
ULONGLONG QpcSystemTimeIncrement; // 0x358
ULONGLONG QpcInterruptTimeIncrement; // 0x360
#if (NTDDI_VERSION >= NTDDI_WIN10)
UCHAR QpcSystemTimeIncrementShift; // 0x368
UCHAR QpcInterruptTimeIncrementShift; // 0x369
USHORT UnparkedProcessorCount; // 0x36a
ULONG EnclaveFeatureMask[4]; // 0x36c Win 10 TH2+
ULONG TelemetryCoverageRound; // 0x37c Win 10 RS2+
#else // NTDDI_VERSION < NTDDI_WIN10
ULONG QpcSystemTimeIncrement32; // 0x368
ULONG QpcInterruptTimeIncrement32; // 0x36c
UCHAR QpcSystemTimeIncrementShift; // 0x370
UCHAR QpcInterruptTimeIncrementShift; // 0x371
#if (NTDDI_VERSION >= NTDDI_WINBLUE)
USHORT UnparkedProcessorCount; // 0x372
UCHAR Reserved8[12]; // 0x374
#else
UCHAR Reserved8[14]; // 0x372
#endif
#if (NTDDI_VERSION >= NTDDI_VISTA)
#endif // NTDDI_VERSION < NTDDI_WIN10
#elif (NTDDI_VERSION >= NTDDI_VISTASP2)
ULONG DEPRECATED_Wow64SharedInformation[MAX_WOW64_SHARED_ENTRIES]; // 0x340
#else
ULONG Wow64SharedInformation[MAX_WOW64_SHARED_ENTRIES]; // 0x340
#endif // NTDDI_VERSION >= NTDDI_VISTA
#if (NTDDI_VERSION >= NTDDI_WIN7)
USHORT UserModeGlobalLogger[16]; // 0x380
#else
@ -663,27 +779,74 @@ typedef struct _KUSER_SHARED_DATA
ULONG HeapTracingPid[2]; // 0x390
ULONG CritSecTracingPid[2]; // 0x398
#endif
ULONG ImageFileExecutionOptions; // 0x3a0
#if (NTDDI_VERSION >= NTDDI_VISTASP1)
ULONG LangGenerationCount; // 0x3a4
#else
/* 4 bytes padding */
#endif
ULONG LangGenerationCount; // 0x3a4 Vista SP2+
#if (NTDDI_VERSION >= NTDDI_WIN8)
ULONGLONG Reserved4; // 0x3a8
#elif (NTDDI_VERSION >= NTDDI_WIN7)
ULONGLONG Reserved5; // 0x3a8
volatile ULONG64 InterruptTimeBias; // 0x3b0
#else
union
{
KAFFINITY ActiveProcessorAffinity; // 0x3a8
ULONGLONG AffinityPad; // 0x3a8
};
#endif
volatile ULONGLONG InterruptTimeBias; // 0x3b0
#endif // NTDDI_VERSION >= NTDDI_VISTA
//
// Windows 7 and later
//
#if (NTDDI_VERSION >= NTDDI_WIN7)
volatile ULONG64 TscQpcBias; // 0x3b8
volatile ULONG ActiveProcessorCount; // 0x3c0
volatile USHORT ActiveGroupCount; // 0x3c4
volatile ULONGLONG QpcBias; // 0x3b8 // Win7: TscQpcBias
/* volatile */ ULONG ActiveProcessorCount; // 0x3c0 // not volatile since Win 8.1 Update 1
#if (NTDDI_VERSION >= NTDDI_WIN8)
volatile UCHAR ActiveGroupCount; // 0x3c4
UCHAR Reserved9; // 0x3c5
union
{
USHORT QpcData; // 0x3c6
struct
{
volatile UCHAR QpcBypassEnabled; // 0x3c6
UCHAR QpcShift; // 0x3c7
};
};
LARGE_INTEGER TimeZoneBiasEffectiveStart; // 0x3c8
LARGE_INTEGER TimeZoneBiasEffectiveEnd; // 0x3d0
XSTATE_CONFIGURATION XState; // 0x3d8
#else
USHORT ActiveGroupCount; // 0x3c4
USHORT Reserved4; // 0x3c6
volatile ULONG AitSamplingValue; // 0x3c8
volatile ULONG AppCompatFlag; // 0x3cc
ULONGLONG SystemDllNativeRelocation; // 0x3d0
ULONG SystemDllWowRelocation; // 0x3d8
ULONGLONG SystemDllNativeRelocation; // 0x3d0 deprecated in Win7 SP2
ULONG SystemDllWowRelocation; // 0x3d8 deprecated in Win7 SP2
ULONG XStatePad[1]; // 0x3dc
XSTATE_CONFIGURATION XState; // 0x3e0
#endif
#endif // NTDDI_VERSION >= NTDDI_WIN8
#endif // NTDDI_VERSION >= NTDDI_WIN7
//
// Windows 10 Vibranium and later
//
#if (NTDDI_VERSION >= NTDDI_WIN10_VB)
KSYSTEM_TIME FeatureConfigurationChangeStamp; // 0x710 // Win 11: 0x720
ULONG Spare; // 0x71c // Win 11: 0x72c
#endif // NTDDI_VERSION >= NTDDI_WIN10_VB
//
// Windows 11 Nickel and later
//
#if (NTDDI_VERSION >= NTDDI_WIN11_NI)
ULONG64 UserPointerAuthMask; // 0x730
#endif // NTDDI_VERSION >= NTDDI_WIN11_NI
} KUSER_SHARED_DATA, *PKUSER_SHARED_DATA;
//

View file

@ -327,3 +327,99 @@ C_ASSERT_FIELD(TEB32, 0xfe0, ULONG, ResourceRetValue)
C_ASSERT_FIELD(TEB32, 0xFE4, ULONG, ReservedForWdf)
C_ASSERT_FIELD(TEB32, 0xFE8, ULONG64, ReservedForCrt)
C_ASSERT_FIELD(TEB32, 0xFF0, GUID, EffectiveContainerId)
/* KUSER_SHARED_DATA */
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x000, ULONG, TickCountLowDeprecated)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x004, ULONG, TickCountMultiplier)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x008, KSYSTEM_TIME, InterruptTime)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x014, KSYSTEM_TIME, SystemTime)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x020, KSYSTEM_TIME, TimeZoneBias)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x02C, USHORT, ImageNumberLow)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x02E, USHORT, ImageNumberHigh)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x030, WCHAR[260], NtSystemRoot)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x238, ULONG, MaxStackTraceDepth)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x23C, ULONG, CryptoExponent)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x240, ULONG, TimeZoneId)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x244, ULONG, LargePageMinimum)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x248, ULONG, AitSamplingValue)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x24C, ULONG, AppCompatFlag)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x250, ULONGLONG, RNGSeedVersion)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x258, ULONG, GlobalValidationRunlevel)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x25C, LONG, TimeZoneBiasStamp)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x260, ULONG, NtBuildNumber)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x264, NT_PRODUCT_TYPE, NtProductType)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x268, BOOLEAN, ProductTypeIsValid)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x269, UCHAR[1], Reserved0)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x26A, USHORT, NativeProcessorArchitecture)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x26C, ULONG, NtMajorVersion)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x270, ULONG, NtMinorVersion)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x274, BOOLEAN[64], ProcessorFeatures)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2B4, ULONG, Reserved1)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2B8, ULONG, Reserved3)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2BC, ULONG, TimeSlip)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2C0, ALTERNATIVE_ARCHITECTURE_TYPE, AlternativeArchitecture)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2C4, ULONG, BootId)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2C8, LARGE_INTEGER, SystemExpirationDate)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D0, ULONG, SuiteMask)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D4, BOOLEAN, KdDebuggerEnabled)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D5, UCHAR, MitigationPolicies)
#if (NTDDI_VERSION >= NTDDI_WIN10_19H1)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D6, USHORT, CyclesPerYield)
#endif
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D8, ULONG, ActiveConsoleId)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2DC, ULONG, DismountCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2E0, ULONG, ComPlusPackage)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2E4, ULONG, LastSystemRITEventTickCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2E8, ULONG, NumberOfPhysicalPages)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2EC, BOOLEAN, SafeBootMode)
#if (NTDDI_VERSION >= NTDDI_WIN10_RS1)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2ED, UCHAR, VirtualizationFlags)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2EE, UCHAR[2], Reserved12)
#endif
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2F0, ULONG, SharedDataFlags)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2F4, ULONG[1], DataFlagsPad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2F8, ULONGLONG, TestRetInstruction)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x300, LONGLONG, QpcFrequency)
#if (NTDDI_VERSION >= NTDDI_WIN10_TH2)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x308, ULONG, SystemCall)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x30C, ULONG, Reserved2)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x310, ULONGLONG[2], SystemCallPad)
#endif
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x320, KSYSTEM_TIME, TickCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x320, ULONGLONG, TickCountQuad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x320, ULONG[3], ReservedTickCountOverlay)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x32C, ULONG[1], TickCountPad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x330, ULONG, Cookie)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x334, ULONG[1], CookiePad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x338, LONGLONG, ConsoleSessionForegroundProcessId)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x340, ULONGLONG, TimeUpdateLock)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x348, ULONGLONG, BaselineSystemTimeQpc)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x350, ULONGLONG, BaselineInterruptTimeQpc)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x358, ULONGLONG, QpcSystemTimeIncrement)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x360, ULONGLONG, QpcInterruptTimeIncrement)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x368, UCHAR, QpcSystemTimeIncrementShift)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x369, UCHAR, QpcInterruptTimeIncrementShift)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x36A, UINT16, UnparkedProcessorCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x36C, ULONG[4], EnclaveFeatureMask)
#if (NTDDI_VERSION >= NTDDI_WIN10_RS3)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x37C, ULONG, TelemetryCoverageRound)
#endif
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x380, USHORT[16], UserModeGlobalLogger)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3A0, ULONG, ImageFileExecutionOptions)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3A4, ULONG, LangGenerationCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3A8, ULONGLONG, Reserved4)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3B0, ULONGLONG, InterruptTimeBias)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3B8, ULONGLONG, QpcBias)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3C0, ULONG, ActiveProcessorCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3C4, UCHAR, ActiveGroupCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3C5, UCHAR, Reserved9)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3C6, USHORT, QpcData)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3C6, BOOLEAN, QpcBypassEnabled)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3C7, UCHAR, QpcShift)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3C8, LARGE_INTEGER, TimeZoneBiasEffectiveStart)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3D0, LARGE_INTEGER, TimeZoneBiasEffectiveEnd)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3D8, XSTATE_CONFIGURATION, XState)
#if (NTDDI_VERSION >= NTDDI_WIN10_VB)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x710, KSYSTEM_TIME, FeatureConfigurationChangeStamp)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x71C, ULONG32, Spare)
#endif

View file

@ -210,3 +210,99 @@ C_ASSERT_FIELD(TEB, 0xfe0, ULONG, ResourceRetValue)
C_ASSERT_FIELD(TEB, 0xFE4, ULONG, ReservedForWdf)
C_ASSERT_FIELD(TEB, 0xFE8, ULONG64, ReservedForCrt)
C_ASSERT_FIELD(TEB, 0xFF0, GUID, EffectiveContainerId)
/* KUSER_SHARED_DATA */
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x000, ULONG, TickCountLowDeprecated)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x004, ULONG, TickCountMultiplier)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x008, KSYSTEM_TIME, InterruptTime)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x014, KSYSTEM_TIME, SystemTime)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x020, KSYSTEM_TIME, TimeZoneBias)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x02C, USHORT, ImageNumberLow)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x02E, USHORT, ImageNumberHigh)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x030, WCHAR[260], NtSystemRoot)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x238, ULONG, MaxStackTraceDepth)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x23C, ULONG, CryptoExponent)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x240, ULONG, TimeZoneId)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x244, ULONG, LargePageMinimum)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x248, ULONG, AitSamplingValue)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x24C, ULONG, AppCompatFlag)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x250, ULONGLONG, RNGSeedVersion)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x258, ULONG, GlobalValidationRunlevel)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x25C, LONG, TimeZoneBiasStamp)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x260, ULONG, NtBuildNumber)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x264, NT_PRODUCT_TYPE, NtProductType)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x268, BOOLEAN, ProductTypeIsValid)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x269, UCHAR[1], Reserved0)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x26A, USHORT, NativeProcessorArchitecture)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x26C, ULONG, NtMajorVersion)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x270, ULONG, NtMinorVersion)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x274, BOOLEAN[64], ProcessorFeatures)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2B4, ULONG, Reserved1)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2B8, ULONG, Reserved3)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2BC, ULONG, TimeSlip)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2C0, ALTERNATIVE_ARCHITECTURE_TYPE, AlternativeArchitecture)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2C4, ULONG, BootId)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2C8, LARGE_INTEGER, SystemExpirationDate)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D0, ULONG, SuiteMask)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D4, BOOLEAN, KdDebuggerEnabled)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D5, UCHAR, MitigationPolicies)
#if (NTDDI_VERSION >= NTDDI_WIN10_19H1)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D6, USHORT, CyclesPerYield)
#endif
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D8, ULONG, ActiveConsoleId)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2DC, ULONG, DismountCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2E0, ULONG, ComPlusPackage)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2E4, ULONG, LastSystemRITEventTickCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2E8, ULONG, NumberOfPhysicalPages)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2EC, BOOLEAN, SafeBootMode)
#if (NTDDI_VERSION >= NTDDI_WIN10_RS1)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2ED, UCHAR, VirtualizationFlags)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2EE, UCHAR[2], Reserved12)
#endif
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2F0, ULONG, SharedDataFlags)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2F4, ULONG[1], DataFlagsPad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2F8, ULONGLONG, TestRetInstruction)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x300, LONGLONG, QpcFrequency)
#if (NTDDI_VERSION >= NTDDI_WIN10_TH2)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x308, ULONG, SystemCall)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x30C, ULONG, Reserved2)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x310, ULONGLONG[2], SystemCallPad)
#endif
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x320, KSYSTEM_TIME, TickCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x320, ULONGLONG, TickCountQuad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x320, ULONG[3], ReservedTickCountOverlay)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x32C, ULONG[1], TickCountPad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x330, ULONG, Cookie)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x334, ULONG[1], CookiePad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x338, LONGLONG, ConsoleSessionForegroundProcessId)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x340, ULONGLONG, TimeUpdateLock)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x348, ULONGLONG, BaselineSystemTimeQpc)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x350, ULONGLONG, BaselineInterruptTimeQpc)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x358, ULONGLONG, QpcSystemTimeIncrement)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x360, ULONGLONG, QpcInterruptTimeIncrement)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x368, UCHAR, QpcSystemTimeIncrementShift)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x369, UCHAR, QpcInterruptTimeIncrementShift)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x36A, UINT16, UnparkedProcessorCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x36C, ULONG[4], EnclaveFeatureMask)
#if (NTDDI_VERSION >= NTDDI_WIN10_RS3)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x37C, ULONG, TelemetryCoverageRound)
#endif
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x380, USHORT[16], UserModeGlobalLogger)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3A0, ULONG, ImageFileExecutionOptions)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3A4, ULONG, LangGenerationCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3A8, ULONGLONG, Reserved4)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3B0, ULONGLONG, InterruptTimeBias)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3B8, ULONGLONG, QpcBias)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3C0, ULONG, ActiveProcessorCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3C4, UCHAR, ActiveGroupCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3C5, UCHAR, Reserved9)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3C6, USHORT, QpcData)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3C6, BOOLEAN, QpcBypassEnabled)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3C7, UCHAR, QpcShift)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3C8, LARGE_INTEGER, TimeZoneBiasEffectiveStart)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3D0, LARGE_INTEGER, TimeZoneBiasEffectiveEnd)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3D8, XSTATE_CONFIGURATION, XState)
#if (NTDDI_VERSION >= NTDDI_WIN10_VB)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x710, KSYSTEM_TIME, FeatureConfigurationChangeStamp)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x71C, ULONG32, Spare)
#endif

View file

@ -193,3 +193,43 @@ C_ASSERT_FIELD(TEB, 0x17C0, PTEB_ACTIVE_FRAME, ActiveFrame)
C_ASSERT_FIELD(TEB, 0x17C8, PVOID, FlsData)
C_ASSERT_FIELD(TEB, 0x17D0, UCHAR, SafeThunkCall)
C_ASSERT_FIELD(TEB, 0x17D1, UCHAR[3], BooleanSpare)
/* KUSER_SHARED_DATA */
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x000, ULONG, TickCountLowDeprecated)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x004, ULONG, TickCountMultiplier)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x008, KSYSTEM_TIME, InterruptTime)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x014, KSYSTEM_TIME, SystemTime)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x020, KSYSTEM_TIME, TimeZoneBias)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x02C, USHORT, ImageNumberLow)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x02E, USHORT, ImageNumberHigh)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x030, WCHAR[260], NtSystemRoot)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x238, ULONG, MaxStackTraceDepth)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x23C, ULONG, CryptoExponent)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x240, ULONG, TimeZoneId)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x244, ULONG, LargePageMinimum)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x248, ULONG[7], Reserved2)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x264, NT_PRODUCT_TYPE, NtProductType)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x268, BOOLEAN, ProductTypeIsValid)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x26C, ULONG, NtMajorVersion)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x270, ULONG, NtMinorVersion)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x274, BOOLEAN[64], ProcessorFeatures)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2B4, ULONG, Reserved1)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2B8, ULONG, Reserved3)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2BC, ULONG, TimeSlip)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2C0, ALTERNATIVE_ARCHITECTURE_TYPE, AlternativeArchitecture)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2C8, LARGE_INTEGER, SystemExpirationDate)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D0, ULONG, SuiteMask)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D4, BOOLEAN, KdDebuggerEnabled)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D5, UCHAR, MitigationPolicies) // NXSupportPolicy
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D8, ULONG, ActiveConsoleId)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2DC, ULONG, DismountCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2E0, ULONG, ComPlusPackage)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2E4, ULONG, LastSystemRITEventTickCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2E8, ULONG, NumberOfPhysicalPages)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2EC, BOOLEAN, SafeBootMode)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2F0, ULONG, TraceLogging)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2F8, ULONGLONG, TestRetInstruction)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x300, ULONG, SystemCall)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x304, ULONG, SystemCallReturn)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x320, KSYSTEM_TIME, TickCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x320, ULONGLONG, TickCountQuad)

View file

@ -157,3 +157,43 @@ C_ASSERT_FIELD(TEB, 0xFB0, PTEB_ACTIVE_FRAME, ActiveFrame)
C_ASSERT_FIELD(TEB, 0xFB4, PVOID, FlsData)
C_ASSERT_FIELD(TEB, 0xFB8, UCHAR, SafeThunkCall)
C_ASSERT_FIELD(TEB, 0xFB9, UCHAR[3], BooleanSpare)
/* KUSER_SHARED_DATA */
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x000, ULONG, TickCountLowDeprecated)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x004, ULONG, TickCountMultiplier)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x008, KSYSTEM_TIME, InterruptTime)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x014, KSYSTEM_TIME, SystemTime)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x020, KSYSTEM_TIME, TimeZoneBias)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x02C, USHORT, ImageNumberLow)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x02E, USHORT, ImageNumberHigh)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x030, WCHAR[260], NtSystemRoot)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x238, ULONG, MaxStackTraceDepth)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x23C, ULONG, CryptoExponent)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x240, ULONG, TimeZoneId)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x244, ULONG, LargePageMinimum)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x248, ULONG[7], Reserved2)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x264, NT_PRODUCT_TYPE, NtProductType)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x268, BOOLEAN, ProductTypeIsValid)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x26C, ULONG, NtMajorVersion)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x270, ULONG, NtMinorVersion)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x274, BOOLEAN[64], ProcessorFeatures)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2B4, ULONG, Reserved1)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2B8, ULONG, Reserved3)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2BC, ULONG, TimeSlip)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2C0, ALTERNATIVE_ARCHITECTURE_TYPE, AlternativeArchitecture)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2C8, LARGE_INTEGER, SystemExpirationDate)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D0, ULONG, SuiteMask)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D4, BOOLEAN, KdDebuggerEnabled)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D5, UCHAR, MitigationPolicies) // NXSupportPolicy
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D8, ULONG, ActiveConsoleId)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2DC, ULONG, DismountCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2E0, ULONG, ComPlusPackage)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2E4, ULONG, LastSystemRITEventTickCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2E8, ULONG, NumberOfPhysicalPages)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2EC, BOOLEAN, SafeBootMode)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2F0, ULONG, TraceLogging)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2F8, ULONGLONG, TestRetInstruction)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x300, ULONG, SystemCall)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x304, ULONG, SystemCallReturn)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x320, KSYSTEM_TIME, TickCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x320, ULONGLONG, TickCountQuad)

View file

@ -112,3 +112,69 @@ C_ASSERT_FIELD(KTHREAD, 0x340, LONG64, WriteTransferCount)
C_ASSERT_FIELD(KTHREAD, 0x348, LONG64, OtherTransferCount)
C_ASSERT_FIELD(KTHREAD, 0x350, KTHREAD_COUNTERS*, ThreadCounters)
C_ASSERT_FIELD(KTHREAD, 0x358, XSTATE_SAVE*, XStateSave)
/* KUSER_SHARED_DATA */
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x000, ULONG, TickCountLowDeprecated)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x004, ULONG, TickCountMultiplier)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x008, KSYSTEM_TIME, InterruptTime)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x014, KSYSTEM_TIME, SystemTime)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x020, KSYSTEM_TIME, TimeZoneBias)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x02C, USHORT, ImageNumberLow)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x02E, USHORT, ImageNumberHigh)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x030, WCHAR[260], NtSystemRoot)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x238, ULONG, MaxStackTraceDepth)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x23C, ULONG, CryptoExponent)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x240, ULONG, TimeZoneId)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x244, ULONG, LargePageMinimum)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x248, ULONG[7], Reserved2)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x264, NT_PRODUCT_TYPE, NtProductType)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x268, BOOLEAN, ProductTypeIsValid)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x26C, ULONG, NtMajorVersion)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x270, ULONG, NtMinorVersion)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x274, BOOLEAN[64], ProcessorFeatures)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2B4, ULONG, Reserved1)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2B8, ULONG, Reserved3)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2BC, ULONG, TimeSlip)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2C0, ALTERNATIVE_ARCHITECTURE_TYPE, AlternativeArchitecture)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2C4, ULONG[1], AltArchitecturePad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2C8, LARGE_INTEGER, SystemExpirationDate)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D0, ULONG, SuiteMask)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D4, BOOLEAN, KdDebuggerEnabled)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D5, UCHAR, MitigationPolicies) // NXSupportPolicy
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D8, ULONG, ActiveConsoleId)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2DC, ULONG, DismountCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2E0, ULONG, ComPlusPackage)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2E4, ULONG, LastSystemRITEventTickCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2E8, ULONG, NumberOfPhysicalPages)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2EC, BOOLEAN, SafeBootMode)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2ED, UCHAR, TscQpcData)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2EE, UCHAR[2], TscQpcPad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2F0, ULONG, SharedDataFlags)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2F4, ULONG[1], DataFlagsPad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2F8, ULONGLONG, TestRetInstruction)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x300, ULONG, SystemCall)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x304, ULONG, SystemCallReturn)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x308, ULONGLONG[3], SystemCallPad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x320, KSYSTEM_TIME, TickCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x320, ULONGLONG, TickCountQuad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x320, ULONG[3], ReservedTickCountOverlay)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x32C, ULONG[1], TickCountPad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x330, ULONG, Cookie)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x334, ULONG[1], CookiePad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x338, ULONGLONG, ConsoleSessionForegroundProcessId)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x340, ULONG[16], DEPRECATED_Wow64SharedInformation)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x380, USHORT[16], UserModeGlobalLogger)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3A0, ULONG, ImageFileExecutionOptions)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3A4, ULONG, LangGenerationCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3A8, ULONGLONG, Reserved5)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3B0, ULONGLONG, InterruptTimeBias)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3B8, ULONGLONG, QpcBias) // TscQpcBias
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3C0, ULONG, ActiveProcessorCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3C4, USHORT, ActiveGroupCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3C6, USHORT, Reserved4)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3C8, ULONG, AitSamplingValue)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3CC, ULONG, AppCompatFlag)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3D0, ULONGLONG, SystemDllNativeRelocation)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3D8, ULONG, SystemDllWowRelocation)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3DC, ULONG[1], XStatePad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3E0, XSTATE_CONFIGURATION, XState)

View file

@ -100,3 +100,69 @@ C_ASSERT_FIELD(KTHREAD, 0x1E8, LIST_ENTRY, MutantListHead)
C_ASSERT_FIELD(KTHREAD, 0x1F0, PVOID, SListFaultAddress)
C_ASSERT_FIELD(KTHREAD, 0x1F4, KTHREAD_COUNTERS*, ThreadCounters)
C_ASSERT_FIELD(KTHREAD, 0x1F8, XSTATE_SAVE*, XStateSave)
/* KUSER_SHARED_DATA */
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x000, ULONG, TickCountLowDeprecated)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x004, ULONG, TickCountMultiplier)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x008, KSYSTEM_TIME, InterruptTime)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x014, KSYSTEM_TIME, SystemTime)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x020, KSYSTEM_TIME, TimeZoneBias)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x02C, USHORT, ImageNumberLow)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x02E, USHORT, ImageNumberHigh)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x030, WCHAR[260], NtSystemRoot)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x238, ULONG, MaxStackTraceDepth)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x23C, ULONG, CryptoExponent)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x240, ULONG, TimeZoneId)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x244, ULONG, LargePageMinimum)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x248, ULONG[7], Reserved2)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x264, NT_PRODUCT_TYPE, NtProductType)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x268, BOOLEAN, ProductTypeIsValid)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x26C, ULONG, NtMajorVersion)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x270, ULONG, NtMinorVersion)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x274, BOOLEAN[64], ProcessorFeatures)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2B4, ULONG, Reserved1)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2B8, ULONG, Reserved3)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2BC, ULONG, TimeSlip)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2C0, ALTERNATIVE_ARCHITECTURE_TYPE, AlternativeArchitecture)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2C4, ULONG[1], AltArchitecturePad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2C8, LARGE_INTEGER, SystemExpirationDate)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D0, ULONG, SuiteMask)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D4, BOOLEAN, KdDebuggerEnabled)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D5, UCHAR, MitigationPolicies) // NXSupportPolicy
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D8, ULONG, ActiveConsoleId)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2DC, ULONG, DismountCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2E0, ULONG, ComPlusPackage)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2E4, ULONG, LastSystemRITEventTickCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2E8, ULONG, NumberOfPhysicalPages)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2EC, BOOLEAN, SafeBootMode)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2ED, UCHAR, TscQpcData)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2EE, UCHAR[2], TscQpcPad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2F0, ULONG, SharedDataFlags)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2F4, ULONG[1], DataFlagsPad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2F8, ULONGLONG, TestRetInstruction)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x300, ULONG, SystemCall)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x304, ULONG, SystemCallReturn)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x308, ULONGLONG[3], SystemCallPad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x320, KSYSTEM_TIME, TickCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x320, ULONGLONG, TickCountQuad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x320, ULONG[3], ReservedTickCountOverlay)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x32C, ULONG[1], TickCountPad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x330, ULONG, Cookie)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x334, ULONG[1], CookiePad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x338, ULONGLONG, ConsoleSessionForegroundProcessId)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x340, ULONG[16], DEPRECATED_Wow64SharedInformation)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x380, USHORT[16], UserModeGlobalLogger)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3A0, ULONG, ImageFileExecutionOptions)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3A4, ULONG, LangGenerationCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3A8, ULONGLONG, Reserved5)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3B0, ULONGLONG, InterruptTimeBias)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3B8, ULONGLONG, QpcBias) // TscQpcBias
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3C0, ULONG, ActiveProcessorCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3C4, USHORT, ActiveGroupCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3C6, USHORT, Reserved4)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3C8, ULONG, AitSamplingValue)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3CC, ULONG, AppCompatFlag)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3D0, ULONGLONG, SystemDllNativeRelocation)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3D8, ULONG, SystemDllWowRelocation)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3DC, ULONG[1], XStatePad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3E0, XSTATE_CONFIGURATION, XState)

View file

@ -136,3 +136,85 @@ C_ASSERT_FIELD(KTHREAD, 0x5B8, LONG64, ReadTransferCount)
C_ASSERT_FIELD(KTHREAD, 0x5C0, LONG64, WriteTransferCount)
C_ASSERT_FIELD(KTHREAD, 0x5C8, LONG64, OtherTransferCount)
#endif
/* KUSER_SHARED_DATA */
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x000, ULONG, TickCountLowDeprecated)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x004, ULONG, TickCountMultiplier)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x008, KSYSTEM_TIME, InterruptTime)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x014, KSYSTEM_TIME, SystemTime)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x020, KSYSTEM_TIME, TimeZoneBias)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x02C, USHORT, ImageNumberLow)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x02E, USHORT, ImageNumberHigh)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x030, WCHAR[260], NtSystemRoot)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x238, ULONG, MaxStackTraceDepth)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x23C, ULONG, CryptoExponent)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x240, ULONG, TimeZoneId)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x244, ULONG, LargePageMinimum)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x248, ULONG, AitSamplingValue)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x24C, ULONG, AppCompatFlag)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x250, ULONGLONG, RNGSeedVersion)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x258, ULONG, GlobalValidationRunlevel)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x25C, LONG, TimeZoneBiasStamp)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x260, ULONG, Reserved2)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x264, NT_PRODUCT_TYPE, NtProductType)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x268, BOOLEAN, ProductTypeIsValid)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x269, UCHAR[1], Reserved0)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x26A, USHORT, NativeProcessorArchitecture)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x26C, ULONG, NtMajorVersion)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x270, ULONG, NtMinorVersion)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x274, BOOLEAN[64], ProcessorFeatures)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2B4, ULONG, Reserved1)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2B8, ULONG, Reserved3)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2BC, ULONG, TimeSlip)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2C0, ALTERNATIVE_ARCHITECTURE_TYPE, AlternativeArchitecture)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2C4, ULONG[1], AltArchitecturePad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2C8, LARGE_INTEGER, SystemExpirationDate)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D0, ULONG, SuiteMask)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D4, BOOLEAN, KdDebuggerEnabled)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D5, UCHAR, MitigationPolicies)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D6, UCHAR[2], Reserved6)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D8, ULONG, ActiveConsoleId)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2DC, ULONG, DismountCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2E0, ULONG, ComPlusPackage)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2E4, ULONG, LastSystemRITEventTickCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2E8, ULONG, NumberOfPhysicalPages)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2EC, BOOLEAN, SafeBootMode)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2ED, UCHAR[3], Reserved12)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2F0, ULONG, SharedDataFlags)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2F4, ULONG[1], DataFlagsPad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2F8, ULONGLONG, TestRetInstruction)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x300, LONGLONG, QpcFrequency)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x308, ULONGLONG[3], SystemCallPad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x320, KSYSTEM_TIME, TickCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x320, ULONGLONG, TickCountQuad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x320, ULONG[3], ReservedTickCountOverlay)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x32C, ULONG[1], TickCountPad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x330, ULONG, Cookie)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x334, ULONG[1], CookiePad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x338, LONGLONG, ConsoleSessionForegroundProcessId)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x340, LONGLONG, TimeUpdateLock)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x348, ULONGLONG, BaselineSystemTimeQpc)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x350, ULONGLONG, BaselineInterruptTimeQpc)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x358, ULONGLONG, QpcSystemTimeIncrement)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x360, ULONGLONG, QpcInterruptTimeIncrement)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x368, ULONG, QpcSystemTimeIncrement32)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x36C, ULONG, QpcInterruptTimeIncrement32)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x370, UCHAR, QpcSystemTimeIncrementShift)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x371, UCHAR, QpcInterruptTimeIncrementShift)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x372, USHORT, UnparkedProcessorCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x374, UCHAR[12], Reserved8)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x380, USHORT[16], UserModeGlobalLogger)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3A0, ULONG, ImageFileExecutionOptions)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3A4, ULONG, LangGenerationCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3A8, ULONGLONG, Reserved4)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3B0, ULONGLONG, InterruptTimeBias)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3B8, ULONGLONG, QpcBias)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3C0, ULONG, ActiveProcessorCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3C4, UCHAR, ActiveGroupCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3C5, UCHAR, Reserved9)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3C6, USHORT, QpcData)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3C6, BOOLEAN, QpcBypassEnabled)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3C7, UCHAR, QpcShift)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3C8, LARGE_INTEGER, TimeZoneBiasEffectiveStart)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3D0, LARGE_INTEGER, TimeZoneBiasEffectiveEnd)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3D8, XSTATE_CONFIGURATION, XState)

View file

@ -122,3 +122,85 @@ C_ASSERT_FIELD(KTHREAD, 0x32C, ULONG, ForegroundLossTime)
C_ASSERT_FIELD(KTHREAD, 0x330, LIST_ENTRY, GlobalForegroundListEntry)
C_ASSERT_FIELD(KTHREAD, 0x330, SINGLE_LIST_ENTRY, ForegroundDpcStackListEntry)
C_ASSERT_FIELD(KTHREAD, 0x334, ULONG, InGlobalForegroundList)
/* KUSER_SHARED_DATA */
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x000, ULONG, TickCountLowDeprecated)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x004, ULONG, TickCountMultiplier)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x008, KSYSTEM_TIME, InterruptTime)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x014, KSYSTEM_TIME, SystemTime)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x020, KSYSTEM_TIME, TimeZoneBias)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x02C, USHORT, ImageNumberLow)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x02E, USHORT, ImageNumberHigh)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x030, WCHAR[260], NtSystemRoot)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x238, ULONG, MaxStackTraceDepth)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x23C, ULONG, CryptoExponent)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x240, ULONG, TimeZoneId)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x244, ULONG, LargePageMinimum)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x248, ULONG, AitSamplingValue)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x24C, ULONG, AppCompatFlag)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x250, ULONGLONG, RNGSeedVersion)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x258, ULONG, GlobalValidationRunlevel)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x25C, LONG, TimeZoneBiasStamp)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x260, ULONG, Reserved2)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x264, NT_PRODUCT_TYPE, NtProductType)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x268, BOOLEAN, ProductTypeIsValid)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x269, UCHAR[1], Reserved0)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x26A, USHORT, NativeProcessorArchitecture)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x26C, ULONG, NtMajorVersion)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x270, ULONG, NtMinorVersion)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x274, BOOLEAN[64], ProcessorFeatures)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2B4, ULONG, Reserved1)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2B8, ULONG, Reserved3)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2BC, ULONG, TimeSlip)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2C0, ALTERNATIVE_ARCHITECTURE_TYPE, AlternativeArchitecture)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2C4, ULONG[1], AltArchitecturePad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2C8, LARGE_INTEGER, SystemExpirationDate)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D0, ULONG, SuiteMask)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D4, BOOLEAN, KdDebuggerEnabled)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D5, UCHAR, MitigationPolicies)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D6, UCHAR[2], Reserved6)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D8, ULONG, ActiveConsoleId)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2DC, ULONG, DismountCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2E0, ULONG, ComPlusPackage)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2E4, ULONG, LastSystemRITEventTickCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2E8, ULONG, NumberOfPhysicalPages)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2EC, BOOLEAN, SafeBootMode)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2ED, UCHAR[3], Reserved12)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2F0, ULONG, SharedDataFlags)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2F4, ULONG[1], DataFlagsPad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2F8, ULONGLONG, TestRetInstruction)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x300, LONGLONG, QpcFrequency)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x308, ULONGLONG[3], SystemCallPad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x320, KSYSTEM_TIME, TickCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x320, ULONGLONG, TickCountQuad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x320, ULONG[3], ReservedTickCountOverlay)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x32C, ULONG[1], TickCountPad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x330, ULONG, Cookie)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x334, ULONG[1], CookiePad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x338, LONGLONG, ConsoleSessionForegroundProcessId)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x340, LONGLONG, TimeUpdateLock)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x348, ULONGLONG, BaselineSystemTimeQpc)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x350, ULONGLONG, BaselineInterruptTimeQpc)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x358, ULONGLONG, QpcSystemTimeIncrement)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x360, ULONGLONG, QpcInterruptTimeIncrement)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x368, ULONG, QpcSystemTimeIncrement32)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x36C, ULONG, QpcInterruptTimeIncrement32)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x370, UCHAR, QpcSystemTimeIncrementShift)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x371, UCHAR, QpcInterruptTimeIncrementShift)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x372, USHORT, UnparkedProcessorCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x374, UCHAR[12], Reserved8)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x380, USHORT[16], UserModeGlobalLogger)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3A0, ULONG, ImageFileExecutionOptions)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3A4, ULONG, LangGenerationCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3A8, ULONGLONG, Reserved4)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3B0, ULONGLONG, InterruptTimeBias)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3B8, ULONGLONG, QpcBias)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3C0, ULONG, ActiveProcessorCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3C4, UCHAR, ActiveGroupCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3C5, UCHAR, Reserved9)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3C6, USHORT, QpcData)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3C6, BOOLEAN, QpcBypassEnabled)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3C7, UCHAR, QpcShift)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3C8, LARGE_INTEGER, TimeZoneBiasEffectiveStart)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3D0, LARGE_INTEGER, TimeZoneBiasEffectiveEnd)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3D8, XSTATE_CONFIGURATION, XState)

View file

@ -100,3 +100,82 @@ C_ASSERT_FIELD(KTHREAD, 0x328, LONG64, OtherOperationCount)
C_ASSERT_FIELD(KTHREAD, 0x330, LONG64, ReadTransferCount)
C_ASSERT_FIELD(KTHREAD, 0x338, LONG64, WriteTransferCount)
C_ASSERT_FIELD(KTHREAD, 0x340, LONG64, OtherTransferCount)
/* KUSER_SHARED_DATA */
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x000, ULONG, TickCountLowDeprecated)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x004, ULONG, TickCountMultiplier)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x008, KSYSTEM_TIME, InterruptTime)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x014, KSYSTEM_TIME, SystemTime)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x020, KSYSTEM_TIME, TimeZoneBias)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x02C, USHORT, ImageNumberLow)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x02E, USHORT, ImageNumberHigh)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x030, WCHAR[260], NtSystemRoot)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x238, ULONG, MaxStackTraceDepth)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x23C, ULONG, CryptoExponent)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x240, ULONG, TimeZoneId)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x244, ULONG, LargePageMinimum)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x248, ULONG, AitSamplingValue)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x24C, ULONG, AppCompatFlag)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x250, ULONGLONG, RNGSeedVersion)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x258, ULONG, GlobalValidationRunlevel)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x25C, LONG, TimeZoneBiasStamp)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x260, ULONG, Reserved2)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x264, NT_PRODUCT_TYPE, NtProductType)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x268, BOOLEAN, ProductTypeIsValid)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x269, UCHAR[1], Reserved0)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x26A, USHORT, NativeProcessorArchitecture)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x26C, ULONG, NtMajorVersion)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x270, ULONG, NtMinorVersion)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x274, BOOLEAN[64], ProcessorFeatures)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2B4, ULONG, Reserved1)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2B8, ULONG, Reserved3)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2BC, ULONG, TimeSlip)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2C0, ALTERNATIVE_ARCHITECTURE_TYPE, AlternativeArchitecture)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2C4, ULONG[1], AltArchitecturePad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2C8, LARGE_INTEGER, SystemExpirationDate)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D0, ULONG, SuiteMask)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D4, BOOLEAN, KdDebuggerEnabled)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D5, UCHAR, MitigationPolicies)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D6, UCHAR[2], Reserved6)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D8, ULONG, ActiveConsoleId)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2DC, ULONG, DismountCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2E0, ULONG, ComPlusPackage)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2E4, ULONG, LastSystemRITEventTickCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2E8, ULONG, NumberOfPhysicalPages)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2EC, BOOLEAN, SafeBootMode)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2ED, UCHAR[3], Reserved12)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2F0, ULONG, SharedDataFlags)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2F4, ULONG[1], DataFlagsPad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2F8, ULONGLONG, TestRetInstruction)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x300, LONGLONG, QpcFrequency)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x308, ULONGLONG[3], SystemCallPad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x320, KSYSTEM_TIME, TickCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x320, ULONGLONG, TickCountQuad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x320, ULONG[3], ReservedTickCountOverlay)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x32C, ULONG[1], TickCountPad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x330, ULONG, Cookie)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x334, ULONG[1], CookiePad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x338, ULONGLONG, ConsoleSessionForegroundProcessId)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x340, ULONGLONG, TimeUpdateSequence)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x348, ULONGLONG, BaselineSystemTimeQpc)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x350, ULONGLONG, BaselineInterruptTimeQpc)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x358, ULONGLONG, QpcSystemTimeIncrement)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x360, ULONGLONG, QpcInterruptTimeIncrement)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x368, ULONG, QpcSystemTimeIncrement32)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x36C, ULONG, QpcInterruptTimeIncrement32)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x370, UCHAR, QpcSystemTimeIncrementShift)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x371, UCHAR, QpcInterruptTimeIncrementShift)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x372, UCHAR[14], Reserved8)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x380, USHORT[16], UserModeGlobalLogger)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3A0, ULONG, ImageFileExecutionOptions)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3A4, ULONG, LangGenerationCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3A8, ULONGLONG, Reserved4)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3B0, ULONGLONG, InterruptTimeBias)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3B8, ULONGLONG, QpcBias) // TscQpcBias
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3C0, ULONG, ActiveProcessorCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3C4, UCHAR, ActiveGroupCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3C5, UCHAR, Reserved9)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3C6, USHORT, QpcData) // TscQpcData
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3C8, LARGE_INTEGER, TimeZoneBiasEffectiveStart)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3D0, LARGE_INTEGER, TimeZoneBiasEffectiveEnd)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3D8, XSTATE_CONFIGURATION, XState)

View file

@ -91,3 +91,82 @@ C_ASSERT_FIELD(KTHREAD, 0x1C0, ULONG, UserTime)
C_ASSERT_FIELD(KTHREAD, 0x1C4, KEVENT, SuspendEvent)
C_ASSERT_FIELD(KTHREAD, 0x1D4, LIST_ENTRY, ThreadListEntry)
C_ASSERT_FIELD(KTHREAD, 0x1DC, LIST_ENTRY, MutantListHead)
/* KUSER_SHARED_DATA */
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x000, ULONG, TickCountLowDeprecated)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x004, ULONG, TickCountMultiplier)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x008, KSYSTEM_TIME, InterruptTime)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x014, KSYSTEM_TIME, SystemTime)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x020, KSYSTEM_TIME, TimeZoneBias)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x02C, USHORT, ImageNumberLow)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x02E, USHORT, ImageNumberHigh)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x030, WCHAR[260], NtSystemRoot)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x238, ULONG, MaxStackTraceDepth)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x23C, ULONG, CryptoExponent)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x240, ULONG, TimeZoneId)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x244, ULONG, LargePageMinimum)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x248, ULONG, AitSamplingValue)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x24C, ULONG, AppCompatFlag)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x250, ULONGLONG, RNGSeedVersion)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x258, ULONG, GlobalValidationRunlevel)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x25C, LONG, TimeZoneBiasStamp)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x260, ULONG, Reserved2)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x264, NT_PRODUCT_TYPE, NtProductType)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x268, BOOLEAN, ProductTypeIsValid)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x269, UCHAR[1], Reserved0)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x26A, USHORT, NativeProcessorArchitecture)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x26C, ULONG, NtMajorVersion)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x270, ULONG, NtMinorVersion)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x274, BOOLEAN[64], ProcessorFeatures)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2B4, ULONG, Reserved1)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2B8, ULONG, Reserved3)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2BC, ULONG, TimeSlip)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2C0, ALTERNATIVE_ARCHITECTURE_TYPE, AlternativeArchitecture)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2C4, ULONG[1], AltArchitecturePad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2C8, LARGE_INTEGER, SystemExpirationDate)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D0, ULONG, SuiteMask)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D4, BOOLEAN, KdDebuggerEnabled)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D5, UCHAR, MitigationPolicies)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D6, UCHAR[2], Reserved6)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D8, ULONG, ActiveConsoleId)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2DC, ULONG, DismountCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2E0, ULONG, ComPlusPackage)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2E4, ULONG, LastSystemRITEventTickCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2E8, ULONG, NumberOfPhysicalPages)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2EC, BOOLEAN, SafeBootMode)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2ED, UCHAR[3], Reserved12)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2F0, ULONG, SharedDataFlags)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2F4, ULONG[1], DataFlagsPad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2F8, ULONGLONG, TestRetInstruction)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x300, LONGLONG, QpcFrequency)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x308, ULONGLONG[3], SystemCallPad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x320, KSYSTEM_TIME, TickCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x320, ULONGLONG, TickCountQuad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x320, ULONG[3], ReservedTickCountOverlay)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x32C, ULONG[1], TickCountPad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x330, ULONG, Cookie)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x334, ULONG[1], CookiePad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x338, ULONGLONG, ConsoleSessionForegroundProcessId)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x340, ULONGLONG, TimeUpdateSequence)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x348, ULONGLONG, BaselineSystemTimeQpc)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x350, ULONGLONG, BaselineInterruptTimeQpc)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x358, ULONGLONG, QpcSystemTimeIncrement)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x360, ULONGLONG, QpcInterruptTimeIncrement)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x368, ULONG, QpcSystemTimeIncrement32)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x36C, ULONG, QpcInterruptTimeIncrement32)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x370, UCHAR, QpcSystemTimeIncrementShift)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x371, UCHAR, QpcInterruptTimeIncrementShift)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x372, UCHAR[14], Reserved8)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x380, USHORT[16], UserModeGlobalLogger)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3A0, ULONG, ImageFileExecutionOptions)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3A4, ULONG, LangGenerationCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3A8, ULONGLONG, Reserved4)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3B0, ULONGLONG, InterruptTimeBias)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3B8, ULONGLONG, QpcBias) // TscQpcBias
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3C0, ULONG, ActiveProcessorCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3C4, UCHAR, ActiveGroupCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3C5, UCHAR, Reserved9)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3C6, USHORT, QpcData) // TscQpcData
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3C8, LARGE_INTEGER, TimeZoneBiasEffectiveStart)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3D0, LARGE_INTEGER, TimeZoneBiasEffectiveEnd)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3D8, XSTATE_CONFIGURATION, XState)

View file

@ -116,3 +116,54 @@ C_ASSERT_FIELD(KTHREAD, 0x310, LONG64, ReadTransferCount)
C_ASSERT_FIELD(KTHREAD, 0x318, LONG64, WriteTransferCount)
C_ASSERT_FIELD(KTHREAD, 0x320, LONG64, OtherTransferCount)
C_ASSERT_FIELD(KTHREAD, 0x328, PVOID, MdlForLockedTeb)
/* KUSER_SHARED_DATA */
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x000, ULONG, TickCountLowDeprecated)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x004, ULONG, TickCountMultiplier)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x008, KSYSTEM_TIME, InterruptTime)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x014, KSYSTEM_TIME, SystemTime)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x020, KSYSTEM_TIME, TimeZoneBias)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x02C, USHORT, ImageNumberLow)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x02E, USHORT, ImageNumberHigh)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x030, WCHAR[260], NtSystemRoot)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x238, ULONG, MaxStackTraceDepth)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x23C, ULONG, CryptoExponent)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x240, ULONG, TimeZoneId)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x244, ULONG, LargePageMinimum)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x248, ULONG[7], Reserved2)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x264, NT_PRODUCT_TYPE, NtProductType)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x268, BOOLEAN, ProductTypeIsValid)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x26C, ULONG, NtMajorVersion)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x270, ULONG, NtMinorVersion)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x274, BOOLEAN[64], ProcessorFeatures)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2B4, ULONG, Reserved1)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2B8, ULONG, Reserved3)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2BC, ULONG, TimeSlip)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2C0, ALTERNATIVE_ARCHITECTURE_TYPE, AlternativeArchitecture)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2C8, LARGE_INTEGER, SystemExpirationDate)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D0, ULONG, SuiteMask)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D4, BOOLEAN, KdDebuggerEnabled)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D5, UCHAR, MitigationPolicies) // NXSupportPolicy
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D8, ULONG, ActiveConsoleId)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2DC, ULONG, DismountCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2E0, ULONG, ComPlusPackage)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2E4, ULONG, LastSystemRITEventTickCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2E8, ULONG, NumberOfPhysicalPages)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2EC, BOOLEAN, SafeBootMode)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2F0, ULONG, SharedDataFlags)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2F8, ULONGLONG, TestRetInstruction)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x300, ULONG, SystemCall)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x304, ULONG, SystemCallReturn)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x320, KSYSTEM_TIME, TickCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x320, ULONGLONG, TickCountQuad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x330, ULONG, Cookie)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x338, ULONGLONG, ConsoleSessionForegroundProcessId)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x340, ULONG[16], Wow64SharedInformation)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x380, USHORT[8], UserModeGlobalLogger)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x390, ULONG[2], HeapTracingPid)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x398, ULONG[2], CritSecTracingPid)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3A0, ULONG, ImageFileExecutionOptions)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3A4, ULONG, LangGenerationCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3A8, ULONGLONG, AffinityPad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3A8, KAFFINITY, ActiveProcessorAffinity)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3B0, ULONGLONG, InterruptTimeBias)

View file

@ -108,3 +108,54 @@ C_ASSERT_FIELD(KTHREAD, 0x1C4, LIST_ENTRY, ThreadListEntry)
C_ASSERT_FIELD(KTHREAD, 0x1CC, LIST_ENTRY, MutantListHead)
C_ASSERT_FIELD(KTHREAD, 0x1D4, PVOID, SListFaultAddress)
C_ASSERT_FIELD(KTHREAD, 0x1D8, PVOID, MdlForLockedTeb)
/* KUSER_SHARED_DATA */
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x000, ULONG, TickCountLowDeprecated)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x004, ULONG, TickCountMultiplier)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x008, KSYSTEM_TIME, InterruptTime)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x014, KSYSTEM_TIME, SystemTime)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x020, KSYSTEM_TIME, TimeZoneBias)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x02C, USHORT, ImageNumberLow)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x02E, USHORT, ImageNumberHigh)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x030, WCHAR[260], NtSystemRoot)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x238, ULONG, MaxStackTraceDepth)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x23C, ULONG, CryptoExponent)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x240, ULONG, TimeZoneId)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x244, ULONG, LargePageMinimum)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x248, ULONG[7], Reserved2)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x264, NT_PRODUCT_TYPE, NtProductType)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x268, BOOLEAN, ProductTypeIsValid)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x26C, ULONG, NtMajorVersion)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x270, ULONG, NtMinorVersion)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x274, BOOLEAN[64], ProcessorFeatures)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2B4, ULONG, Reserved1)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2B8, ULONG, Reserved3)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2BC, ULONG, TimeSlip)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2C0, ALTERNATIVE_ARCHITECTURE_TYPE, AlternativeArchitecture)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2C8, LARGE_INTEGER, SystemExpirationDate)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D0, ULONG, SuiteMask)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D4, BOOLEAN, KdDebuggerEnabled)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D5, UCHAR, MitigationPolicies) // NXSupportPolicy
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2D8, ULONG, ActiveConsoleId)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2DC, ULONG, DismountCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2E0, ULONG, ComPlusPackage)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2E4, ULONG, LastSystemRITEventTickCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2E8, ULONG, NumberOfPhysicalPages)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2EC, BOOLEAN, SafeBootMode)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2F0, ULONG, SharedDataFlags)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x2F8, ULONGLONG, TestRetInstruction)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x300, ULONG, SystemCall)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x304, ULONG, SystemCallReturn)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x320, KSYSTEM_TIME, TickCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x320, ULONGLONG, TickCountQuad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x330, ULONG, Cookie)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x338, ULONGLONG, ConsoleSessionForegroundProcessId)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x340, ULONG[16], Wow64SharedInformation)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x380, USHORT[8], UserModeGlobalLogger)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x390, ULONG[2], HeapTracingPid)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x398, ULONG[2], CritSecTracingPid)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3A0, ULONG, ImageFileExecutionOptions)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3A4, ULONG, LangGenerationCount)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3A8, ULONGLONG, AffinityPad)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3A8, KAFFINITY, ActiveProcessorAffinity)
C_ASSERT_FIELD(KUSER_SHARED_DATA, 0x3B0, ULONGLONG, InterruptTimeBias)

View file

@ -1281,9 +1281,28 @@ typedef struct _KUSER_SHARED_DATA
ULONG CryptoExponent; // 0x23c
ULONG TimeZoneId; // 0x240
ULONG LargePageMinimum; // 0x244
#if (NTDDI_VERSION >= NTDDI_WIN8)
ULONG AitSamplingValue; // 0x248
ULONG AppCompatFlag; // 0x24c
ULONGLONG RNGSeedVersion; // 0x250
ULONG GlobalValidationRunlevel; // 0x258
volatile LONG TimeZoneBiasStamp; // 0x25c
#if (NTDDI_VERSION >= NTDDI_WIN10)
ULONG NtBuildNumber; // 0x260
#else
ULONG Reserved2; // 0x260
#endif
#else
ULONG Reserved2[7]; // 0x248
#endif // NTDDI_VERSION >= NTDDI_WIN8
NT_PRODUCT_TYPE NtProductType; // 0x264
BOOLEAN ProductTypeIsValid; // 0x268
BOOLEAN Reserved0[1]; // 0x269
#if (NTDDI_VERSION >= NTDDI_WIN8)
USHORT NativeProcessorArchitecture; // 0x26a
#endif
ULONG NtMajorVersion; // 0x26c
ULONG NtMinorVersion; // 0x270
BOOLEAN ProcessorFeatures[PROCESSOR_FEATURE_MAX]; // 0x274
@ -1291,12 +1310,29 @@ typedef struct _KUSER_SHARED_DATA
ULONG Reserved3; // 0x2b8
volatile ULONG TimeSlip; // 0x2bc
ALTERNATIVE_ARCHITECTURE_TYPE AlternativeArchitecture; // 0x2c0
#if (NTDDI_VERSION >= NTDDI_WIN10)
ULONG BootId; // 0x2c4
#else
ULONG AltArchitecturePad[1]; // 0x2c4
#endif
LARGE_INTEGER SystemExpirationDate; // 0x2c8
ULONG SuiteMask; // 0x2d0
BOOLEAN KdDebuggerEnabled; // 0x2d4
#if (NTDDI_VERSION >= NTDDI_WINXPSP2)
UCHAR NXSupportPolicy; // 0x2d5
union
{
UCHAR MitigationPolicies; // 0x2d5
struct
{
UCHAR NXSupportPolicy : 2;
UCHAR SEHValidationPolicy : 2;
UCHAR CurDirDevicesSkippedForDlls : 2;
UCHAR Reserved : 2;
};
};
#if (NTDDI_VERSION >= NTDDI_WIN10_19H1)
USHORT CyclesPerYield; // 0x2d6 // Win 10 19H1+
#else
UCHAR Reserved6[2]; // 0x2d6
#endif
volatile ULONG ActiveConsoleId; // 0x2d8
volatile ULONG DismountCount; // 0x2dc
@ -1304,7 +1340,8 @@ typedef struct _KUSER_SHARED_DATA
ULONG LastSystemRITEventTickCount; // 0x2e4
ULONG NumberOfPhysicalPages; // 0x2e8
BOOLEAN SafeBootMode; // 0x2ec
#if (NTDDI_VERSION >= NTDDI_WIN7)
#if (NTDDI_VERSION == NTDDI_WIN7)
union
{
UCHAR TscQpcData; // 0x2ed
@ -1316,7 +1353,24 @@ typedef struct _KUSER_SHARED_DATA
} DUMMYSTRUCTNAME;
} DUMMYUNIONNAME;
UCHAR TscQpcPad[2]; // 0x2ee
#elif (NTDDI_VERSION >= NTDDI_WIN10_RS1)
union
{
UCHAR VirtualizationFlags; // 0x2ed
#if defined(_ARM64_)
struct
{
UCHAR ArchStartedInEl2 : 1;
UCHAR QcSlIsSupported : 1;
UCHAR : 6;
};
#endif
};
UCHAR Reserved12[2]; // 0x2ee
#else
UCHAR Reserved12[3]; // 0x2ed
#endif // NTDDI_VERSION == NTDDI_WIN7
#if (NTDDI_VERSION >= NTDDI_VISTA)
union
{
@ -1327,20 +1381,43 @@ typedef struct _KUSER_SHARED_DATA
ULONG DbgElevationEnabled : 1; // 0x2f0
ULONG DbgVirtEnabled : 1; // 0x2f0
ULONG DbgInstallerDetectEnabled : 1; // 0x2f0
#if (NTDDI_VERSION >= NTDDI_WIN8)
ULONG DbgLkgEnabled : 1; // 0x2f0
#else
ULONG DbgSystemDllRelocated : 1; // 0x2f0
#endif
ULONG DbgDynProcessorEnabled : 1; // 0x2f0
#if (NTDDI_VERSION >= NTDDI_WIN8)
ULONG DbgConsoleBrokerEnabled : 1; // 0x2f0
#else
ULONG DbgSEHValidationEnabled : 1; // 0x2f0
ULONG SpareBits:25; // 0x2f0
#endif
ULONG DbgSecureBootEnabled : 1; // 0x2f0 Win8+
ULONG DbgMultiSessionSku : 1; // 0x2f0 Win 10+
ULONG DbgMultiUsersInSessionSku : 1; // 0x2f0 Win 10 RS1+
ULONG DbgStateSeparationEnabled : 1; // 0x2f0 Win 10 RS3+
ULONG SpareBits : 21; // 0x2f0
} DUMMYSTRUCTNAME2;
} DUMMYUNIONNAME2;
#else
ULONG TraceLogging;
#endif
#endif // NTDDI_VERSION >= NTDDI_VISTA
ULONG DataFlagsPad[1]; // 0x2f4
ULONGLONG TestRetInstruction; // 0x2f8
#if (NTDDI_VERSION >= NTDDI_WIN8)
ULONGLONG QpcFrequency; // 0x300
#else
ULONG SystemCall; // 0x300
ULONG SystemCallReturn; // 0x304
#endif
#if (NTDDI_VERSION >= NTDDI_WIN10_TH2)
ULONG SystemCall; // 0x308
ULONG SystemCallPad0; // 0x30c Renamed to Reserved2 in Vibranium R3
ULONGLONG SystemCallPad[2]; // 0x310
#else
ULONGLONG SystemCallPad[3]; // 0x308
#endif
union
{
volatile KSYSTEM_TIME TickCount; // 0x320
@ -1352,14 +1429,53 @@ typedef struct _KUSER_SHARED_DATA
} DUMMYSTRUCTNAME;
} DUMMYUNIONNAME3;
ULONG Cookie; // 0x330
#if (NTDDI_VERSION < NTDDI_VISTA)
ULONG Wow64SharedInformation[MAX_WOW64_SHARED_ENTRIES]; // 0x334
#endif
//
// Windows Vista and later
//
#if (NTDDI_VERSION >= NTDDI_VISTA)
ULONG CookiePad[1]; // 0x334
LONGLONG ConsoleSessionForegroundProcessId; // 0x338
#if (NTDDI_VERSION >= NTDDI_WIN8)
#if (NTDDI_VERSION >= NTDDI_WINBLUE)
ULONGLONG TimeUpdateLock; // 0x340
#else
ULONGLONG TimeUpdateSequence; // 0x340
#endif
#if (NTDDI_VERSION >= NTDDI_WS03)
ULONG Wow64SharedInformation[MAX_WOW64_SHARED_ENTRIES]; // 2K3: 0x334 / Vista+: 0x340
ULONGLONG BaselineSystemTimeQpc; // 0x348
ULONGLONG BaselineInterruptTimeQpc; // 0x350
ULONGLONG QpcSystemTimeIncrement; // 0x358
ULONGLONG QpcInterruptTimeIncrement; // 0x360
#if (NTDDI_VERSION >= NTDDI_WIN10)
UCHAR QpcSystemTimeIncrementShift; // 0x368
UCHAR QpcInterruptTimeIncrementShift; // 0x369
USHORT UnparkedProcessorCount; // 0x36a
ULONG EnclaveFeatureMask[4]; // 0x36c Win 10 TH2+
ULONG TelemetryCoverageRound; // 0x37c Win 10 RS2+
#else // NTDDI_VERSION < NTDDI_WIN10
ULONG QpcSystemTimeIncrement32; // 0x368
ULONG QpcInterruptTimeIncrement32; // 0x36c
UCHAR QpcSystemTimeIncrementShift; // 0x370
UCHAR QpcInterruptTimeIncrementShift; // 0x371
#if (NTDDI_VERSION >= NTDDI_WINBLUE)
USHORT UnparkedProcessorCount; // 0x372
UCHAR Reserved8[12]; // 0x374
#else
UCHAR Reserved8[14]; // 0x372
#endif
#if (NTDDI_VERSION >= NTDDI_VISTA)
#endif // NTDDI_VERSION < NTDDI_WIN10
#elif (NTDDI_VERSION >= NTDDI_VISTASP2)
ULONG DEPRECATED_Wow64SharedInformation[MAX_WOW64_SHARED_ENTRIES]; // 0x340
#else
ULONG Wow64SharedInformation[MAX_WOW64_SHARED_ENTRIES]; // 0x340
#endif // NTDDI_VERSION >= NTDDI_VISTA
#if (NTDDI_VERSION >= NTDDI_WIN7)
USHORT UserModeGlobalLogger[16]; // 0x380
#else
@ -1367,27 +1483,74 @@ typedef struct _KUSER_SHARED_DATA
ULONG HeapTracingPid[2]; // 0x390
ULONG CritSecTracingPid[2]; // 0x398
#endif
ULONG ImageFileExecutionOptions; // 0x3a0
#if (NTDDI_VERSION >= NTDDI_VISTASP1)
ULONG LangGenerationCount; // 0x3a4
#else
/* 4 bytes padding */
#endif
ULONG LangGenerationCount; // 0x3a4 Vista SP2+
#if (NTDDI_VERSION >= NTDDI_WIN8)
ULONGLONG Reserved4; // 0x3a8
#elif (NTDDI_VERSION >= NTDDI_WIN7)
ULONGLONG Reserved5; // 0x3a8
volatile ULONG64 InterruptTimeBias; // 0x3b0
#else
union
{
KAFFINITY ActiveProcessorAffinity; // 0x3a8
ULONGLONG AffinityPad; // 0x3a8
};
#endif
volatile ULONGLONG InterruptTimeBias; // 0x3b0
#endif // NTDDI_VERSION >= NTDDI_VISTA
//
// Windows 7 and later
//
#if (NTDDI_VERSION >= NTDDI_WIN7)
volatile ULONG64 TscQpcBias; // 0x3b8
volatile ULONG ActiveProcessorCount; // 0x3c0
volatile USHORT ActiveGroupCount; // 0x3c4
volatile ULONGLONG QpcBias; // 0x3b8 // Win7: TscQpcBias
/* volatile */ ULONG ActiveProcessorCount; // 0x3c0 // not volatile since Win 8.1 Update 1
#if (NTDDI_VERSION >= NTDDI_WIN8)
volatile UCHAR ActiveGroupCount; // 0x3c4
UCHAR Reserved9; // 0x3c5
union
{
USHORT QpcData; // 0x3c6
struct
{
volatile UCHAR QpcBypassEnabled; // 0x3c6
UCHAR QpcShift; // 0x3c7
};
};
LARGE_INTEGER TimeZoneBiasEffectiveStart; // 0x3c8
LARGE_INTEGER TimeZoneBiasEffectiveEnd; // 0x3d0
XSTATE_CONFIGURATION XState; // 0x3d8
#else
USHORT ActiveGroupCount; // 0x3c4
USHORT Reserved4; // 0x3c6
volatile ULONG AitSamplingValue; // 0x3c8
volatile ULONG AppCompatFlag; // 0x3cc
ULONGLONG SystemDllNativeRelocation; // 0x3d0
ULONG SystemDllWowRelocation; // 0x3d8
ULONGLONG SystemDllNativeRelocation; // 0x3d0 deprecated in Win7 SP2
ULONG SystemDllWowRelocation; // 0x3d8 deprecated in Win7 SP2
ULONG XStatePad[1]; // 0x3dc
XSTATE_CONFIGURATION XState; // 0x3e0
#endif
#endif // NTDDI_VERSION >= NTDDI_WIN8
#endif // NTDDI_VERSION >= NTDDI_WIN7
//
// Windows 10 Vibranium and later
//
#if (NTDDI_VERSION >= NTDDI_WIN10_VB)
KSYSTEM_TIME FeatureConfigurationChangeStamp; // 0x710 // Win 11: 0x720
ULONG Spare; // 0x71c // Win 11: 0x72c
#endif // NTDDI_VERSION >= NTDDI_WIN10_VB
//
// Windows 11 Nickel and later
//
#if (NTDDI_VERSION >= NTDDI_WIN11_NI)
ULONG64 UserPointerAuthMask; // 0x730
#endif // NTDDI_VERSION >= NTDDI_WIN11_NI
} KUSER_SHARED_DATA, *PKUSER_SHARED_DATA;
#if (NTDDI_VERSION >= NTDDI_VISTA)