zhoujiamurong
驱动小牛
驱动小牛
  • 注册日期2006-03-20
  • 最后登录2009-05-06
  • 粉丝4
  • 关注0
  • 积分1081分
  • 威望360点
  • 贡献值0点
  • 好评度215点
  • 原创分0分
  • 专家分0分
阅读:1220回复:2

求助 硬件发送数据到PC,驱动是如何触发的

楼主#
更多 发布于:2008-07-22 11:06
硬件情况:
一个硬件类似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的完成例程吗?

谢谢指教!
zhoujiamurong
驱动小牛
驱动小牛
  • 注册日期2006-03-20
  • 最后登录2009-05-06
  • 粉丝4
  • 关注0
  • 积分1081分
  • 威望360点
  • 贡献值0点
  • 好评度215点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-07-22 14:33
大牛们帮帮忙,十多天了,驱动代码大部分都写好,现在安装和识别、插拔、以及虚拟串口都好的,两个系统线程控制也正常,串口也可以打开,就是读不到硬件的数据。
zhoujiamurong
驱动小牛
驱动小牛
  • 注册日期2006-03-20
  • 最后登录2009-05-06
  • 粉丝4
  • 关注0
  • 积分1081分
  • 威望360点
  • 贡献值0点
  • 好评度215点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2008-07-22 16:31
原来读取的IRP包一直就是Pending状态,直到串口关闭才被Cancel,所以一直没有数据,我去检测下我发的包有什么问题
游客

返回顶部