Geoff Chappell - Software Analyst
The MI_SYSTEM_VA_STATE structure (formally _MI_SYSTEM_VA_STATE) is known only as the type of the SystemVa member of the MI_SYSTEM_INFORMATION, which is in turn the type of the internal variable MiState in the Windows 10 kernel.
As a collection of what earlier versions had as separately named internal variables, the MI_SYSTEM_VA_STATE is highly susceptible to changing between builds.
Version | Size (x86) | Size (x64) |
---|---|---|
10.0 to 1511 | 0x14C0 | 0x02C0 |
1607 | 0x14C0 | 0x0300 |
1703 | 0x1500 | 0x0380 |
1709 | 0x1500 | 0x03C0 |
1803 to 1809 | 0x2740 | 0x0500 |
1903 | 0x2740 | 0x0480 |
2004 | 0x2740 | 0x04C0 |
These sizes and the offsets, names and types in the table below are from type information in the public symbol files for the kernel.
Offset (x86) | Offset (x64) | Definition | Versions | Remarks |
---|---|---|---|---|
0x00 | 0x00 |
ULONG_PTR SystemTablesLock; |
10.0 and higher | |
0x04 |
ULONG SystemVaBias; |
10.0 and higher | ||
0x08 |
ULONG SystemAvailableVaLow; |
10.0 and higher | ||
0x0C |
ULONG VirtualBias; |
10.0 and higher | ||
0x10 (10.0 to 1511) |
PVOID HyperSpaceEnd; |
10.0 to 1511 | next at 0x1418 | |
0x14 (10.0 to 1511); 0x10 (1607) |
MMPTE *HyperSpaceEndPte; |
10.0 to 1607 | ||
0x18 (10.0 to 1511); 0x14 (1607); 0x10 |
PVOID SystemRangeStart; |
10.0 and higher | ||
0x1C (10.0 to 1511); 0x18 (1607); 0x14 |
UCHAR SystemCachePdeCount [0x0400]; |
10.0 and higher | ||
0x041C (10.0 to 1511); 0x0418 (1607); 0x0414 |
PVOID SystemCacheReverseMaps [0x0400]; |
10.0 and higher | ||
0x08 |
ULONGLONG AvailableSystemCacheVa; |
10.0 and higher | ||
0x10 |
MI_DYNAMIC_BITMAP DynamicBitMapKernelStacks; |
1709 and higher | ||
0x10 (10.0 to 1703); 0x58 |
MI_DYNAMIC_BITMAP DynamicBitMapSystemPtes; |
10.0 and higher | ||
0x60 (10.0 to 1607); 0x58 (1703); 0xA0 |
MI_DYNAMIC_BITMAP DynamicBitMapDriverImages [2]; |
10.0 and higher | ||
0x0100 (10.0 to 1607); 0xE8 (1703); 0x0130 |
MI_DYNAMIC_BITMAP DynamicBitMapPagedPool; |
10.0 and higher | ||
0x0150 (10.0 to 1607); 0x0130 (1703); 0x0178 (1709 to 1809) |
MI_DYNAMIC_BITMAP DynamicBitMapSpecialPool; |
10.0 to 1607 | ||
MI_DYNAMIC_BITMAP DynamicBitMapSpecialPool [2]; |
1703 to 1809 | |||
0x01A0 (10.0 to 1607); 0x01C0 (1703); 0x0208 (1709 to 1809); 0x0178 |
MI_DYNAMIC_BITMAP DynamicBitMapSystemCache; |
10.0 and higher | ||
0x01C0 |
MI_DYNAMIC_BITMAP DynamicBitMapSecureNonPagedPool; |
2004 and higher | ||
0x0208 (1703); 0x0250 (1709 to 1809); 0x01C0 (1903); 0x0208 |
PVOID HalPrivateVaStart; |
1703 and higher | ||
0x0210 (1703); 0x0258 (1709 to 1809); 0x01C8 (1903); 0x0210 |
ULONGLONG HalPrivateVaSize; |
1703 and higher | ||
0x01F0 (10.0 to 1607); 0x0218 (1703); 0x0260 (1709 to 1809); 0x01D0 (1903); 0x0218 |
ULONG SystemVaAssignment [8]; |
1607 and higher | ||
0x0210 (10.0 to 1607); 0x0238 (1703); 0x0280 (1709 to 1809); 0x01F0 (1903); 0x0238 |
ULONG SystemVaAssignmentHint; |
1607 and higher | ||
0x1414 |
MI_SYSTEM_REGION_REFERENCE VaRegion [0x0400]; |
1803 and higher | ||
0x2414 | 0x0284 (1803 to 1809); 0x01F4 (1903); 0x023C |
ULONG TopLevelPteLockBits [0x80]; |
1803 and higher (x86) | |
ULONG TopLevelPteLockBits [0x20]; |
1803 and higher (x64) | |||
0x2614 |
ULONG TopLevelPteAlternateLockBits [4]; |
1803 and higher | ||
0x1414 (1703 to 1709); 0x2624 |
0x023C (1703); 0x0284 (1709); 0x0304 (1803 to 1809); 0x0274 (1903); 0x02BC |
LONG volatile DeleteKvaLock; |
1703 and higher | previously at 0x143C and 0x0258 |
0x1418 (1703 to 1709); 0x2628 |
0x0240 (1703); 0x0288 (1709); 0x0308 (1803 to 1809); 0x0278 (1903); 0x02C0 |
MI_WSLE *WsleArrays [5]; |
1703 to 1709 | |
MI_WSLE *WsleArrays [8]; |
1803 and higher | |||
0x142C (1703 to 1709); 0x2648 |
0x0268 (1703); 0x02B0 (1709); 0x0348 (1803 to 1809); 0x02B8 (1903); 0x0300 |
MI_HYPER_SPACE *PagableHyperSpace; |
1703 and higher | |
0x1418 (1607); 0x1430 (1703 to 1709); 0x264C |
0x0218 (1607); 0x0270 (1703); 0x02B8 (1709); 0x0350 (1803 to 1809); 0x02C0 (1903); 0x0308 |
PVOID HyperSpaceEnd; |
1607 and higher | previously at 0x10 (x86) |
0x141C (10.0 to 1607) | 0x01F0 (10.0 to 1511); 0x0220 (1607) |
MMWSLE_HASH *WorkingSetListHashStart; |
10.0 to 1607 | |
0x1420 (10.0 to 1607) | 0x01F8 (10.0 to 1511); 0x0228 (1607) |
MMWSLE_HASH *WorkingSetListHashEnd; |
10.0 to 1607 | |
0x1424 (10.0 to 1607) | 0x0200 (10.0 to 1511); 0x0230 (1607) |
MMWSLE_NONDIRECT_HASH *WorkingSetListIndirectHashStart; |
10.0 to 1607 | |
0x2650 | 0x02C8 (1903); 0x0310 |
ULONG_PTR PagableHyperSpaceBytes; |
1903 and higher | |
0x02D0 (1903); 0x0318 |
ULONGLONG PageTableCommitmentOffset [2]; |
1903 and higher | ||
0x1428 (10.0 to 1607); 0x1434 (1703 to 1709); 0x2650 (1803 to 1809); 0x2654 |
0x0208 (10.0 to 1511); 0x0238 (1607); 0x0278 (1703); 0x02C0 (1709); 0x0358 (1803 to 1809); 0x02E0 (1903); 0x0328 |
KEVENT FreeSystemCacheVa; |
10.0 and higher | |
0x1438 (10.0 to 1607); 0x1444 (1703 to 1709); 0x2660 (1803 to 1809); 0x2664 |
0x0220 (10.0 to 1511); 0x0250 (1607); 0x0290 (1703); 0x02D8 (1709); 0x0370 (1803 to 1809); 0x02F8 (1903); 0x0340 |
ULONG_PTR SystemVaLock; |
10.0 and higher | |
0x143C (10.0 to 1607) | 0x0228 (10.0 to 1511); 0x0258 (1607) |
LONG volatile DeleteKvaLock; |
10.0 to 1607 | next at 0x1414 and 0x023C |
0x1440 (10.0 to 1607) | 0x0230 (10.0 to 1511); 0x0260 (1607) |
MI_PTE_CHAIN_HEAD FreeSystemCache; |
10.0 to 1607 | |
0x1458 (10.0 to 1607); 0x1448 (1703 to 1709); 0x2664 (1803 to 1809); 0x2668 |
0x0248 (10.0 to 1511); 0x0278 (1607); 0x0298 (1703); 0x02E0 (1709); 0x0378 (1803 to 1809); 0x0300 (1903); 0x0348 |
ULONG_PTR SystemCacheViewLock; |
10.0 and higher | |
0x145C (1607) | 0x0280 (1607) |
EX_PUSH_LOCK SystemCacheInitLock; |
1607 only | |
0x145C (10.0 to 1511); 0x1460 (1607) |
0x0250 (10.0 to 1511); 0x0288 (1607) |
ULONG_PTR UnusableWsles [5]; |
10.0 to 1607 | |
0x1470 (10.0 to 1511); 0x1474 (1607) |
0x0278 (10.0 to 1511); 0x02B0 (1607) |
ULONG_PTR PossibleWsles [5]; |
10.0 to 1607 | |
0x1488 (1607) | 0x02D8 (1607) |
MMSUPPORT_INSTANCE *SystemWs [3]; |
1607 only | |
0x144C (1703 to 1709); 0x2668 (1803 to 1809); 0x266C |
0x02A0 (1703); 0x02E8 (1709); 0x0380 (1803 to 1809); 0x0308 (1903); 0x0350 |
MMWSL_INSTANCE SystemWorkingSetList [5]; |
1703 to 1709 | |
MMWSL_INSTANCE SystemWorkingSetList [8]; |
1803 and higher | |||
0x04C0 (1803 to 1809); 0x0448 (1903); 0x0490 |
ULONGLONG SelfmapLock [4]; |
1803 and higher |