HalpIommuJoinDmaDomain
NTSTATUS __stdcall HalpIommuJoinDmaDomain(INT64 *a1, _LONGLONG a2){
__int64 v2;
INT64 v4;
int v5;
NTSTATUS result;
_LARGE_INTEGER *v7;
int v8;
int v9;
INT64 v10;
__int64 v11;
_LARGE_INTEGER *v12;
v9 = 0;
v2 = *(_QWORD *)&a2;
v11 = 0i64;
v12 = 0i64;
if( byte_140C49B2C )
{
v4 = a1[3];
v12 = 0i64;
v9 = 0;
v11 = 0i64;
v10 = v4;
LODWORD(v12) = *(_DWORD *)(*(_QWORD *)&a2 + 32i64);
BYTE4(v12) = *(_BYTE *)(*(_QWORD *)&a2 + 40i64);
v8 = 4;
return((__int64(__fastcall *)(int *, _LARGE_INTEGER **))qword_140C4A2B8)(&v8, &v12);
}
else
{
result = HalpIommuGetHardwareDomain(a2, a1[1], 1, 1, &v12);
if( result < 0 )
return result;
v7 = v12;
v5 = HalpIommuAttachDeviceDomain(a1[1], *a1, (INT64)&v12[4]);
if( v5 < 0 )
HalpIommuDereferenceHardwareDomain(v2, (INT64 *)v7);
}
return v5;
}Referenced by:
HalJoinDmaDomain
HalpIommuUnblockDevice
IommuDomainAttachDevice