PiDqQueryValidateQueryData
__int64 __fastcall PiDqQueryValidateQueryData(__int64 a1){
unsigned int v2;
int v3;
__int64 v4;
unsigned int v5;
unsigned int v6;
const _DEVPROP_FILTER_EXPRESSION *v7;
UINT64 v8;
__int64 v9;
int v10;
__int64 v11;
v2 = -1073741811;
if( a1 )
{
if( PiDqGetPnpObjectType(*(_DEV_OBJECT_TYPE *)(a1 + 16)) )
{
v3 = *(_DWORD *)(a1 + 40);
if( (v3 & 2) == 0 || !*(_DWORD *)(a1 + 64) )
{
if( *(_DWORD *)(a1 + 20) == 1 )
{
if( !*(_QWORD *)(a1 + 24) )
return v2;
}
else if( *(_DWORD *)(a1 + 20) == 2 )
{
if( PnpValidateMultiSz(*(_QWORD *)(a1 + 32), *(unsigned int *)(a1 + 24)) < 0 )
return v2;
v3 = *(_DWORD *)(a1 + 40);
}
if( (v3 & 0xFFFFFFF8) != 0 )
return v2;
if( (v3 & 4) != 0 )
{
if( PnpValidateMultiSz(*(_QWORD *)(a1 + 56), *(unsigned int *)(a1 + 48)) < 0 )
return v2;
}
else if( *(_QWORD *)(a1 + 56) || *(_DWORD *)(a1 + 48) )
{
return v2;
}
v4 = *(_QWORD *)(a1 + 72);
if( v4 || !*(_DWORD *)(a1 + 64) )
{
v5 = *(_DWORD *)(a1 + 64);
if( v5 || !v4 )
{
v6 = 0;
if( v5 )
{
while( !*(_QWORD *)(32i64 * v6 + v4 + 24) )
{
if( ++v6 >= v5 )
goto LABEL_15;
}
}
else
{
LABEL_15:
v7 = *(const _DEVPROP_FILTER_EXPRESSION **)(a1 + 88);
if( v7 || !*(_DWORD *)(a1 + 80) )
{
v8 = *(unsigned int *)(a1 + 80);
if( ((_DWORD)v8 || !v7) && (!v7 || ValidFilter(v8, v7)) )
{
v9 = *(_QWORD *)(a1 + 104);
if( v9 || !*(_DWORD *)(a1 + 96) )
{
v10 = *(_DWORD *)(a1 + 96);
if( v10 || !v9 )
{
v11 = 0i64;
if( v10 )
{
while( (int)PnpValidatePropertyData(
*(VOID **)(*(_QWORD *)(a1 + 104) + 40 * v11 + 32),
*(unsigned int *)(*(_QWORD *)(a1 + 104) + 40 * v11 + 24),
*(_DWORD *)(*(_QWORD *)(a1 + 104) + 40 * v11 + 20)) >= 0 )
{
v11 = (unsigned int)(v11 + 1);
if( (unsigned int)v11 >= *(_DWORD *)(a1 + 96) )
return 0;
}
}
else
{
return 0;
}
}
}
}
}
}
}
}
}
}
}
return v2;
}Referenced by:
PiDqIrpQueryCreate