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