PipProcessRestartPhase1

NTSTATUS __stdcall PipProcessRestartPhase1(_DEVICE_NODE *DeviceNode, UINT64 Synchronous, UINT64 OperationsPending){
  int v3; 
  int v4; 
  NTSTATUS started; 
  INT64 v7; 

  v3 = OperationsPending;
  v4 = Synchronous;
  if( (byte_140C130BB & 0x10) != 0 )
    McTemplateK0dz_EtwWriteTransfer(
      (__int64)DeviceNode,
      (const _EVENT_DESCRIPTOR *)KMPnPEvt_ProcessDeviceRestart_Start,
      OperationsPending,
      1,
      DeviceNode->InstancePath.Buffer);
  if( v3 && (DeviceNode->Flags & 0x400000) != 0 )
  {
    started = -1073741267;
  }
  else
  {
    started = PnpStartDeviceNode(DeviceNode, 1, v4);
    if( (DeviceNode->Flags & 0x1000000) != 0 )
    {
      PnpUnlockMountableDevice((__int64)DeviceNode->PhysicalDeviceObject, v7, OperationsPending);
      PipClearDevNodeFlags(DeviceNode, 0x1000000ui64);
    }
  }
  if( (byte_140C130BB & 0x10) != 0 )
    McTemplateK0dz_EtwWriteTransfer(
      (__int64)DeviceNode,
      (const _EVENT_DESCRIPTOR *)KMPnPEvt_ProcessDeviceRestart_Stop,
      OperationsPending,
      1,
      DeviceNode->InstancePath.Buffer);
  return started;
}

Referenced by:

PipProcessDevNodeTree