驱动小牛
|
阅读:1220回复:2
求助 硬件发送数据到PC,驱动是如何触发的
硬件情况:
一个硬件类似Usb Modem,在外界拨号进来的时候,硬件会向PC发数据,超级终端读到后可以接电话。 我的理解: 超级终端发送读Read的API, I/o管理器发送读的IRP到驱动,驱动将IRP包转格式成URB 包送到UsB总线,在完成例程中到内存去读到硬件的数据,将数据复制到用户的buffer中,超级终端读到数据显示。 现在的驱动情况: 我用来改的Sample是 DDK 2000 的 Serial,改的方法是加了两个系统线程用来读数据和写数据,而所有的原来写端口的地方更改为KeSetEvent. 我的问题: 超级终端发送的Read的API, I/o管理器是自动发的IRP包到的驱动,并没有看到Serial中的读例程中有相关的处理。所以我想问的是当外界拨号来的时候,硬件中有数据要发送到PC ,超级终端读取数据,最早在驱动中触发的例程应该在什么地方?是pipe1的完成例程吗? 谢谢指教! |
驱动小牛
|
沙发#
发布于:2008-07-22 14:33
大牛们帮帮忙,十多天了,驱动代码大部分都写好,现在安装和识别、插拔、以及虚拟串口都好的,两个系统线程控制也正常,串口也可以打开,就是读不到硬件的数据。
|
驱动小牛
|
板凳#
发布于:2008-07-22 16:31
原来读取的IRP包一直就是Pending状态,直到串口关闭才被Cancel,所以一直没有数据,我去检测下我发的包有什么问题
|