VOID UsbBuildGetInterruptOrBulkTransferRequest( IN OUT PURB Urb, IN USHORT Length, IN USBD_PIPE_HANDLE PipeHandle, IN PVOID Tr...
全文
回复(8) 2005-01-18 10:39 来自版块 - USB驱动开发
表情
xiaorain我知道为什么了,因为我再配置管道的时候,把MaximumTransferSize写成了64,结果导致总线驱动认为我一次最多传64的长度。xp好像不在意这个值,但是2000就会检测这个值,如果我一次性和总线要超过64长度的数据,就会显示参数错。 现在改成了4096就没有问题了。 ...(2005-01-20 10:01)
AllenZh就是为了提高速度,我一次要求从总线读取4096数据,以前分成64字节来读的速度太慢了。 按理说在2000和XP下不该有这么大的差别啊。 你使用的是什么型号的USB芯片,具体硬件方面参考说明文档进行设计。 我以前写的驱动在app中一次读1M都没有问题,当然那个是USB2.0...(2005-01-19 19:56)
xiaorain在配置管道的时候,我把MaxTransferSize设置成64。这个元素好像可以随便设置,windows默认应该是4096。他与每次传输64字节是什么关系?? 是总线驱动分成64字节的包从总线上读取数据,而功能驱动只要传输缓冲区长度(这个长度可以自己设置了,比如MaxTra...(2005-01-19 18:20)
xiaorain就是为了提高速度,我一次要求从总线读取4096数据,以前分成64字节来读的速度太慢了。 按理说在2000和XP下不该有这么大的差别啊。 (2005-01-19 15:46)
AllenZh如果我指定buffer的长度是64,在XP和2000下都没有问题,可是指定成4096的话,XP的照样没有问题,2000的就不行了,显示参数错误。 那就使用64好了,你的每次只串64字节的包,效率可能会比较低(2005-01-19 14:24)
xiaorain如果我指定buffer的长度是64,在XP和2000下都没有问题,可是指定成4096的话,XP的照样没有问题,2000的就不行了,显示参数错误。(2005-01-19 13:54)
xiaorain谢谢shentu大哥!! 我的2000是sp4的,我设置flags也是usbd_short_transfer_ok|usbd_transfer-direction_In, 这样的结果是: 在xp下可以一次收回来4096个字节(我在bushound上看的), 而在2000下...(2005-01-19 13:52)
Shentu实际上你把TransferBufferLength设成4096是没有任何效果的,因为每次收到数据的时候肯定小于或者等于64(一个IN包的大小),一般我们都会在设置TransferFlags的时候把少收数据不报错的那位给置上,所以一个IRP也就只能收到=<64个字节了。。。 ...(2005-01-18 17:47)

返回顶部