PnpParseIndirectInfString
char __fastcall PnpParseIndirectInfString(const wchar_t *a1){
_WORD *v1;
__int16 v3;
__int64 v4;
__int64 i;
__int16 v6;
int v7;
__int64 v8;
__int64 v9;
__int16 v10;
__int64 v11;
unsigned __int64 pcchLength;
pcchLength = 0i64;
if( RtlUnalignedStringCchLengthW(a1, 0x7FFF, (_SIZE_T *)&pcchLength) < 0 || pcchLength < 5 || *v1 != 64 )
return 0;
v3 = v1[1];
LODWORD(v4) = 1;
while( v3 && v3 != 44 )
{
v4 = (unsigned int)(v4 + 1);
v3 = v1[v4];
}
if( v1[(unsigned int)v4] != 44 || v1[(unsigned int)(v4 + 1)] != 37 )
return 0;
for( i = (unsigned int)(v4 + 2); ; i = (unsigned int)(i + 1) )
{
v6 = v1[i];
if( !v6 || v6 == 59 )
break;
}
v7 = 0;
if( v1[i] == 59 )
v7 = i;
if( v7 )
{
v8 = (unsigned int)(v7 - 1);
}
else
{
if( pcchLength > 0xFFFFFFFF )
return 0;
v8 = (unsigned int)(pcchLength - 1);
}
if( v1[v8] != 37 )
return 0;
if( v7 )
{
v9 = (unsigned int)(v7 + 1);
v10 = v1[v9];
if( v10 )
{
v11 = (unsigned int)(v9 + 1);
do
{
if( v10 == 59 && v1[v11] == 40 && v1[(unsigned int)(pcchLength - 1)] == 41 )
break;
v9 = (unsigned int)(v9 + 1);
v11 = (unsigned int)(v11 + 1);
v10 = v1[v9];
}
while( v10 );
}
}
return 1;
}Referenced by:
CmGetDeviceMappedPropertyFromRegProp
CmGetInstallerClassMappedPropertyFromRegProp
PnpRegQueryValueIndirect