Цитата(Vic1 @ Nov 3 2005, 14:01)
Что же Вы здесь спрашиваете, когда Вам могут быстрее и профессиональней помочь в разделе форума "Операционные системы" (замечено, что некоторые участники из этого раздела в другие разделы никогда и не заходят).
По двум причинам. Во-первых, мне нужно, чтобы мое устройство работало не с кем-либо, а именно с Windows XP. Поэтому общие рассуждения подобных форумов на тему: "Да поставь ты ОС РВ и не мучайся!", мне не подходят. А во-вторых, давно замечено, что профессионалы-практики дадут фору любому теоретику-системщику при решении конкретной задачи :-) Например, задачи освоения шины USB. Посему именно к профессионалам-практикам я и обратился :-)
Цитата(Vic1 @ Nov 3 2005, 14:01)
А на приемной стороне буферизировать тоже невозможно? (типа - непрерывный прием с использованием низкоуровневых системных функций)
На приемной стороне я как раз и буферирую. И очень даже с большим запасом (8, 16 пакетов и более). Тем не менее имею изредка пропуск единичных пакетов.
Однако, я немножко продвинулся в данном вопросе. Для этого я тщательно причесал пример "Streamer" из USB Developer's uStudio. Этот пример использует технику OVERLAPPED I/O, про все функции которого фирма Cypress не ленится десяток раз в разных местах мануала написать:
Цитата
You will usually want to use the synchronous XferData method rather than the asynchronous BeginDataXfer/WaitForXfer/FinishDataXfer approach.
Тем не менее я не послушался их мудрого совета и применил этот подход. Прием данных стал уверенным! Да еще я присвоил считывающему треду приоритет THREAD_PRIORITY_TIME_CRITICAL. Еще немножко погоняю приложение, посмотрю, на самом-ли деле проблема исчезла.