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