CmMoveBaseContainer

__int64 __fastcall CmMoveBaseContainer(__int64 a1, const WCHAR *a2, const WCHAR *a3, const WCHAR *a4){
  __int64 v4; 
  int DevicesInBaseContainerList; 
  PVOID v9; 
  int v10; 
  const WCHAR *i; 
  __int64 v12; 
  PVOID P; 
  v4 = PiPnpRtlCtx;
  P = 0i64;
  DevicesInBaseContainerList = CmGetDevicesInBaseContainerList(PiPnpRtlCtx, a3, a2, &P);
  v9 = P;
  v10 = DevicesInBaseContainerList;
  if( DevicesInBaseContainerList >= 0 )
  {
    for( i = (const WCHAR *)P; *i; i += v12 + 1 )
    {
      v10 = CmRemoveDeviceFromContainer(v4, a3, (__int64)a2, (__int64)i);
      if( v10 < 0 )
        break;
      v10 = CmAddDeviceToContainer(v4, a4, a2, i, 0i64);
      if( v10 < 0 )
        break;
      v12 = -1i64;
      do
        ++v12;
      while( i[v12] );
    }
  }
  if( v9 )
    ExFreePoolWithTag(v9, 0);
  return(unsigned int)v10;
}

Referenced by:

PiDcHandleCustomDeviceEvent