PnpQueryRebalance

INT64 __fastcall PnpQueryRebalance(
        _DEVICE_NODE *Subtree,
        _PNP_RESOURCE_REQUEST *RebalanceTable,
        UINT *RebalanceTableCount,
        _DEVICE_NODE **VetoNode,
        _PNP_DEVNODE_QUERY_REBALANCE_VETO_REASON *VetoReason,
        INT64 RebalanceDueToDynamicPartitioning){
  _DEVICE_NODE *v6; 
  int v7; 
  int Rebalance; 
  INT64 v14; 
  v6 = (_DEVICE_NODE *)*((_QWORD *)Subtree + 1);
  v7 = 0;
  if( !v6 )
    return(unsigned int)PnpQueryRebalanceWorker(
                           (ULONG_PTR)Subtree,
                           (__int64)RebalanceTable,
                           RebalanceTableCount,
                           (ULONG_PTR *)VetoNode,
                           (__int64)VetoReason,
                           RebalanceDueToDynamicPartitioning);
  do
  {
    LOBYTE(v14) = RebalanceDueToDynamicPartitioning;
    Rebalance = PnpQueryRebalance(v6, RebalanceTable, RebalanceTableCount, VetoNode, VetoReason, v14);
    v6 = *(_DEVICE_NODE **)v6;
    if( Rebalance < 0 )
      v7 = -1073741823;
  }
  while( v6 );
  if( v7 >= 0 )
    return(unsigned int)PnpQueryRebalanceWorker(
                           (ULONG_PTR)Subtree,
                           (__int64)RebalanceTable,
                           RebalanceTableCount,
                           (ULONG_PTR *)VetoNode,
                           (__int64)VetoReason,
                           RebalanceDueToDynamicPartitioning);
  return(unsigned int)v7;
}

Referenced by:

PnpFindRebalanceCandidates
PnpQueryRebalance