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