MiMapImageInSystemProcess
NTSTATUS __stdcall MiMapImageInSystemProcess(
_CONTROL_AREA *ControlArea,
UINT64 MapFlags,
PVOID *CapturedBase,
UINT64 *CapturedViewSize){
__int64 v4;
_SECTION_INHERIT InheritDisposition;
UINT64 v8;
INT64 v9;
UINT64 UserReservationHighestAddress;
__int64 v11;
__int64 v13;
UINT64 *CapturedViewSizea;
_SECTION *Section;
INT64 result;
int v17;
INT64 v18;
INT64 v19;
char v20;
VOID *CapturedBasea;
v4 = *(_QWORD *)ControlArea;
InheritDisposition = (int)MapFlags;
*CapturedViewSize = _InterlockedCompareExchange64(
(volatile signed __int64 *)(*(_QWORD *)ControlArea + 24i64),
-1i64,
-1i64);
if( (unsigned __int64)_InterlockedCompareExchange64((volatile signed __int64 *)(v4 + 24), -1i64, -1i64) >= 0x100000000i64 )
return -1073741793;
v8 = *CapturedViewSize;
if( *CapturedViewSize > 0x7FFFFFFF0000i64 )
return -1073741793;
*CapturedBase = 0i64;
CapturedBasea = 0i64;
v9 = *((_QWORD *)KeGetCurrentThread() + 23);
memset((INT64)&result, 0i64);
UserReservationHighestAddress = MiGetUserReservationHighestAddress(v9, 0i64);
LODWORD(Section) = 1;
v20 = v11;
LODWORD(CapturedViewSizea) = 2;
v17 = 0x40000;
v19 = v9;
v18 = v9;
return MiMapViewOfImageSection(
ControlArea,
(_EPROCESS *)&result,
(_EPROCESS *)CapturedBase,
&CapturedBasea,
(_LARGE_INTEGER *)(v11 & v13),
CapturedViewSizea,
Section,
InheritDisposition,
result,
UserReservationHighestAddress,
0x10000ui64,
(v8 + 4095) & 0xFFFFFFFFFFFFF000ui64,
v8);
}Referenced by:
MiMapImageInSystemSpace