Ochkarik, в моем случае используется буфер MDL.
UsbBuildInterruptOrBulkTransferRequest(
urb,
sizeof(struct _URB_BULK_OR_INTERRUPT_TRANSFER),
PipeInformation->PipeHandle,
NULL,
mdl,
transferLength,
USBD_TRANSFER_DIRECTION_IN | USBD_SHORT_TRANSFER_OK,
NULL
);
То есть, по этому запросу данные из конечной точки перепичываются в mdl. А уже оттуда по запросу IRP_MJ_READ (с помощью функции A5M2ReadDispatch()) данные переписываются в буфер моего приложения. И вот тут мне непонятно как происходит обращение к MDL (я его не нашел)?
Таким образом, я не знаю как прикрутить свой буфер к этим функциям((
Я думал так, нужно самостоятельно в свой буфер собирать данные из буфера MDL, а затем, при его наполнении, разрешать функции A5M2ReadDispatch() обращаться к моему буферу. Поэтому меня и интересовал пример использования кольцевого буфера именно в драйвере)