PopFxAcpiRegisterDevice
NTSTATUS __stdcall PopFxAcpiRegisterDevice(
const _UNICODE_STRING *AcpiDeviceName,
_POP_FX_PLUGIN *AcpiPlugin,
_PEP_ACPI_REGISTER_DEVICE *RegisterData,
_POP_FX_DEVICE **OutputFxDevice,
PEPHANDLE__ **OutputPepHandle){
NTSTATUS DeviceCommon;
_POP_FX_DEVICE *v9;
NTSTATUS v10;
__int128 v11;
__int64 v12;
_POP_FX_DEVICE *v13;
_POP_FX_DEVICE *FxDevice;
__int128 Data;
__int128 v17;
__int64 v18;
FxDevice = 0i64;
v18 = 0i64;
Data = 0i64;
v17 = 0i64;
DeviceCommon = PopFxCreateDeviceCommon(
(const VOID **)AcpiDeviceName,
(POP_FX_PLUGIN *)AcpiPlugin,
RegisterData,
4ui64,
(__m128 **)&FxDevice);
v9 = FxDevice;
v10 = DeviceCommon;
if( DeviceCommon < 0 )
goto LABEL_7;
v11 = *((_OWORD *)RegisterData + 1);
Data = *(_OWORD *)RegisterData;
v12 = *((_QWORD *)RegisterData + 4);
*((_QWORD *)&v17 + 1) = *((_QWORD *)&v11 + 1);
*(_QWORD *)&v17 = FxDevice;
v18 = v12;
PopPluginAcpiNotificationStrict(AcpiPlugin, 3ui64, &Data);
if( !*((_QWORD *)&v17 + 1) )
goto LABEL_5;
PopFxInsertAcpiDevice(v13);
if( *((_QWORD *)&v17 + 1) )
{
*((_QWORD *)v9 + 10) = AcpiPlugin;
*((_QWORD *)v9 + 11) = *((_QWORD *)&v17 + 1);
*OutputPepHandle = (PEPHANDLE__ *)*((_QWORD *)&v17 + 1);
*OutputFxDevice = v9;
}
else
{
LABEL_5:
v10 = -1073741823;
*OutputFxDevice = 0i64;
*OutputPepHandle = 0i64;
}
if( v10 < 0 )
{
LABEL_7:
if( v9 )
{
*((_QWORD *)v9 + 10) = 0i64;
*((_QWORD *)v9 + 11) = 0i64;
PopFxDestroyDeviceCommon(v9);
}
}
return v10;
}Referenced by:
PopFxAcpiDispatchNotification