HalpDmaAllocateAndPremapLa
NTSTATUS __stdcall HalpDmaAllocateAndPremapLa(INT64 a1, UINT64 a2, INT64 a3, UINT64 *a4){
INT64 v5;
unsigned int v7;
char v8;
int v9;
NTSTATUS result;
*a4 = -1i64;
v5 = *(_QWORD *)(a1 + 504);
v7 = a2;
v8 = a3;
v9 = HalpDomainLaAllocate(v5, (PDUMPWRITER_FILL_HEADERS *)(unsigned int)a2, a3, 0i64, 0i64, (INT64)a4);
if( v9 >= 0 )
{
result = HalpIommuDomainMapLogicalRange(*(_QWORD *)(v5 + 40), 0i64, 0i64, v7, *a4);
v9 = result;
if( result >= 0 )
return result;
HalpDomainLaDelete(v5, *a4);
*a4 = -1i64;
}
if( HalpDmaUseEmergencyLogicalAddressResources(a1, (_QWORD *)(a1 + 592), v8) )
return 0;
return v9;
}Referenced by:
HalpAllocateDmaResourcesInternal