阅读:1236回复:4
请教EzUsb驱动的两个问题
我硬件设备要求,每个传输包的大小为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); 但为什么会无限等待? |
|
沙发#
发布于:2004-01-13 11:20
用户被禁言,该主题自动屏蔽! |
|
板凳#
发布于:2004-01-13 15:04
我也会出现写操作无限等待的情况,而且是中断传输。请指教!
|
|
地板#
发布于:2004-01-13 21:19
如果你在读数据的时候出现无限等待的现象,那么说明你的设备没有数据,解决办法是用异步方式,用overlapp来做,当一定时间的不到数据时就cancel io,重新发送irp请求。
如果在写数据的时候出现无限等待,说明你设备端的端点已经写满,可是数据没有被搬移走,这样会导致驱动不断的轮询端点,直到把驱动里的数据都传下去或者cancel io又或者移除驱动(包括掉电、拔掉电缆,复位)等情况。 关于异步传输的做法,用“异步”做关键词在本版搜索。 |
|
地下室#
发布于:2004-01-14 08:38
用户被禁言,该主题自动屏蔽! |
|