阅读:1465回复:0
求助:PipeIn.MaximumTransferSize()始终返回0的问题
这几天写了个USB的驱动,有两个Pipe,一个in,一个out。PipeOut工作正常,但是PipeIn的MaximumTransferSize()函数一直返回0,我看了一下KUSB.H文件中关于这个函数的实现代码:
inline ULONG KUsbPipe::MaximumTransferSize(void) { ASSERT(m_Information); if(!IsOpen()) return 0; return m_Information->MaximumTransferSize; } 用softice单步调试跟进这个方法发现在if(!IsOpen()) return 0; 这句代码就返回了,也就是说IsOpen()=false,然后我有看了这个函数的实现: PUSBD_PIPE_INFORMATION m_Information; BOOLEAN IsOpen(void){return m_Information != NULL;} 这么看来是因为m_Information=NULL了??怎么会为NULL呢,另外我访问KUsbInterface类的PUSBD_INTERFACE_INFORMATION m_Information成员,它里面的两个pipe的PUSBD_PIPE_INFORMATION 结构体变量并不为NULL,其值跟我固件里设置的属性值都是一致的,也就是说这两个pipe的信息结构体已经被正确填充了。 还有一点很奇怪,我用SetMaxmumTransferSize()方法只能改变PipeOut的属性,PipeIn的MaxmumTransferSize属性始终是默认的4096,真是不知所措啊,请高手出手相助哈~~~ 请高手出手相助哈, |
|