Windows内核开发之串口过滤

本文详细介绍了Windows内核驱动开发中串口过滤的概念、思路和编码测试。通过串口过滤,可以在不影响串口通信的基础上实现数据拦截与安全控制。文中提到的过滤逻辑包括注册IRP派遣函数、创建虚拟设备、绑定到物理设备以及针对IRP_MJ_WRITE的处理,最终实现对串口数据的监控和管理。
摘要由CSDN通过智能技术生成

学习了几个月的内核编程,现在对Windows驱动开发又了更加深入的认识,特别是对IRP的分层处理逻辑有了深入认识。

总结起来就几句话:

当irp下来的时候,你要根据实际情况,进行处理

1> 无处理,继续往下传

2> 处理之后 ,往下传

3> 处理之后, 往上传

4> 不做处理,直接丢弃

具体怎么理解,通过一个串口驱动过滤就可以深入理解。


一、串口过滤概念

串口过滤:平时我们看到的主机上的USB、网线口等都属于串口,那么设想一个环境,我去网吧上网,正在通过某宝付款,然后主机后面的USB插着一个串口监控器,把我的数据都获取了,然后我的钱就刷刷刷没了...何等悲哀的事情,所以,一个串口过滤,可以在不影响整个串口通信的功能上,拦截住用户层发送出去的信息,这个对于串口数据监控和安全有很大的作用。


二、串口过滤思路

首先是驱动过滤的原理:

“过滤”(filter)是极其重要的一个概念。过滤是在不影响上层和下层接口的情况下,在Windows系统内核中加入新的层,从而不需要修改上层的软件或者下层的真实驱动程序,就加入了新的功能。

也可以说,一个虚拟的设备Attach在一个真实的物理设备上,只要有消息包发送到真实物理设备的方向,则优先进入虚拟设备,而虚拟设备是我们绑定在真实设备上的,因此,优先拿到消息包,并对消息包的内容进行解析,过滤,这里的过滤可以说是对千万的IRP进行if选择,拿到需要的对应设备的IRP,从而,进行分析处理。

为了加深理解,我将逻辑思路做了简要的总结:

1>首先注册IRP的派遣函数(Dispathc Funtion),在这里函数内容做IRP的过滤操作,提取缓冲区,下传IRP等等

2>打开真实的串口设备,以获取到指向串口设备的对象指针,用于下一步的真实虚拟绑定

3>根据真实的串口设备,创建一个虚拟的串口过滤设备(IoCreateDevice)

4>把虚拟串口设备Attach在物理设备上

5>完善派遣函数:对IRP_MJ_WRITE进行过滤,完成过滤操作,将各类IRP做相关的分发处理

总之:OpenCom-----IoCreateFilterDevice-----AttachTo-----IRP_MJ_FUCTION

三、编码测试<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值