PnpCallAddDevice

__int64 __fastcall PnpCallAddDevice(__int64 a1, INT64 a2, INT64 *a3, INT64 a4){
  int v4; 
  int v8; 
  int v9; 
  VOID **v10; 
  __int64 v11; 
  __int64 v12; 
  unsigned int v13; 
  __int64 v14; 
  _DEVICE_OBJECT *v16; 
  VF_DEVOBJ_TYPE v17; 
  __int64 v18[4]; 
  _GROUP_AFFINITY PreviousAffinity; 

  v18[0] = 0i64;
  v4 = a4;
  PreviousAffinity = 0i64;
  if( (byte_140C130BB & 8) != 0 )
    McTemplateK0qhzr1z_EtwWriteTransfer(
      *(_WORD *)(a2 + 56) >> 1,
      a2,
      (INT64)a3,
      a4,
      *(_WORD *)(a2 + 56) >> 1,
      *(_QWORD *)(a2 + 64),
      *(const WCHAR **)(a1 + 48));
  v8 = PnpSetDeviceAffinityThread(*(_QWORD *)(a1 + 32), &PreviousAffinity);
  v18[1] = a1;
  v18[2] = a2;
  v9 = v8;
  v18[3] = (__int64)KeGetCurrentThread();
  v10 = PnpEnableWatchdog(4, (__int64)v18);
  v13 = PpvUtilCallAddDevice(
          *(_DEVICE_OBJECT **)(a1 + 32),
          (_DRIVER_OBJECT *)a2,
          a3,
          (_DRIVER_OBJECT *)(unsigned int)(v4 + 1),
          v16,
          v17);
  if( v10 )
    PnpDisableWatchdog((__int64)v10);
  if( v9 )
    KeRevertToUserGroupAffinityThread(&PreviousAffinity);
  if( (byte_140C130BB & 8) != 0 )
    McTemplateK0q_EtwWriteTransfer(v12, v11, v14, v13);
  return v13;
}

Referenced by:

PipCallDriverAddDevice