goodhopecape
驱动牛犊
驱动牛犊
  • 注册日期2005-01-26
  • 最后登录2007-06-19
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1090回复:0

神啊!救救我吧!

楼主#
更多 发布于:2005-05-17 10:49
    用VxD+WDM做的用于WIN98的USB转双串口的设备的驱动程序,在VxD中使用应用发过来的写请求使用IOCTL的发给WDM驱动程序,由WDM使用URB_BULK_OR_INTERRUPT_TRANSFER结构调用IoCallDriver向总线发出写请求.
    问题是这样,因为映射两个串口,所以没有将这两个串口的PDO使用IoAttachDeviceToDeviceStack加到设备堆栈上,VxD中的收到的IRP应该层数不够,所以在WDM中将要写的数据作为参数创建新的IRP.我重新分配了NonPagedPool内存,将这个缓冲区复制出来,但是在调用IoCallDriver后,发现这个函数没有正确执行,在调用返回PENDING后,等待信号量置位的过程超时.使用Bus Hound工具看不到有数据写到总线上.
    另外,这个驱动程序已经可以正确安装初始化设备,而且PIPE RESET是可以正确发送到总线上的.
    请问高人,我的程序究竟问题出在哪?
游客

返回顶部