NtExtendSection
NTSTATUS __stdcall NtExtendSection(VOID *SectionHandle, _LARGE_INTEGER *NewSectionSize){
char PreviousMode;
NTSTATUS result;
__int64 v6;
PVOID SectionToExtend;
NTSTATUS v8;
UINT64 NewSectionSizea;
NewSectionSizea = 0i64;
PreviousMode = KeGetCurrentThread()->PreviousMode;
if( PreviousMode )
{
if( ((unsigned __int8)NewSectionSize & 3) != 0 )
ExRaiseDatatypeMisalignment();
v6 = 0x7FFFFFFF0000i64;
if( (unsigned __int64)NewSectionSize < 0x7FFFFFFF0000i64 )
v6 = (__int64)NewSectionSize;
*(_BYTE *)v6 = *(_BYTE *)v6;
*(_BYTE *)(v6 + 7) = *(_BYTE *)(v6 + 7);
NewSectionSizea = NewSectionSize->QuadPart;
}
else
{
NewSectionSizea = NewSectionSize->QuadPart;
}
SectionToExtend = 0i64;
result = ObReferenceObjectByHandle(SectionHandle, 0x10ui64, MmSectionObjectType, PreviousMode, &SectionToExtend, 0i64);
if( result >= 0 )
{
v8 = MmExtendSection(SectionToExtend, &NewSectionSizea, 0i64);
HalPutDmaAdapter((PADAPTER_OBJECT)SectionToExtend);
NewSectionSize->QuadPart = NewSectionSizea;
return v8;
}
return result;
}Referenced by:
No references.