PipProcessRestartPhase2
__int64 __fastcall PipProcessRestartPhase2(__int64 a1, __int64 a2, __int64 a3){
int v4;
int v5;
INT64 v6;
if( (byte_140C130BB & 0x10) != 0 )
McTemplateK0dz_EtwWriteTransfer(a1, &KMPnPEvt_ProcessDeviceRestart_Start, a3, 2i64, *(const WCHAR **)(a1 + 48));
v4 = *(_DWORD *)(a1 + 392);
if( v4 >= 0 )
{
PipSetDevNodeState((_DEVICE_NODE *)a1, DeviceNodeStarted, (_PNP_DEVNODE_STATE *)a3);
if( (*(_DWORD *)(a1 + 704) & 0x20) != 0 )
{
PoFxIdleDevice(*(DEVICE_OBJECT **)(a1 + 32));
*(_DWORD *)(a1 + 704) &= ~0x20u;
}
PnpStartedDeviceNodeDependencyCheck(a1);
}
else
{
if( v4 == -1073741102 )
{
v5 = 14;
PnpUpdateRebootRequiredReason(*(_QWORD *)(a1 + 48), a2, 0x80000000i64);
}
else
{
v5 = 10;
}
PnpRequestDeviceRemoval(a1, 0, v5, v4);
if( *(_DWORD *)(a1 + 568) )
IoRequestDeviceEject(*(_DEVICE_OBJECT **)(a1 + 32));
}
if( (byte_140C130BB & 0x10) != 0 )
McTemplateK0dz_EtwWriteTransfer(
*(_QWORD *)(a1 + 48),
&KMPnPEvt_ProcessDeviceRestart_Stop,
v6,
2i64,
*(const WCHAR **)(a1 + 48));
return(unsigned int)v4;
}Referenced by:
PipProcessDevNodeTree