CmGetInstallerClassMappedPropertyFromComposite
__int64 __fastcall CmGetInstallerClassMappedPropertyFromComposite(
__int64 a1,
const WCHAR *a2,
char *a3,
__int64 a4,
int *a5,
unsigned __int64 a6,
unsigned int a7,
unsigned int *a8){
int *v8;
unsigned int *v9;
unsigned __int64 v11;
unsigned int v14;
unsigned int v15;
unsigned int v16;
__int64 v17;
__int64 v19;
__int64 v20;
unsigned int v21;
__int64 v22;
unsigned int ObjectProperty;
unsigned int v24;
ULONG v26;
v8 = a5;
v9 = a8;
v11 = a6;
v26 = 0;
*a5 = 0;
v14 = 0;
*v9 = 0;
if( v11 )
{
v15 = a7;
v11 &= -(__int64)(a7 != 0);
}
else
{
v15 = 0;
}
v16 = *(_DWORD *)(a4 + 16);
if( v16 < 2 )
return(unsigned int)-1073741264;
if( v16 == 10 )
{
v22 = *(_QWORD *)a4 - *(_QWORD *)&DEVPKEY_NAME.fmtid.Data1;
if( *(_QWORD *)a4 == *(_QWORD *)&DEVPKEY_NAME.fmtid.Data1 )
v22 = *(_QWORD *)(a4 + 8) - *(_QWORD *)DEVPKEY_NAME.fmtid.Data4;
if( !v22 )
{
ObjectProperty = PnpGetObjectProperty(
a1,
(__int64)a2,
2i64,
(__int64)a3,
0i64,
(__int64)&DEVPKEY_DeviceClass_Name,
v8,
v11,
v15,
&v26,
0);
v14 = ObjectProperty;
switch( ObjectProperty )
{
case 0u:
goto LABEL_30;
case 0xC0000023:
goto LABEL_30;
case 0xC0000225:
v24 = PnpGetObjectProperty(
a1,
(__int64)a2,
2i64,
(__int64)a3,
0i64,
(__int64)&DEVPKEY_DeviceClass_ClassName,
v8,
v11,
v15,
&v26,
0);
v14 = v24;
if( !v24 || v24 == -1073741789 )
goto LABEL_30;
break;
}
}
}
else
{
if( v16 != 4 )
{
if( v16 == 20 )
{
v19 = *(_QWORD *)a4 - DEVPKEY_DeviceClass_CompoundUpperFilters;
if( *(_QWORD *)a4 == DEVPKEY_DeviceClass_CompoundUpperFilters )
v19 = *(_QWORD *)(a4 + 8) - 0x4B88D2ECD9DBB9A9i64;
if( !v19 )
return(unsigned int)CmGetInstallerClassCompoundFilters(a1, a2, a3, a4, v8, (wchar_t *)v11, v15, v9);
}
if( v16 == 21 )
{
v17 = *(_QWORD *)a4 - DEVPKEY_DeviceClass_CompoundLowerFilters;
if( *(_QWORD *)a4 == DEVPKEY_DeviceClass_CompoundLowerFilters )
v17 = *(_QWORD *)(a4 + 8) - 0x4B88D2ECD9DBB9A9i64;
if( !v17 )
return(unsigned int)CmGetInstallerClassCompoundFilters(a1, a2, a3, a4, v8, (wchar_t *)v11, v15, v9);
}
return v14;
}
v20 = *(_QWORD *)a4 - DEVPKEY_DeviceClass_Configurable;
if( *(_QWORD *)a4 == DEVPKEY_DeviceClass_Configurable )
v20 = *(_QWORD *)(a4 + 8) - 0x4B88D2ECD9DBB9A9i64;
if( !v20 )
{
v21 = PnpGetObjectProperty(
a1,
(__int64)a2,
2i64,
(__int64)a3,
0i64,
(__int64)DEVPKEY_DeviceClass_ConfigurableOverride,
v8,
v11,
v15,
&v26,
0);
v14 = v21;
if( v21 && v21 != -1073741789 )
{
if( v21 == -1073741275 )
{
v14 = PnpGetObjectProperty(
a1,
(__int64)a2,
2i64,
(__int64)a3,
0i64,
(__int64)&DEVPKEY_DeviceClass_ClassInstaller,
v8,
0i64,
0,
&v26,
0);
if( v14 == -1073741275 )
v14 = PnpGetObjectProperty(
a1,
(__int64)a2,
2i64,
(__int64)a3,
0i64,
(__int64)&DEVPKEY_DeviceClass_ClassCoInstallers,
v8,
0i64,
0,
&v26,
0);
if( (v14 & 0x80000000) == 0 || v14 == -1073741275 || v14 == -1073741789 )
{
*v9 = 1;
*v8 = 17;
if( v15 < *v9 )
{
return(unsigned int)-1073741789;
}
else
{
*(_BYTE *)v11 = (v14 != -1073741275) - 1;
return 0;
}
}
}
return v14;
}
LABEL_30:
*v9 = v26;
}
}
return v14;
}Referenced by:
CmGetInstallerClassMappedProperty
CmGetInstallerClassMappedPropertyKeys