Одно решение, которое я нашел, которое, я думаю, могло бы работать (при условии дальнейшего тестирования в Windows):
Настройте перечисление устройства так, как это работает для Mac:
- Сделать это классом «Связи» (класс = 2, подкласс = 0, протокол = 0), а не составное устройство.
- Удалить IAD.
Устройстводолжен «просто работать» на Mac и недавнем Linux, в этой конфигурации.(Для Linux, тестируя с Ubuntu, я обнаружил, что это работает с ядром Ubuntu Linux 2.6.35-28 или новее. В более ранних ядрах работал только первый последовательный порт.)
Затем для Windows изменитеINF-файл для устройства, чтобы явно загрузить драйвер составного устройства usbccgp.sys
.Я новичок в Windows INF-файлах, но вот соответствующие фрагменты из того, что я мог до сих пор выяснить:
[CCGPDriverInstall.NT]
Include=usb.inf
Needs=Composite.Dev.NT
AddReg=CCGPDriverInstall.AddReg
[CCGPDriverInstall.NT.Services]
Include=usb.inf
Needs=Composite.Dev.NT.Services
[CCGPDriverInstall.AddReg]
HKR,,EnumeratorClass, 0x00000001,02,00,00
...
[DeviceList]
%DESCRIPTION_DEVICE%=CCGPDriverInstall, USB\VID_FFFF&PID_0001
%DESCRIPTION_AT%=DriverInstall, USB\VID_FFFF&PID_0001&MI_00
%DESCRIPTION_MENU%=DriverInstall, USB\VID_FFFF&PID_0001&MI_02
[DeviceList.NTamd64]
%DESCRIPTION_DEVICE%=CCGPDriverInstall, USB\VID_FFFF&PID_0001
%DESCRIPTION_AT%=DriverInstall, USB\VID_FFFF&PID_0001&MI_00
%DESCRIPTION_MENU%=DriverInstall, USB\VID_FFFF&PID_0001&MI_02
[DeviceList.NTx86...1]
%DESCRIPTION_DEVICE%=CCGPDriverInstall, USB\VID_FFFF&PID_0001
%DESCRIPTION_AT%=DriverInstall, USB\VID_FFFF&PID_0001&MI_00
%DESCRIPTION_MENU%=DriverInstall, USB\VID_FFFF&PID_0001&MI_02
С файлом INFпри явной загрузке драйвера usbccgp.sys
оба 32-битных USB-порта работали у меня на 32-битной Windows XP SP3.
Пока я провел только ограниченное тестирование, поэтому мне было бы интересно узнать, насколько хорошо это работаетили нет, для других.