Хотел ведь написать, что scatter-gather использовать не будем, но подумал, зачем усложнять....
scatter-gather использовать не будем, нельзя!
Боролся с этой же проблемой под линуксом, там победил, перекомпилив ядро линукса с определенными опциями.
http://electronix.ru/forum/index.php?showtopic=133258Но сейчас нужно перейти под виндоус.
Вот в WinDriver Release Notes Version 11.4.0 пункт есть:
PCI on Windows: Added support for preallocating bidirectional contiguous DMA buffers (DMA_TO_FROM_DEVICE) using INF-file configuration.
То есть с помощью драйвера производится преаллокация буфера.
Точно также в линуксе пришлось делать преаллокацию буфера.
Думаю, что новая версия может помочь, вот бы кто подтвердил.