阅读:1231回复:3
急啊,USB驱动怎么所有的IN功能都不能用了?
毕业设计马上就要交了,怎么出这个问题??
NTSTATUS GPSDevice::CMD_REPLY_Handler(KIrp I) { NTSTATUS status = STATUS_SUCCESS; PURB purb = m_Endpoint1IN.BuildInterruptTransfer( (PCHAR)I.IoctlBuffer(), 6, TRUE, NULL, NULL, TRUE ); status = m_Endpoint1IN.SubmitUrb(purb,NULL,NULL,10); delete purb; t<<\"STATUS:\"<<status<<\"\\n\"; I.Information() = 6; return status; } 谁帮着给看看哪有错啊,谢了先。固件没动过,以前还能用,怎么突然间换了2台电脑都不能IN了。OUT功能正常,我向设备发送的数据能被准确接受,但是IN的时候 如果这样写 m_Endpoint1IN.SubmitUrb(purb,NULL,NULL,0); (注:超时=0) 第一次,DEVICE IO RETURN 1F。 DRIVER MONITOR调试信息显示STATUS:0xc0000001 再发送,就没有反应了,僵死在SUBMIT那了,只能拔掉设备,然后它返回48F。 如果这样写 m_Endpoint1IN.SubmitUrb(purb,NULL,NULL,10); (超时!=0) 发进的数据有错误,在DRIVER MONITOR中调试信息成了STATUS:0x00000xxx忘了,反正就是STATUS_TIMEOUT的值。 5555555555555555555555555555555555 5555555555555555555555555555555555 急呀!!!!!!!!!!!!! [编辑 - 5/13/04 by dongzai] |
|
沙发#
发布于:2008-04-16 10:06
搞出来了么?我也有好多问题……
|
|
|
板凳#
发布于:2004-05-14 21:17
哪位高手行行好,帮我看看啊。谢了先,快急疯了!!!
|
|
地板#
发布于:2004-05-13 22:35
怎么没人说话啊!5555555
我是2台机器(一个学校的,一个家里的),原来都可以IN,当时的驱动是自己瞎编的,没有什么逻辑,所以决定重新编个结构清晰的。结果发现不能IN了,换了个机器也不行。把固件和驱动和应用程序换成以前的也不行了。 就是SUBMITURB时,僵在那儿了,如果设置了超时就返回SUBMITURB超时(错误0X00000120)。我检查了我的FIRMWARE,开始觉得是它在接到IN令牌时没回复导致主机总线驱动死等。因为以前弄EP0 VENDOR REQUEST时出现过这个错误。可是我一直都没有改动过FIRMWARE。 而且经调试,我发现,我IN的时候,设备并没有发生USB中断。(我用的CYGNAL8051单片机) 555555555555555555555555555 哪位高手给看看我的驱动有没有什么问题??合理不合理??是不是必须要有COMPLETEROUTINE例程?? NTSTATUS GPSDevice::CMD_REPLY_Handler(KIrp I) { NTSTATUS status = STATUS_SUCCESS; PURB purb = m_Endpoint1IN.BuildInterruptTransfer( (PCHAR)I.IoctlBuffer(), 6, TRUE, NULL, NULL, TRUE ); status = m_Endpoint1IN.SubmitUrb(purb,NULL,NULL,10); delete purb; t<<\"STATUS:\"<<status<<\"\\n\"; I.Information() = 6; return status; |
|