MiZeroSectionObjectPointer
_MI_CONTROL_AREA_WAIT_BLOCK *__stdcall MiZeroSectionObjectPointer(
_FILE_OBJECT *File,
_CONTROL_AREA *ControlArea,
UINT64 AllocationAttributes){
_SECTION_OBJECT_POINTERS *SectionObjectPointer;
unsigned __int8 v5;
_MI_CONTROL_AREA_WAIT_BLOCK *WaitList;
unsigned __int64 v7;
SectionObjectPointer = File->SectionObjectPointer;
if( (AllocationAttributes & 0x1000000) != 0 )
SectionObjectPointer = (_SECTION_OBJECT_POINTERS *)((char *)SectionObjectPointer + 16);
KeAbPostRelease(SectionObjectPointer);
v5 = ExAcquireSpinLockExclusive((INT64 *)&ControlArea->ControlAreaLock);
WaitList = ControlArea->WaitList;
ControlArea->WaitList = 0i64;
v7 = v5;
ExAcquireSpinLockExclusiveAtDpcLevel(&SpinLock);
SectionObjectPointer->DataSectionObject = 0i64;
ExReleaseSpinLockExclusiveFromDpcLevel(&SpinLock);
ControlArea->u.LongFlags |= 0xC0000u;
ExReleaseSpinLockExclusiveFromDpcLevel((INT64 *)&ControlArea->ControlAreaLock);
__writecr8(v7);
return WaitList;
}Referenced by:
MiCreateImageOrDataSection