HalpDmaFlushContiguousTransferV3
void __fastcall HalpDmaFlushContiguousTransferV3(
__int64 a1,
__int64 a2,
__int64 a3,
__int64 a4,
unsigned int a5,
char a6,
char a7,
_QWORD *a8){
__int64 v12;
unsigned __int64 v13;
__int64 v14;
if( (unsigned int)HalpDmaNextContiguousPiece(a1, a2, 0i64, a4, a6, a5) != a5 || *(_BYTE *)(a3 + 64) )
{
if( !a6 )
HalpDmaSyncMapBuffers(a1, a2, a4, (_QWORD *)a3, a5, 0, 0, a7);
if( a8 )
{
v13 = ((a4 & 0xFFF) + (unsigned __int64)a5 + 4095) >> 12;
if( (_DWORD)v13 )
{
v14 = (unsigned int)v13;
do
{
a3 = *(_QWORD *)(a3 + 8);
--v14;
}
while( v14 );
}
*a8 = a3;
}
}
else
{
if( !a6 && !*(_BYTE *)(a1 + 437) )
HalpDmaFlushBuffer(v12, a2, a4, a5, 0, a7);
if( a8 )
*a8 = a3;
}
}Referenced by:
HalFlushAdapterBuffersEx
IoFlushAdapterBuffersV3