cybele
驱动牛犊
驱动牛犊
  • 注册日期2003-10-13
  • 最后登录2004-01-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1236回复:4

请教EzUsb驱动的两个问题

楼主#
更多 发布于:2004-01-13 10:50
我硬件设备要求,每个传输包的大小为8个字节,最多一次只能传输240个字节。
我借用了EzUsb的驱动程序,在调试EzUsb驱动时,出现两个问题:

1。我在Ezusb_SelectInterfaces里定义了
interfaceObject->Pipes[j].MaximumTransferSize = 8;
但要在什么地方定义我传送的文件大小不能超过240byte呢?

2。我在调用读写操作时,使用如下代码:
bResult = DeviceIoControl (hDevice,
                     IOCTL_EZUSB_BULK_WRITE,
                     &bulkControl,
                     sizeof(BULK_TRANSFER_CONTROL),
                     &outBuffer[0],
                     outPacketSize,
                     &nBytes,
                     NULL);
但为什么会无限等待?



pengenwen
禁止发言
禁止发言
  • 注册日期2003-03-07
  • 最后登录2016-04-11
  • 粉丝0
  • 关注0
  • 积分1586分
  • 威望8380点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-01-13 11:20
用户被禁言,该主题自动屏蔽!
sean_wang
驱动牛犊
驱动牛犊
  • 注册日期2003-10-28
  • 最后登录2004-02-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-01-13 15:04
我也会出现写操作无限等待的情况,而且是中断传输。请指教!
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-01-13 21:19
如果你在读数据的时候出现无限等待的现象,那么说明你的设备没有数据,解决办法是用异步方式,用overlapp来做,当一定时间的不到数据时就cancel io,重新发送irp请求。

如果在写数据的时候出现无限等待,说明你设备端的端点已经写满,可是数据没有被搬移走,这样会导致驱动不断的轮询端点,直到把驱动里的数据都传下去或者cancel io又或者移除驱动(包括掉电、拔掉电缆,复位)等情况。

关于异步传输的做法,用“异步”做关键词在本版搜索。
pengenwen
禁止发言
禁止发言
  • 注册日期2003-03-07
  • 最后登录2016-04-11
  • 粉丝0
  • 关注0
  • 积分1586分
  • 威望8380点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-01-14 08:38
用户被禁言,该主题自动屏蔽!
游客

返回顶部