HalpDmaControllerFlushChannel
__int64 __fastcall HalpDmaControllerFlushChannel(__int64 a1, unsigned int a2){
ULONG_PTR BugCheckParameter4;
unsigned __int8 CurrentIrql;
char v5;
UINT64 *v6;
__int64 v7;
__int64 result;
BugCheckParameter4 = a2;
CurrentIrql = KeGetCurrentIrql();
v5 = 0;
if( CurrentIrql == 15 )
{
v6 = (UINT64 *)(a1 + 168);
}
else
{
CurrentIrql = KeGetCurrentIrql();
__writecr8(*(unsigned __int8 *)(a1 + 176));
v6 = (UINT64 *)(a1 + 168);
KxAcquireSpinLock((UINT64 *)(a1 + 168));
v5 = 1;
}
v7 = *(_QWORD *)(a1 + 56) + 160 * BugCheckParameter4;
if( !*(_BYTE *)(v7 + 6) && *(_QWORD *)(v7 + 8) )
KeBugCheckEx(0xE6u, 0x23ui64, 0i64, *(unsigned int *)(a1 + 32), BugCheckParameter4);
result = (*(__int64(__fastcall **)(_QWORD, _QWORD))(a1 + 120))(
*(_QWORD *)(a1 + 64),
(unsigned int)BugCheckParameter4);
*(_QWORD *)(v7 + 8) = 0i64;
*(_QWORD *)(v7 + 16) = 0i64;
*(_BYTE *)(v7 + 6) = 0;
if( v5 )
{
KxReleaseSpinLock(v6);
result = CurrentIrql;
__writecr8(CurrentIrql);
}
return result;
}Referenced by:
HalFlushAdapterBuffersEx
IoFlushAdapterBuffersV3