CmAddPanelDevice
NTSTATUS __fastcall CmAddPanelDevice(VOID *ProcessHandle, VOID *BaseAddress, INT64 a3){
__int64(__fastcall *v6)(VOID *, VOID *, __int64);
int v7;
NTSTATUS v8;
NTSTATUS v9;
int v10;
__int64 v12[12];
memset(v12, 0i64, 0x58u);
v6 = (__int64(__fastcall *)(VOID *, VOID *, __int64))*((_QWORD *)ProcessHandle + 63);
v12[2] = (__int64)BaseAddress;
v12[3] = a3;
if( v6 )
{
v7 = v6(ProcessHandle, BaseAddress, 6i64);
if( v7 == -1073741822 )
{
v6 = 0i64;
}
else
{
if( v7 == -1073741536 )
return v12[0];
if( v7 )
return -1073741595;
}
}
v8 = CmAddPanelDeviceWorker(ProcessHandle, BaseAddress, (const WCHAR *)v12[3], &v12[4]);
v9 = v8;
if( v6 )
{
LODWORD(v12[0]) = v8;
v10 = v6(ProcessHandle, BaseAddress, 6i64);
if( v10 != -1073741822 )
{
if( v10 != -1073741536 )
{
if( !v10 )
goto LABEL_8;
return -1073741595;
}
return v12[0];
}
}
LABEL_8:
if( !LOBYTE(v12[4]) )
PnpObjectRaiseDevicesChangeEvent((__int64)ProcessHandle, (__int64)BaseAddress, 6i64);
return v9;
}Referenced by:
CmUpdateDevicePanel