qinlicang
驱动牛犊
驱动牛犊
  • 注册日期2004-09-13
  • 最后登录2010-07-21
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望250点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2315回复:3

向U盘发送一个bulk urb, TransferBufferLength长度为512,可返回的数据长度确是525,请高手 帮忙

楼主#
更多 发布于:2010-01-20 17:22
hi,高手们,
我刚开始做usb驱动,现在遇到一个问题,我做了一个u盘的驱动,对该u盘调用iocontrol _URB_BULK_OR_INTERRUPT_TRANSFER时,有的urb数据,传入的TransferBufferLength长度为512,但实际返回的却是525字节的数据,这是为什么啊
Pegram
论坛版主
论坛版主
  • 注册日期2005-12-03
  • 最后登录2013-08-23
  • 粉丝13
  • 关注5
  • 积分1333分
  • 威望4717点
  • 贡献值1点
  • 好评度78点
  • 原创分0分
  • 专家分2分
沙发#
发布于:2010-01-25 11:39
你最好这样做:
1. 传一个URB到USBD,返回input buffer的长度(525)
2. 根据长度申请缓冲,再次发送URB,获取指定长度的数据。

525>512,因为它已经准备好了525字节的数据。
《寒江独钓》与《竹林蹊径》的合作作者。精通USB开发,设计了CY001 USB驱动套件(http://bbs.driverdevelop.com/read.php?tid-119314.html)。
jally76
驱动牛犊
驱动牛犊
  • 注册日期2005-04-28
  • 最后登录2010-11-23
  • 粉丝0
  • 关注0
  • 积分59分
  • 威望590点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2010-01-27 13:54
U盘用的是USB Mass  Storage协议。向U盘发送的CBW包,长31,U盘回数据512 + CSW包(13 字节),加起来就是525字节啦。
qinlicang
驱动牛犊
驱动牛犊
  • 注册日期2004-09-13
  • 最后登录2010-07-21
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望250点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2010-01-27 16:56
谢谢各位的答复
游客

返回顶部