CmGetDeviceInterfaceMappedProperty
NTSTATUS __stdcall CmGetDeviceInterfaceMappedProperty(
HPNPCTX *hPnpCtx,
const WCHAR *DeviceInterfaceName,
VOID *ObjectBaseKey,
const WCHAR *PropertyLocaleName,
const _DEVPROPKEY *PropertyKey,
UINT64 *PropertyType,
UINT8 *PropertyBuffer,
UINT64 BufferSize,
UINT64 *PropertySize){
NTSTATUS DeviceInterfaceMappedPropertyFromRegValue;
DEVPROPKEY **v13;
DEVPROPKEY *v14;
DEVPROPKEY **v15;
unsigned int v16;
DEVPROPKEY *v17;
__int64 v18;
__int64 v20;
UINT64 v21;
DeviceInterfaceMappedPropertyFromRegValue = -1073741802;
*(_DWORD *)PropertySize = 0;
if( !PropertyLocaleName )
{
v13 = &off_140983A68;
while( 1 )
{
v14 = *v13;
if( *v13 && PropertyKey->pid == v14->pid )
{
v20 = *(_QWORD *)&PropertyKey->fmtid.Data1 - *(_QWORD *)&v14->fmtid.Data1;
if( *(_QWORD *)&PropertyKey->fmtid.Data1 == *(_QWORD *)&v14->fmtid.Data1 )
v20 = *(_QWORD *)PropertyKey->fmtid.Data4 - *(_QWORD *)v14->fmtid.Data4;
if( !v20 )
break;
}
LODWORD(PropertyLocaleName) = (_DWORD)PropertyLocaleName + 1;
v13 += 2;
if( (unsigned int)PropertyLocaleName >= 3 )
goto LABEL_6;
}
LODWORD(v21) = BufferSize;
DeviceInterfaceMappedPropertyFromRegValue = CmGetDeviceInterfaceMappedPropertyFromRegValue(
hPnpCtx,
DeviceInterfaceName,
ObjectBaseKey,
PropertyKey,
PropertyType,
PropertyBuffer,
v21,
PropertySize);
if( DeviceInterfaceMappedPropertyFromRegValue != -1073741802 )
return DeviceInterfaceMappedPropertyFromRegValue;
LABEL_6:
v15 = &off_140983FA0;
v16 = 0;
while( 1 )
{
v17 = *v15;
if( PropertyKey->pid == (*v15)->pid )
{
v18 = *(_QWORD *)&PropertyKey->fmtid.Data1 - *(_QWORD *)&v17->fmtid.Data1;
if( *(_QWORD *)&PropertyKey->fmtid.Data1 == *(_QWORD *)&v17->fmtid.Data1 )
v18 = *(_QWORD *)PropertyKey->fmtid.Data4 - *(_QWORD *)v17->fmtid.Data4;
if( !v18 )
break;
}
++v16;
v15 += 2;
if( v16 >= 4 )
return DeviceInterfaceMappedPropertyFromRegValue;
}
LODWORD(v21) = BufferSize;
return CmGetDeviceInterfaceMappedPropertyFromComposite(
hPnpCtx,
(WCHAR *)DeviceInterfaceName,
ObjectBaseKey,
(_DEVPROPKEY *)PropertyKey,
PropertyType,
PropertyBuffer,
v21,
PropertySize);
}
return DeviceInterfaceMappedPropertyFromRegValue;
}Referenced by:
PnpDispatchDeviceInterface