MiReferenceAweHandle
INT64 __stdcall MiReferenceAweHandle(HANDLE Handle, INT64 a2){
KPROCESSOR_MODE v2;
PVOID *v3;
PVOID *v4;
_QWORD *v5;
KPROCESSOR_MODE v6;
INT64 result;
_CONTROL_AREA *v9;
void *v10;
unsigned int v11;
PVOID Object;
PVOID v13;
__int64 v14;
*v3 = 0i64;
v4 = v3;
v5 = (_QWORD *)v14;
v6 = v2;
v13 = 0i64;
Object = 0i64;
*(_QWORD *)v14 = 0i64;
if( Handle == (HANDLE)-1i64 )
return 0i64;
if( ObReferenceObjectByHandleWithTag(Handle, a2, MmSectionObjectType, v2, 0x68506D4Du, &Object, 0i64) < 0 )
{
LODWORD(result) = ObReferenceObjectByHandleWithTag(
Handle,
8u,
(POBJECT_TYPE)PsProcessType,
v6,
0x68506D4Du,
&v13,
0i64);
if( (int)result >= 0 )
*v4 = v13;
}
else
{
v9 = MiSectionControlArea((_SECTION *)Object);
if( MiAweControlArea((INT64)v9) )
{
*v5 = v10;
return v11;
}
else
{
ObfDereferenceObjectWithTag(v10, 0x68506D4Dui64);
return 3221225480i64;
}
}
return result;
}Referenced by:
MiAllocateUserPhysicalPages
MiCreateUserPhysicalView
NtFreeUserPhysicalPages