SMKM_STORE::SmStMapPhysicalRegion
char *__fastcall SMKM_STORE::SmStMapPhysicalRegion(
__int64 a1,
unsigned int a2,
unsigned int a3,
__int64 a4,
char a5){
__int64 v5;
__int64 v6;
__int64 v7;
__int64 v8;
_MDL *v9;
char *MappedSystemVa;
UINT64 DontFail;
v5 = *(_QWORD *)(a1 + 6216);
v6 = a2;
v7 = a3;
v8 = *(_QWORD *)(v5 + 8i64 * a2);
v9 = (_MDL *)(v8 & 0xFFFFFFFFFFFFFFF8ui64);
if( (v8 & 3) != 0 )
{
MappedSystemVa = (char *)v9->MappedSystemVa;
}
else
{
LODWORD(DontFail) = a5 & 1;
MappedSystemVa = (char *)SmFpAllocate(
(_SM_FORWARD_PROGRESS_CTX *)(a1 + 6608),
SmFpResourceMapping,
KeGetCurrentThread(),
v9,
DontFail);
if( !MappedSystemVa )
return MappedSystemVa;
}
*(_QWORD *)(v5 + 8 * v6) |= ((a5 & 0x10) != 0) + 1i64;
MappedSystemVa += v7;
return MappedSystemVa;
}
Referenced by:
No references.