首页
社区
课程
招聘
[求助]关于通过TDI转发虚拟串口数据的问题
发表于: 2012-5-21 21:19 4975

[求助]关于通过TDI转发虚拟串口数据的问题

2012-5-21 21:19
4975
最近由于工作需要,在开发一个 通过TDI转发虚拟串口数据的驱动,由于之前没接触过驱动,碰到一些问题不知道该怎么解决,希望得到各位大牛的指点,提前说声谢谢!

整个虚拟串口驱动的框架用的是DDK自带的例子,底层TDI相关部分学习的是codeproject上的一篇文章:Driver Development Part 5: Introduction to the Transport Device Interface
http://www.codeproject.com/Articles/9974/Driver-Development-Part-5-Introduction-to-the-Tran

      在上层应用打开虚拟串口时利用TDI建立了TCP连接,写数据也已经成功,通过串口和网口抓包工具都可以监测到数据,网络另外的服务端也有数据返回,
    可是上层应用利用ReadFile读取时没有数据。TDI的读写机制是借鉴上面那篇文章中的,开启一个内核线程来不断处理写请求,注册TDI_EVENT_RECEIVE的回调函数来进行数据读取,现在遇到的一个问题是利用一个名为sscom的串口调试工具来调试时,发送完数据后可以触发TDI_EVENT_RECEIVE,从而在该回调函数中可以读到数据,但是虚拟串口驱动的IRP_MJ_READ的派遣函数没有被调用,用一些工具也没有监测到IRP_MJ_READ的IRP;利用自己随便写的调试工具通过ReadFile调用来读取的时候可以进入到IRP_MJ_READ的派遣函数,但是TDI_EVENT_RECEIVE事件没有被触发,也就没有获取到数据。试着不通过注册事件而直接在IRP_MJ_READ的派遣函数中构造TDI_RECEIVE的irp来读取数据,在等待事件完成的时候卡死直至超时退出,没有获取到数据。

     想咨询下各位朋友有没有碰到过类似情况,或者提供一些关于TDI相关的资料也好,谢谢大家!

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 274
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
学识有限,帮楼主顶
2012-5-22 09:20
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
TDI_EVENT_RECEIVE事件应该和其它请求没有关系(除非调用TDI_RECEIVE)吧,为什么用不同的方式去读写虚拟串口,虚拟串口驱动里的TDI处理相关部分会有不同的反应呢,自己以同步方式打开串口写数据,服务端有数据返回,但是TDI_EVENT_RECEIVE没有触发;用sscom3.2去操作,就可以触发TDI_EVENT_RECEIVE,分析了两个的create和write请求,没有差别啊。哪位朋友可以伸出援手。
2012-5-24 23:18
0
游客
登录 | 注册 方可回帖
返回
//