CmGetInterfaceClassMappedProperty
NTSTATUS __stdcall CmGetInterfaceClassMappedProperty(
HPNPCTX *hPnpCtx,
const WCHAR *ClassGuid,
VOID *ObjectBaseKey,
const WCHAR *PropertyLocaleName,
const _DEVPROPKEY *PropertyKey,
UINT64 *PropertyType,
UINT8 *PropertyBuffer,
UINT64 BufferSize,
UINT64 *PropertySize){
NTSTATUS InterfaceClassMappedPropertyFromRegValue;
DEVPROPKEY **v13;
DEVPROPKEY *v14;
__int64 v15;
DEVPROPKEY **v17;
int v18;
DEVPROPKEY *v19;
__int64 v20;
UINT64 v21;
InterfaceClassMappedPropertyFromRegValue = -1073741802;
*(_DWORD *)PropertySize = 0;
if( !PropertyLocaleName )
{
v13 = &off_140983758;
while( 1 )
{
v14 = *v13;
if( *v13 && PropertyKey->pid == v14->pid )
{
v15 = *(_QWORD *)&PropertyKey->fmtid.Data1 - *(_QWORD *)&v14->fmtid.Data1;
if( *(_QWORD *)&PropertyKey->fmtid.Data1 == *(_QWORD *)&v14->fmtid.Data1 )
v15 = *(_QWORD *)PropertyKey->fmtid.Data4 - *(_QWORD *)v14->fmtid.Data4;
if( !v15 )
break;
}
LODWORD(PropertyLocaleName) = (_DWORD)PropertyLocaleName + 1;
v13 += 2;
if( (_DWORD)PropertyLocaleName )
goto LABEL_11;
}
LODWORD(v21) = BufferSize;
InterfaceClassMappedPropertyFromRegValue = CmGetInterfaceClassMappedPropertyFromRegValue(
hPnpCtx,
(WCHAR *)ClassGuid,
ObjectBaseKey,
(_DEVPROPKEY *)PropertyKey,
PropertyType,
PropertyBuffer,
v21,
PropertySize);
if( InterfaceClassMappedPropertyFromRegValue != -1073741802 )
return InterfaceClassMappedPropertyFromRegValue;
LABEL_11:
v17 = &off_140983808;
v18 = 0;
while( 1 )
{
v19 = *v17;
if( PropertyKey->pid == (*v17)->pid )
{
v20 = *(_QWORD *)&PropertyKey->fmtid.Data1 - *(_QWORD *)&v19->fmtid.Data1;
if( *(_QWORD *)&PropertyKey->fmtid.Data1 == *(_QWORD *)&v19->fmtid.Data1 )
v20 = *(_QWORD *)PropertyKey->fmtid.Data4 - *(_QWORD *)v19->fmtid.Data4;
if( !v20 )
break;
}
++v18;
v17 += 2;
if( v18 )
return InterfaceClassMappedPropertyFromRegValue;
}
LODWORD(v21) = BufferSize;
return CmGetInterfaceClassMappedPropertyFromComposite(
hPnpCtx,
(WCHAR *)ClassGuid,
ObjectBaseKey,
(_DEVPROPKEY *)PropertyKey,
PropertyType,
PropertyBuffer,
v21,
PropertySize);
}
return InterfaceClassMappedPropertyFromRegValue;
}Referenced by:
PnpDispatchInterfaceClass