skelvin
驱动牛犊
驱动牛犊
  • 注册日期2007-01-15
  • 最后登录2007-10-13
  • 粉丝0
  • 关注0
  • 积分200分
  • 威望21点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
阅读:1464回复:0

求助:PipeIn.MaximumTransferSize()始终返回0的问题

楼主#
更多 发布于:2007-09-07 15:48
这几天写了个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,真是不知所措啊,请高手出手相助哈~~~


请高手出手相助哈,
游客

返回顶部