MiDereferenceControlAreaFile
void __fastcall MiDereferenceControlAreaFile(__int64 a1, unsigned __int64 a2){
signed __int64 v2;
signed __int64 v3;
_m_prefetchw((const void *)(a1 + 64));
v2 = *(_QWORD *)(a1 + 64);
if( (a2 ^ v2) >= 0xF )
{
LABEL_4:
ObDereferenceObjectDeferDelete((PVOID)a2);
}
else
{
while( 1 )
{
v3 = v2;
v2 = _InterlockedCompareExchange64((volatile signed __int64 *)(a1 + 64), v2 + 1, v2);
if( v3 == v2 )
break;
if( (a2 ^ v2) >= 0xF )
goto LABEL_4;
}
}
}Referenced by:
MiAllocateFileExtents
MiAllowImageMap
MiCompleteRestrictedImageFault
MiCreateSectionCommon
MiDeleteCachedSubsection
MiDeprioritizeVad
MiDriverLoadSucceeded
MiFillMapFileInfo
MiFlushSectionInternal
MiGatherMappedPages
MiLoadUserSymbols
MiLogRelocationFaults
MiMakeSystemCachePteValid
MiMapImageForEnclaveUse
MiMapImageInSystemSpace
MiParseComAndCetHeaders
MiParseImageLoadConfig
MiUnmapVad
MiWriteComplete
MmExtendSection
MmFlushSection
MmFlushVirtualMemory
MmGetFileNameForSection
MmIsFileMapped
MmLoadSystemImageEx
MmSectionToSectionObjectPointers
NtAreMappedFilesTheSame