PiDevCfgParsePropertyKeyName
VOID __fastcall PiDevCfgParsePropertyKeyName(
_UNICODE_STRING *PropertyKeyName,
_DEVPROPKEY *PropertyKey,
UINT64 *PropertyType){
bool v4;
unsigned __int16 MaximumLength;
WORD *v8;
__int64 v9;
WORD *v10;
__int64 v11;
_UNICODE_STRING v12;
__int16 pszDest[12];
v4 = PropertyKeyName->Length < 0x50u;
*(_DWORD *)(&v12.MaximumLength + 1) = 0;
if( !v4 )
{
v12.Buffer = PropertyKeyName->Buffer;
MaximumLength = PropertyKeyName->MaximumLength;
v12.Length = 76;
v12.MaximumLength = MaximumLength;
if( RtlGUIDFromString(&v12, &PropertyKey->fmtid) >= 0 && PropertyKeyName->Buffer[38] == 44 )
{
v8 = PropertyKeyName->Buffer + 39;
v9 = (PropertyKeyName->Length >> 1) - 39;
if( !v8[v9] )
{
v10 = wcschr(v8, 44);
v11 = (__int64)v10;
if( v10 )
{
v9 = v10 - v8;
v11 = (__int64)(v10 + 1);
}
if( RtlStringCchCopyNW((WCHAR *)pszDest, 0xBui64, v8, (unsigned int)v9) >= 0
&& PnpStringToDwordValue((__int64)pszDest, &PropertyKey->pid)
&& PropertyType )
{
*(_DWORD *)PropertyType = 1;
if( v11 )
PnpStringToDwordValue(v11, PropertyType);
}
}
}
}
}Referenced by:
PiDevCfgCopyDeviceKey