А так ли необходимо сразу именно драйвер писать? Ведь:
Цитата(Sevens @ Sep 17 2006, 16:19)

2. Хочется читать с нескольких Endpoint'ов.
Никаких проблем с использованием сайпрессовской USB Developer's uStudio.
Сначала узнаёшь, сколько имеется девайсов:
num = USBDevice->DeviceCount();
Затем сканируешь девайсы (или открываешь прямо нужный девайс) и "выхватываешь" требуемые ендпойнты:
int epts = USBDevice->EndPointCount();
CCyUSBEndPoint *endpt;
for (int i=1; i<epts; i++) { // Skip endpoint 0, which we know is the Control Endpoint
endpt = USBDevice->EndPoints[i];
if (endpt->Attributes == 2) { // Bulk
if (endpt->Address == MY_STREAM1_ENDPOINT_ADDRESS) {
MyStream1InEndpt = endpt;
}
if (endpt->Address == MY_STREAM2_ENDPOINT_ADDRESS) {
MyStream2InEndpt = endpt;
}
}
}
Все это превосходно рассматривается в примерах (примеров, правда, не много, но достаточно).
Цитата(Sevens @ Sep 17 2006, 19:54)

На счёт чтения DDK - согласен, просто требуется это не для серьёзной работы.
Изучение DDK, да еще и не имея опыта - тяжелое занятие. Тем более, что "не для серьёзной работы" :-) Тогда уж сам Бог велел применять сайпрессовскую USB Developer's uStudio. Уж удобнее их API трудновато что-нибудь найти.
Цитата(Sevens @ Sep 17 2006, 19:54)

Под ассинхронным, то что после вызова BuildBulkTransfeк продолжение метода драйвера продолжается сразу, не зависимо от того, было ли произведено чтение или нет.
Я использую асинхронное чтение на скорости до 8 МБ/сек из одной эндпойнты и двунаправленный обмен управляющей информацией по двум другим ендпойнтам. Работает как часы (швейцарские). Использую функции BeginDataXfer / WaitForXfer / FinishDataXfer для быстрой передачи и простейшие:
USBDevice->BulkOutEndPt->XferData
USBDevice->BulkInEndPt->XferData
для канала управления. При этом быстрая передача данных идет в отдельном треде, чтобы поток данных ни в коем случае не прерывался и чтобы блоки данных не пропадали.
P.S. Правда, неясно, о какой микросхеме идет речь... Я говорил о сайпрессовской микросхеме.
P.P.S. Если речь идет о желании научиться писать именно драйверы для USB, то тогда я вылез не по делу... :-)