MiActOnMirrorBitmap
VOID __fastcall MiActOnMirrorBitmap(_RTL_BITMAP_EX *BitMap, _MI_MIRROR_BITMAP_OPERATION Operation){
PHYSICAL_MEMORY_DESCRIPTOR *v2;
unsigned int i;
UINT64 PageCount;
UINT64 BasePage;
v2 = MmPhysicalMemoryBlock;
for( i = 0; i < v2->NumberOfRuns; ++i )
{
PageCount = v2->Run[i].PageCount;
BasePage = v2->Run[i].BasePage;
if( Operation )
{
if( Operation == MiMirrorBitmapSetAllBits )
{
RtlSetBitsEx(BitMap, BasePage, PageCount);
}
else if( Operation == MiMirrorBitmapClearAllBits )
{
RtlClearBitsEx(BitMap, BasePage, PageCount);
}
}
else if( !MiSplitMirrorBitMap(BitMap, BasePage, PageCount) )
{
return;
}
}
}Referenced by:
MiMirrorBrownPhase
MiUpdateMirrorBitmaps
MmDuplicateMemory