MiDereferenceControlAreaFile
VOID __stdcall MiDereferenceControlAreaFile(_CONTROL_AREA *ControlArea, _FILE_OBJECT *FileObject){
signed __int64 Object;
signed __int64 v3;
_m_prefetchw(&ControlArea->FilePointer);
Object = (signed __int64)ControlArea->FilePointer.Object;
if( ((unsigned __int64)FileObject ^ Object) >= 0xF )
{
LABEL_4:
ObDereferenceObjectDeferDelete((UINT64)FileObject);
}
else
{
while( 1 )
{
v3 = Object;
Object = _InterlockedCompareExchange64((volatile signed __int64 *)&ControlArea->FilePointer, Object + 1, Object);
if( v3 == Object )
break;
if( ((unsigned __int64)FileObject ^ Object) >= 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