CmGetInstallerClassMappedProperty
__int64 __fastcall CmGetInstallerClassMappedProperty(
__int64 a1,
const WCHAR *a2,
void *a3,
__int64 a4,
__int64 a5,
int *a6,
wchar_t *a7,
unsigned int a8,
unsigned int *a9){
unsigned int InstallerClassMappedPropertyFromRegProp;
DEVPROPKEY **v13;
DEVPROPKEY *v14;
DEVPROPKEY **v15;
unsigned int v16;
DEVPROPKEY *v17;
DEVPROPKEY **v18;
unsigned int v19;
DEVPROPKEY *v20;
__int64 v21;
__int64 v23;
__int64 v24;
__int64 v25;
InstallerClassMappedPropertyFromRegProp = -1073741802;
*a9 = 0;
if( !a4 )
{
v13 = &CmClassRegPropMap;
while( 1 )
{
v14 = *v13;
if( *v13 && *(_DWORD *)(a5 + 16) == v14->pid )
{
v23 = *(_QWORD *)a5 - *(_QWORD *)&v14->fmtid.Data1;
if( *(_QWORD *)a5 == *(_QWORD *)&v14->fmtid.Data1 )
v23 = *(_QWORD *)(a5 + 8) - *(_QWORD *)v14->fmtid.Data4;
if( !v23 )
break;
}
LODWORD(a4) = a4 + 1;
v13 += 3;
if( (unsigned int)a4 >= 9 )
goto LABEL_6;
}
InstallerClassMappedPropertyFromRegProp = CmGetInstallerClassMappedPropertyFromRegProp(
a1,
(__int64)a2,
(__int64)a3,
a5,
a6,
a7,
a8,
a9);
if( InstallerClassMappedPropertyFromRegProp != -1073741802 )
return InstallerClassMappedPropertyFromRegProp;
LABEL_6:
v15 = &off_140985790;
v16 = 0;
while( 1 )
{
v17 = *v15;
if( *(_DWORD *)(a5 + 16) == (*v15)->pid )
{
v24 = *(_QWORD *)a5 - *(_QWORD *)&v17->fmtid.Data1;
if( *(_QWORD *)a5 == *(_QWORD *)&v17->fmtid.Data1 )
v24 = *(_QWORD *)(a5 + 8) - *(_QWORD *)v17->fmtid.Data4;
if( !v24 )
break;
}
++v16;
v15 += 4;
if( v16 >= 0xD )
goto LABEL_9;
}
InstallerClassMappedPropertyFromRegProp = CmGetInstallerClassMappedPropertyFromRegValue(
a1,
a2,
a3,
a5,
a6,
(unsigned __int64)a7,
a8,
a9);
if( InstallerClassMappedPropertyFromRegProp != -1073741802 )
return InstallerClassMappedPropertyFromRegProp;
LABEL_9:
if( *(_DWORD *)(a5 + 16) != 2 )
goto LABEL_10;
v25 = *(_QWORD *)a5 - *(_QWORD *)&DEVPKEY_DeviceClass_ClassCoInstallers.fmtid.Data1;
if( *(_QWORD *)a5 == *(_QWORD *)&DEVPKEY_DeviceClass_ClassCoInstallers.fmtid.Data1 )
v25 = *(_QWORD *)(a5 + 8) - *(_QWORD *)DEVPKEY_DeviceClass_ClassCoInstallers.fmtid.Data4;
if( v25
|| (InstallerClassMappedPropertyFromRegProp = CmGetInstallerClassMappedPropertyFromCoInstallers(
a1,
a2,
(__int64)v15,
a6,
(__int64)a7,
a8,
(__int64)a9),
InstallerClassMappedPropertyFromRegProp == -1073741802) )
{
LABEL_10:
v18 = &off_140983F60;
v19 = 0;
while( 1 )
{
v20 = *v18;
if( *(_DWORD *)(a5 + 16) == (*v18)->pid )
{
v21 = *(_QWORD *)a5 - *(_QWORD *)&v20->fmtid.Data1;
if( *(_QWORD *)a5 == *(_QWORD *)&v20->fmtid.Data1 )
v21 = *(_QWORD *)(a5 + 8) - *(_QWORD *)v20->fmtid.Data4;
if( !v21 )
break;
}
++v19;
v18 += 2;
if( v19 >= 4 )
return InstallerClassMappedPropertyFromRegProp;
}
return(unsigned int)CmGetInstallerClassMappedPropertyFromComposite(
a1,
a2,
(char *)a3,
a5,
a6,
(unsigned __int64)a7,
a8,
a9);
}
}
return InstallerClassMappedPropertyFromRegProp;
}Referenced by:
PnpDispatchInstallerClass