MI_PARTITION_ZEROING

The MI_PARTITION_ZEROING structure (formally _MI_PARTITION_ZEROING) is here thought to exist only as a subdivision of the MI_PARTITION, specifically as the latter’s Zeroing member.

Variability

The MI_PARTITION_ZEROING structure is an implementation detail and can be expected to change between builds. The following changes of size give some rough indication of the variability so far:

Version Size (x86) Size (x64)
10.0 0x2C 0x48
1511 0x40 0x68
1607 to 1703 0x3C 0x60
1709 to 1903 0x40 0x68
2004 0x74 0xB0

Layout

The sizes in the preceding table and the offsets, names and types in the next are from type information in public symbol files for the kernel.

Offset (x86) Offset (x64) Definition Versions
0x00 0x00
KEVENT PageEvent;
10.0 and higher
0x10 (10.0 to 1903) 0x18 (10.0 to 1903)
BOOLEAN ThreadActive;
10.0 to 1903
0x11 (1709 to 1903);
0x10
0x19 (1709 to 1903);
0x18
UCHAR ThreadPriorityStatic;
1709 and higher
0x11 0x19
BOOLEAN AdaptiveZeroingEnabled;
2004 and higher
0x14 0x1C
LONG ZeroFreePageSlistMinimum;
10.0 and higher
0x18 (10.0 to 1511) 0x20 (10.0 to 1511)
MMPTE *FirstReservedZeroingPte;
10.0 to 1511
0x1C (10.0 to 1511);
0x18
0x28 (10.0 to 1511);
0x20
WORK_QUEUE_ITEM RebalanceZeroFreeWorkItem;
10.0 and higher
0x28 0x40
LONG volatile NodeCount;
2004 and higher
0x2C 0x48
KGATE LargeBootZeroingComplete;
2004 and higher
0x3C 0x60
MI_WRITE_CALIBRATION WriteCalibration;
2004 and higher
0x54 0x80
BOOLEAN IpiCalibrationFailed;
2004 and higher
0x58 0x84
LONG volatile ActiveProcessorsForIpiCalibration;
2004 and higher
0x5C 0x88
LONG volatile NodesReadyForIpiCalibration;
2004 and higher
0x60 0x90
KEVENT ReleaseNodeZeroingThreads;
2004 and higher
0x2C (1511);
0x28 (1607 to 1903)
0x48 (1511);
0x40 (1607 to 1903)
LONG volatile ThreadCount;
1511 to 1903
0x30 (1511);
0x2C (1607 to 1903)
0x50 (1511);
0x48 (1607 to 1903)
KGATE Gate;
1511 to 1903
0x3C (1709 to 1903);
0x70
0x60 (1709 to 1903);
0xA8
MI_ZERO_THREAD_CONTEXT *ThreadContext;
1709 and higher