CcReferenceFileOffset
VOID __stdcall CcReferenceFileOffset(_SHARED_CACHE_MAP *SharedCacheMap, _LARGE_INTEGER FileOffset){
unsigned int Flags;
__int64 v5;
_BYTE *v6;
VACB_LEVEL_ALLOCATION_LIST VacbLevels;
if( SharedCacheMap->SectionSize.QuadPart > 0x2000000 )
{
*(&VacbLevels.VacbLevelsAllocated + 1) = 0;
Flags = SharedCacheMap->Flags;
VacbLevels.VacbLevelWithBcbListHeads = 0i64;
VacbLevels.VacbLevelList.Blink = (_LIST_ENTRY *)&VacbLevels;
v5 = Flags >> 9;
VacbLevels.VacbLevelList.Flink = (_LIST_ENTRY *)&VacbLevels;
LOBYTE(v5) = v5 & 1;
VacbLevels.VacbLevelsAllocated = 0;
if( !(unsigned __int8)CcAllocateVacbLevels((unsigned int)(CcMaxVacbLevelsSeen - 1), v5, &VacbLevels) )
RtlRaiseStatus(-1073741670);
CcAcquireBcbLockAndVacbLock(1i64, (FAST_MUTEX *)SharedCacheMap);
SetVacb(SharedCacheMap, FileOffset, (_VACB *)0xFFFFFFFFFFFFFFFFi64, &VacbLevels);
CcReleaseBcbLockAndVacbLock(1i64, (struct FAST_MUTEX *)SharedCacheMap);
CcFreeUnusedVacbLevels(&VacbLevels, v6);
}
}Referenced by:
CcPinFileData