Кто писал дрова для USB? Подскажите плиз (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено SM 23 июня 2005 г. 16:40

Ситуация такая. Я делаю URB для bulk trensfer, генерю IoBuildDeviceIoControlRequest, и отправляю с ним этот URB следующему драйверу. Он мне, как и положено, отдает STATUS_PENDING. Я жду окончания через KeWaitForSingleObject с таймаутом. Но вот незадача, у девайса данных нету. Одни NAKи. Оно так и висит там в ожидании до таймаута. Я ловлю STATUS_TIMEOUT и делаю тому самому IRP IoCancelIrp, наивно думая, что операцию отменят... И опять в KeWaitForSingleObject в ожидание того, пока его cancel'нут. А оно не cancel'ицца!!! Так и висит в ожидании. Что тут не так? Как отменить операцию чтения bulk, если она больше не нужна?

P.S.
Если второе ожидание убираю - получаю синий экран, но это логично. Irp остался в недрах лишний.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru