MiFlushCacheForAttributeChange
VOID __stdcall MiFlushCacheForAttributeChange(
UINT64 PageFrameIndex,
UINT64 NumberOfPages,
_MI_PFN_CACHE_ATTRIBUTE NewCacheAttribute){
UINT64 v4;
unsigned int v6;
VOID *v7;
v4 = NumberOfPages;
if( NumberOfPages )
{
v6 = -805306366;
if( NewCacheAttribute != MiWriteCombined )
v6 = -1073741824;
do
{
v7 = MiMapPageInHyperSpaceWorker(PageFrameIndex, 0i64, v6);
KeInvalidateRangeAllCachesNoIpi(v7, 0x1000ui64);
MiUnmapPageInHyperSpaceWorker(v7, 0x11u, 0x80000000ui64);
++PageFrameIndex;
--v4;
}
while( v4 );
}
if( NewCacheAttribute == MiNotMapped )
MiFlushHyperSpace();
}Referenced by:
MiChangePageAttribute
MiChangePageAttributeBatch
MiChangePageAttributeContiguous
MiFlushCacheRange
MiInitializeCacheFlushing