PiDqQueryGetNextIoctlInfo
INT64 __fastcall PiDqQueryGetNextIoctlInfo(INT64 a1, UINT64 a2, UINT64 a3, _DWORD *a4){
INT64 result;
int v5;
unsigned int v6;
unsigned int v7;
if( !*(_QWORD *)(a1 + 184) && *(_QWORD *)(a1 + 192) == a1 + 192 && (*(_DWORD *)(a1 + 216) & 0x20) != 0 )
{
result = *(_QWORD *)(a1 + 24);
if( (*(_DWORD *)(result + 40) & 1) != 0 )
{
*a4 = 4653064;
a4[1] = 16;
}
else
{
*(_QWORD *)a4 = 0i64;
}
}
else
{
*a4 = 4653063;
if( (*(_DWORD *)(a1 + 216) & 0x20) != 0 )
{
v5 = *(_DWORD *)(a1 + 208);
if( *(_QWORD *)(a1 + 184) )
++v5;
}
else
{
v5 = 4;
}
if( (_DWORD)a3 )
v6 = a3 * v5 + 16;
else
v6 = v5 << 10;
v7 = 0x10000;
a4[1] = v6;
if( v6 > 0x10000 )
a4[1] = 0x10000;
else
v7 = v6;
if( v7 < (unsigned int)a3 )
{
a4[1] = a3;
v7 = a3;
}
result = (unsigned int)a4[1];
if( v7 < (unsigned int)a2 )
result = (unsigned int)a2;
a4[1] = result;
}
return result;
}Referenced by:
PiDqIrpQueryCreate
PiDqIrpQueryGetResult
PiDqQueryCompletePendedIrp