Re: Очереди WDF и расфасовка сообщений разных типов по ним (
От: Геннадий Майко США  
Дата: 19.04.11 10:25
Оценка:
Здравствуйте, Imian,

I>пишу первый драйвер для PCI-железки в среде WDF, драйвер выполняет всё, что от него требуется, но есть одна ситуация, наилучшее решение которой я пока не придумал и хочу спросить совета у бывалых.


I>если имеется постоянный приём железкой из канала данных, возврат из ReadFile происходит при завершении операции копирования данных из платы в ОЗУ ПК, а если данных в линии нет, запрос не будет завершён до тех пор, пока не придут данные. и в этом случае я лишаюсь возможности считывать счётчики из драйвера: ioctl запрос заблокирован, пока не закончится read. ioctl-запросы, относящиеся только к драйверу, необходимо обрабатывать даже при незавершённых запросах к самой железке. я пробовал делать очередь parallel, пробовал делать две sequential очереди, в одну указывал обработчик EvtDeviceControl, в другую EvtIoRead и EvtIoWrite. но WDF не настолько умная и мои неправильные просьбы не понимает: при наличии незавершённого запроса read в случае одной параллельной очереди всё равно приостанавливается выполнение ioctl-запросов. а (видимо неверная) попытка объяснить, что я хочу две очереди, приводит к тому, что запросы read/write вообще отвергаются.

--
Проверьте, что при открытии device в функции CreateFile() Вы установили флаг FILE_FLAG_OVERLAPPED.

C уважением,
Геннадий Майко.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.