HalpIommuFlushDmaDomain
int __fastcall HalpIommuFlushDmaDomain(_QWORD *a1, INT64 a2){
void **v2;
unsigned __int8 v4;
unsigned __int8 CurrentIrql;
_QWORD *i;
void *retaddr;
INT64 v9;
v2 = &retaddr;
v9 = a2;
v4 = 0;
CurrentIrql = KeGetCurrentIrql();
if( CurrentIrql != 15 )
{
LODWORD(v2) = KeAcquireSpinLockRaiseToDpc(a1 + 2);
v4 = (unsigned __int8)v2;
}
for( i = (_QWORD *)*a1; i != a1; i = (_QWORD *)*i )
LODWORD(v2) = HalpIommuFlushDomainTB(i[3], (INT64)(i + 4), 1ui64, (INT64)&v9);
if( CurrentIrql != 15 )
{
KxReleaseSpinLock(a1 + 2);
LODWORD(v2) = v4;
__writecr8(v4);
}
return(int)v2;
}Referenced by:
HalpIommuDomainUnmapLogicalRange
IommuMapIdentityRange
IommuUnmapIdentityRange