MiInitializeSections
VOID __stdcall MiInitializeSections(_MI_PARTITION *Partition){
_BYTE *v2;
__int64 v3;
v2 = Partition->Segments.gapB0;
*((_QWORD *)v2 + 5) = v2 + 32;
*((_QWORD *)v2 + 4) = v2 + 32;
*((_QWORD *)v2 + 7) = v2 + 48;
*((_QWORD *)v2 + 6) = v2 + 48;
*((_QWORD *)v2 + 9) = v2 + 64;
*((_QWORD *)v2 + 8) = v2 + 64;
KeInitializeSemaphore((PRKSEMAPHORE)v2, 0, 0x7FFFFFFF);
Partition->Segments.DeleteOnCloseList.Blink = &Partition->Segments.DeleteOnCloseList;
Partition->Segments.DeleteOnCloseList.Flink = &Partition->Segments.DeleteOnCloseList;
Partition->Segments.UnusedSegmentList.Blink = &Partition->Segments.UnusedSegmentList;
Partition->Segments.UnusedSegmentList.Flink = &Partition->Segments.UnusedSegmentList;
Partition->Segments.UnusedSubsectionList.Blink = &Partition->Segments.UnusedSubsectionList;
Partition->Segments.UnusedSubsectionList.Flink = &Partition->Segments.UnusedSubsectionList;
KeInitializeEvent((INT64)&Partition->Segments.gap20[24], 0, 0);
Partition->Segments.DeleteSubsectionList[0].Blink = Partition->Segments.DeleteSubsectionList;
Partition->Segments.DeleteSubsectionList[0].Flink = Partition->Segments.DeleteSubsectionList;
KeInitializeEvent((INT64)Partition->Segments.gap20, 0, 0);
KeInitializeEvent((INT64)&Partition->Segments.DeleteSubsectionList[1], 1, 0);
KeInitializeTimerEx((INT64)&Partition->Segments.DeleteOnCloseTimer, 1);
KeInitializeEvent((INT64)Partition->Segments.gap1D0, 0, 0);
InitializeSListHead(&Partition->Segments.CloneProtosSListHead);
Partition->Segments.AttemptForCantExtend.RequestedExpansionSize = 1i64;
Partition->Segments.AttemptForCantExtend.Segment = 0i64;
Partition->Segments.AttemptForCantExtend.ActualExpansion = 0i64;
Partition->Segments.AttemptForCantExtend.InProgress = 0;
v3 = Partition->Segments.AttemptForCantExtend.u1.Flags._bf_3 & 0xFD;
Partition->Segments.AttemptForCantExtend.Partition = Partition;
Partition->Segments.AttemptForCantExtend.u1.Flags.PageFileNumber = -1;
Partition->Segments.AttemptForCantExtend.u1.Flags._bf_3 = v3 | 4;
KeInitializeEvent((INT64)Partition->Segments.AttemptForCantExtend.gap30, 0, 0);
}Referenced by:
MiInitNucleus
MiInitializePartition