IoFlushAdapterBuffersV3
char __fastcall IoFlushAdapterBuffersV3(__int64 a1, __int64 a2, __int64 a3, __int64 a4, unsigned int a5, char a6){
bool v10;
DMA_OPERATIONS *v11;
if( a5 )
{
if( *(_DWORD *)(a1 + 512) == 2 )
{
v10 = *(_BYTE *)(a3 + 64) == 0;
v11 = *(DMA_OPERATIONS **)(a3 + 24);
*(_QWORD *)(a3 + 40) = v11;
if( v10 )
{
HalpDmaFreeLa((PDMA_ADAPTER)a1, v11);
*(_QWORD *)(a3 + 32) = 0i64;
}
}
if( !*(_BYTE *)(a1 + 433) )
HalpDmaControllerFlushChannel(*(_QWORD *)(a1 + 360), *(_DWORD *)(a1 + 372));
if( *(_BYTE *)(a1 + 432) )
{
if( a3 )
*(_QWORD *)(a3 + 56) = a3;
if( *(_BYTE *)(a1 + 434) )
HalpDmaFlushScatterTransferV3(a1, a2, a3, a4, a5, a6, 0, 0i64);
else
HalpDmaFlushContiguousTransferV3(a1, a2, a3, a4, a5, a6, 0, 0i64);
}
}
return 1;
}Referenced by:
IoFlushAdapterBuffers