CcUpdateReadHistory

VOID __stdcall CcUpdateReadHistory(_FILE_OBJECT *FileObject, _LARGE_INTEGER *FileOffset, UINT64 Length){
  void *PrivateCacheMap; 
  _SHARED_CACHE_MAP *SharedCacheMap; 

  PrivateCacheMap = FileObject->PrivateCacheMap;
  SharedCacheMap = (_SHARED_CACHE_MAP *)FileObject->SectionObjectPointer->SharedCacheMap;
  _InterlockedExchange64((volatile __int64 *)PrivateCacheMap + 2, *((_QWORD *)PrivateCacheMap + 4));
  _InterlockedExchange64((volatile __int64 *)PrivateCacheMap + 3, *((_QWORD *)PrivateCacheMap + 5));
  _InterlockedExchange64((volatile __int64 *)PrivateCacheMap + 4, FileOffset->QuadPart);
  _InterlockedExchange64((volatile __int64 *)PrivateCacheMap + 5, FileOffset->QuadPart + (unsigned int)Length);
  if( (*((_DWORD *)SharedCacheMap + 38) & 0x200000) != 0
    && (unsigned int)((*((_DWORD *)PrivateCacheMap + 8) >> 12) - (*((_DWORD *)PrivateCacheMap + 6) >> 12)) > 1 )
  {
    CcUpdateSharedCacheMapFlag(SharedCacheMap, 0x200000ui64, 0);
  }
}

Referenced by:

CcAsyncReadPrefetch
CcMdlRead