PiDevCfgRequestDriverConfigurations

__int64 __fastcall PiDevCfgRequestDriverConfigurations(__int64 a1, __int64 a2){
  int DriverConfiguration; 
  int appended; 
  INT64 *v6; 
  INT64 i; 
  INT64 v9; 
  INT64 a8; 
  INT64 a10; 
  INT64 a11; 
  struct _UNICODE_STRING UnicodeString; 
  *(_QWORD *)&UnicodeString.Length = 0i64;
  UnicodeString.Buffer = 0i64;
  DriverConfiguration = PiDevCfgQueryDriverConfiguration(a2);
  appended = DriverConfiguration;
  if( (int)(DriverConfiguration + 0x80000000) < 0 || DriverConfiguration == -1073740653 )
  {
    appended = PiDevCfgAppendMultiSz(&UnicodeString, (_UNICODE_STRING *)(a2 + 392), 0i64, 1u);
    if( appended >= 0 )
    {
      v6 = (INT64 *)(a2 + 208);
      for( i = *v6; (INT64 *)i != v6; i = *(_QWORD *)i )
      {
        appended = PiDevCfgQueryDriverConfiguration(i);
        if( ((appended + 0x80000000) & 0x80000000) == 0 && appended != -1073740653 )
          goto LABEL_13;
        appended = PiDevCfgAppendMultiSz(&UnicodeString, (_UNICODE_STRING *)(i + 392), 0i64, 1u);
        if( appended < 0 )
          goto LABEL_13;
      }
      if( UnicodeString.Buffer )
      {
        LODWORD(a11) = 0;
        LODWORD(a10) = UnicodeString.Length;
        LODWORD(a8) = 8210;
        appended = PiDevCfgSetObjectProperty(
                     PiPnpRtlCtx,
                     (_DWORD *)a1,
                     *(WCHAR **)(a1 + 8),
                     1ui64,
                     *(_QWORD *)(a1 + 16),
                     v9,
                     (INT64)&DEVPKEY_Device_RequestConfigurationIds,
                     a8,
                     UnicodeString.Buffer,
                     a10,
                     a11);
      }
      else
      {
        appended = -1073740653;
      }
    }
  }
LABEL_13:
  RtlFreeAnsiString(&UnicodeString);
  return(unsigned int)appended;
}

Referenced by:

PiDevCfgProcessDevice