ValidFilter

NTSTATUS __stdcall ValidFilter(UINT64 FilterLength, const _DEVPROP_FILTER_EXPRESSION *Filter){
  unsigned int v3; 
  int v4; 
  const _DEVPROP_FILTER_EXPRESSION *i; 
  INT64 v7; 
  int v8[2]; 
  __int128 *v9; 
  __int128 v10[3]; 

  v8[1] = 0;
  LODWORD(v7) = 0;
  v8[0] = 1;
  v9 = v10;
  v3 = FilterLength;
  memset(v10, 0, sizeof(v10));
  if( FilterEval((INT64)GetPropertyFromPropArray, (INT64)v8, (unsigned int)FilterLength, (INT64)Filter, &v7) != -1073741811 )
  {
    v4 = 0;
    if( !v3 )
      return 1;
    for( i = Filter + 10;
          !*((_QWORD *)i - 1)
       && (unsigned int)PnpValidatePropertyData(*((VOID **)i + 1), *((unsigned int *)i + 1), *i) != 1;
          i += 14 )
    {
      if( ++v4 >= v3 )
        return 1;
    }
  }
  return 0;
}

Referenced by:

PiDqQueryValidateQueryData