阅读:1092回复:0
神啊!救救我吧!
用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是可以正确发送到总线上的. 请问高人,我的程序究竟问题出在哪? |
|