CmUpdateDevicePanelInterface
NTSTATUS __stdcall CmUpdateDevicePanelInterface(HPNPCTX *hPnpCtx, WCHAR *ObjectName, VOID *ObjectBaseKey){
INT64 v3;
VOID **v7;
NTSTATUS DevicePanelPldProperty;
int ObjectProperty;
VOID **PoolWithTag;
INT64 v12;
int v13;
INT64 a9;
_DWORD a7[3];
INT64 a6;
UINT8 PropertyBuffer[16];
v3 = 0i64;
a6 = 0i64;
memset(a7, 0, sizeof(a7));
v12 = 0i64;
v7 = 0i64;
*(_OWORD *)PropertyBuffer = 0i64;
a9 = 0i64;
v13 = 0;
DevicePanelPldProperty = CmQueryDevicePanelPldProperty(
hPnpCtx,
ObjectName,
3,
ObjectBaseKey,
(_DEVPROPKEY *)&DEVPKEY_Device_PhysicalDeviceLocation,
(INT64)&a6,
(INT64)a7,
(INT64)&a7[1],
(INT64)&a9 + 4);
ObjectProperty = DevicePanelPldProperty;
if( DevicePanelPldProperty == -1073741275 )
{
ObjectProperty = 0;
}
else
{
if( DevicePanelPldProperty < 0 )
goto LABEL_13;
v3 = *(_QWORD *)&a7[1];
if( *(_QWORD *)&a7[1] )
{
PoolWithTag = ExAllocatePoolWithTag(1ui64, 0x190ui64, 1380994640i64);
v7 = PoolWithTag;
if( !PoolWithTag )
{
ObjectProperty = -1073741801;
goto LABEL_13;
}
ObjectProperty = PnpGetObjectProperty(
(ULONG)hPnpCtx,
(INT64)ObjectName,
3i64,
(INT64)ObjectBaseKey,
0i64,
(INT64)&DEVPKEY_Device_InstanceId,
(INT64)&a9,
(INT64)PoolWithTag);
if( ObjectProperty >= 0 )
ObjectProperty = -1073741823;
goto LABEL_11;
}
}
if( PnpGetObjectProperty(
(ULONG)hPnpCtx,
(INT64)ObjectName,
3i64,
(INT64)ObjectBaseKey,
0i64,
(INT64)&DEVPKEY_Device_PanelId,
(INT64)&a9,
v3) != -1073741789 )
goto LABEL_13;
PnpSetObjectProperty(
(INT64)hPnpCtx,
(INT64)ObjectName,
3u,
0i64,
0i64,
(__int64)&DEVPKEY_Device_PanelId,
0,
0i64,
0,
0);
PnpSetObjectProperty(
(INT64)hPnpCtx,
(INT64)ObjectName,
3u,
0i64,
0i64,
(__int64)&DEVPKEY_Device_PanelGroup,
0,
0i64,
0,
0);
PnpSetObjectProperty(
(INT64)hPnpCtx,
(INT64)ObjectName,
3u,
0i64,
0i64,
(__int64)&DEVPKEY_Device_PanelSide,
0,
0i64,
0,
0);
LABEL_11:
if( v7 )
ExFreePoolWithTag(v7, 0);
LABEL_13:
if( a6 )
ExFreePoolWithTag((PVOID)a6, 0);
return ObjectProperty;
}Referenced by:
PiPnpRtlSetObjectProperty