Let us set up two devices with five channels each (the code is not complete).
Begin
BusNo0 := 1; BusNo1 := 1;
BusNo2 := 3; BusNo3 := 3; BusNo4 := 3;
BusNo5 := 1; BusNo6 := 1; BusNo7 := 1; BusNo8 := 1; BusNo9 := 1;
canIoCtl(MyHnd0, canIOCTL_CONNECT_TO_VIRTUAL_BUS, @BusNo0, 4);
canIoCtl(MyHnd1, canIOCTL_CONNECT_TO_VIRTUAL_BUS, @BusNo1, 4);
canIoCtl(MyHnd2, canIOCTL_CONNECT_TO_VIRTUAL_BUS, @BusNo2, 4);
canIoCtl(MyHnd3, canIOCTL_CONNECT_TO_VIRTUAL_BUS, @BusNo3, 4);
canIoCtl(MyHnd4, canIOCTL_CONNECT_TO_VIRTUAL_BUS, @BusNo4, 4);
canIoCtl(MyHnd5, canIOCTL_CONNECT_TO_VIRTUAL_BUS, @BusNo5, 4);
canIoCtl(MyHnd6, canIOCTL_CONNECT_TO_VIRTUAL_BUS, @BusNo6, 4);
canIoCtl(MyHnd7, canIOCTL_CONNECT_TO_VIRTUAL_BUS, @BusNo7, 4);
canIoCtl(MyHnd8, canIOCTL_CONNECT_TO_VIRTUAL_BUS, @BusNo8, 4);
canIoCtl(MyHnd9, canIOCTL_CONNECT_TO_VIRTUAL_BUS, @BusNo9, 4);
End;
Virtual Device 0
CH0 and CH1 can communicate on VB1 (Virtual Bus 1).
CH2,CH3 and CH4 can communicate on VB3 (Virtual Bus 3).
Virtual Device 1
CH5-Ch9 can communicate on VB1.
But CH0 and CH1 can not communicate with CH5-CH9, even if they seems to be on the same bus, because they are on different Virtual Devices. Each Virtual device creates a private set of Virtual Buses.