PiDqConvertQueryFlagsToString

INT64 __stdcall PiDqConvertQueryFlagsToString(
        UINT64 QueryFlags,
        WCHAR *QueryFlagsString,
        UINT64 QueryFlagsStringSize,
        UINT64 *RequiredSize){
  unsigned int v4; 
  WCHAR *v6; 
  int v7; 
  INT64 result; 
  unsigned int v9; 
  UINT64 v10; 
  UINT64 dwFlags; 
  size_t cbDest; 
  NTSTRSAFE_PWSTR ppszDestEnd; 
  v4 = QueryFlagsStringSize;
  v6 = QueryFlagsString;
  v7 = QueryFlags;
  result = 0i64;
  if( (QueryFlags & 0xFFFFFFF8) != 0 )
    return 3221225485i64;
  v9 = 2;
  if( (unsigned int)QueryFlagsStringSize >= 2 )
    *QueryFlagsString = 0;
  ppszDestEnd = QueryFlagsString;
  v10 = (unsigned int)QueryFlagsStringSize;
  cbDest = (unsigned int)QueryFlagsStringSize;
  if( (QueryFlags & 1) != 0 )
  {
    v7 = QueryFlags & 0xFFFFFFFE;
    v9 = 54;
    if( (unsigned int)QueryFlagsStringSize >= 0x36 )
    {
      LODWORD(dwFlags) = 1024;
      result = RtlStringCbCopyExW(
                 v6,
                 (unsigned int)QueryFlagsStringSize,
                 (WCHAR *)L"DevQueryFlagUpdateResults ",
                 &ppszDestEnd,
                 &cbDest,
                 dwFlags);
      if( (int)result < 0 )
        return result;
      v6 = ppszDestEnd;
      v10 = cbDest;
    }
  }
  if( (v7 & 2) != 0 )
  {
    v7 &= ~2u;
    v9 += 52;
    if( v9 <= v4 )
    {
      LODWORD(dwFlags) = 1024;
      result = RtlStringCbCopyExW(v6, v10, (WCHAR *)L"DevQueryFlagAllProperties ", &ppszDestEnd, &cbDest, dwFlags);
      if( (int)result < 0 )
        return result;
      v6 = ppszDestEnd;
      v10 = cbDest;
    }
  }
  if( (v7 & 4) != 0 )
  {
    v7 &= ~4u;
    v9 += 42;
    if( v9 <= v4 )
    {
      LODWORD(dwFlags) = 1024;
      result = RtlStringCbCopyExW(v6, v10, (WCHAR *)L"DevQueryFlagLocalize ", &ppszDestEnd, &cbDest, dwFlags);
      if( (int)result < 0 )
        return result;
      v6 = ppszDestEnd;
      v10 = cbDest;
    }
  }
  if( !v7
    || (v9 += 24, v9 > v4)
    || (LODWORD(dwFlags) = 1024,
        result = RtlStringCbCopyExW(v6, v10, (WCHAR *)L"", &ppszDestEnd, &cbDest, dwFlags),
        (int)result >= 0) )
  {
    if( RequiredSize )
      *(_DWORD *)RequiredSize = v9;
    if( v9 < v4 )
      return 3221225507i64;
  }
  return result;
}

Referenced by:

PiDqIrpQueryCreate