MmUpdateSectionIoAttribution
VOID __fastcall MmUpdateSectionIoAttribution(
_SECTION_OBJECT_POINTERS *SectionObjectPointers,
VOID *IoAttributionContext){
void *v3;
__int64 v4;
__int64 v5;
__int64 v6;
KIRQL v7;
v7 = 0;
v3 = 0i64;
v4 = MiLockSectionControlArea(SectionObjectPointers, 1, &v7);
v5 = v4;
if( v4 )
{
if( IoAttributionContext != (VOID *)(8i64 * *(_QWORD *)(v4 + 120)) )
{
if( _InterlockedIncrement64((volatile signed __int64 *)IoAttributionContext + 4) <= 1 )
__fastfail(0xEu);
v6 = *(_QWORD *)(v4 + 120);
v3 = (void *)(8 * v6);
*(_QWORD *)(v5 + 120) = ((unsigned __int64)IoAttributionContext >> 3) | v6 & 0xE000000000000000ui64;
}
ExReleaseSpinLockExclusiveFromDpcLevel((INT64 *)(v5 + 72));
__writecr8(v7);
if( v3 )
IoDiskIoAttributionDereference(v3);
}
}Referenced by:
CcMapAndCopyInToCache