PnpBootPhaseComplete

INT64 __fastcall PnpBootPhaseComplete(){
  int v0; 
  WORK_QUEUE_ITEM *PoolWithTag; 
  v0 = PiPnpRtlInit(2ui64);
  if( v0 >= 0 )
  {
    PnpBootMode = 0;
    if( PnpSetupOOBEInProgress
      && (int)ExSubscribeWnfStateChange(
                &PnpSetupWnfSubscription,
                (INT64 *)&WNF_DEP_OOBE_COMPLETE,
                1i64,
                0i64,
                (INT64)PipUpdateSetupOobeCompleteWnfCallback,
                0i64) < 0 )
    {
      PnpSetupOOBEInProgress = 0;
    }
    v0 = PiDmaGuardInitialize(2i64);
    if( v0 >= 0 )
    {
      PnpRequestDeviceAction(*((_DEVICE_OBJECT **)IopRootDeviceNode + 4), ClearProblem, 0, 0x27ui64, 0i64, 0i64);
      v0 = PpDevCfgProcessDevices();
      if( v0 >= 0 )
      {
        PoolWithTag = (WORK_QUEUE_ITEM *)ExAllocatePoolWithTag(NonPagedPoolNx, 0x20ui64, 0x6E697050ui64);
        if( PoolWithTag )
        {
          PoolWithTag->List.Flink = 0i64;
          PoolWithTag->WorkerRoutine = PipUpdateDeviceProducts;
          PoolWithTag->Parameter = PoolWithTag;
          ExQueueWorkItem(PoolWithTag, NormalWorkQueue);
        }
        else
        {
          return(unsigned int)-1073741670;
        }
      }
    }
  }
  return(unsigned int)v0;
}

Referenced by:

CmCompleteRegistryInitialization