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