IommuDevicePowerChange
NTSTATUS __stdcall IommuDevicePowerChange(INT64 a1, INT64 a2, CHAR a3){
char v3;
unsigned __int8 CurrentIrql;
volatile __int64 *v5;
v3 = 0;
CurrentIrql = 0;
if( KeGetCurrentIrql() < 2u )
{
v3 = 1;
CurrentIrql = KeGetCurrentIrql();
__writecr8(2ui64);
}
v5 = (volatile __int64 *)(a2 + 48);
if( a3 )
{
(*(void(__fastcall **)(_QWORD, _QWORD, _QWORD))(*(_QWORD *)(a2 + 24) + 240i64))(
*(_QWORD *)(*(_QWORD *)(a2 + 24) + 16i64),
*(_QWORD *)(a2 + 40),
*(unsigned int *)(a2 + 56));
_InterlockedExchange64(v5, 0i64);
}
else
{
ExWaitForRundownProtectionRelease((_EX_RUNDOWN_REF *)(a2 + 48));
ExRundownCompleted((INT64 *)v5);
}
if( v3 )
__writecr8(CurrentIrql);
return 0;
}Referenced by:
No references.