PnpUpdateRebootRequiredReason

INT64 __fastcall PnpUpdateRebootRequiredReason(INT64 a1, INT64 a2, INT64 a3){
  unsigned int v3; 
  __int64 v6; 
  __int64 v8[2]; 
  int v9; 
  int v10; 
  ULONG v11; 
  char v12; 
  v10 = HIDWORD(a2);
  v3 = 0;
  v12 = 0;
  v11 = 0;
  v9 = 0;
  v8[0] = 0i64;
  if( (int)PnpGetObjectProperty(
              PiPnpRtlCtx,
              a1,
              1i64,
              0i64,
              0i64,
              (__int64)&DEVPKEY_Device_IsRebootRequired,
              &v9,
              (unsigned __int64)&v12,
              1,
              &v11,
              0) >= 0
    && v9 == 17
    && v11 == 1
    && v12 == -1
    && ((int)PnpGetObjectProperty(
               PiPnpRtlCtx,
               a1,
               1i64,
               0i64,
               0i64,
               (__int64)DEVPKEY_Device_RebootRequiredReason,
               &v9,
               (unsigned __int64)v8,
               8,
               &v11,
               0) < 0
     || v9 != 9
     || v11 != 8) )
  {
    v6 = 0i64;
  }
  else
  {
    v6 = v8[0];
  }
  v8[0] = a3 | v6;
  if( a3 | v6 )
    return(unsigned int)PnpSetObjectProperty(
                           PiPnpRtlCtx,
                           a1,
                           1u,
                           0i64,
                           0i64,
                           (__int64)DEVPKEY_Device_RebootRequiredReason,
                           9,
                           (__int64)v8,
                           8u,
                           0);
  else
    PnpSetObjectProperty(PiPnpRtlCtx, a1, 1u, 0i64, 0i64, (__int64)DEVPKEY_Device_RebootRequiredReason, 0, 0i64, 0, 0);
  return v3;
}

Referenced by:

PiDevCfgProcessDevice
PipProcessRestartPhase2
PipProcessStartPhase2
PnpReallocateResources