windows驱动过滤-串口过滤

本文深入探讨了Windows驱动过滤技术在串口通信中的应用,通过C++编程实现串口数据的过滤。内容包括驱动安装、驱动钩子设置、数据捕获与分析等关键步骤,旨在帮助开发者理解和掌握驱动级串口过滤的方法。
摘要由CSDN通过智能技术生成
#include <ntddk.h>
#include <ntstrsafe.h>

// 设定计算机上只有32个串口
#define CCP_MAX_COM_ID 32
#define DELAY_ONE_MICROSECOND (-10)
#define DELAY_ONE_MILLISECOND (DELAY_ONE_MICROSECOND * 1000)
#define DELAY_ONE_SECOND (DELAY_ONE_MILLISECOND * 1000)

// 保存所有的过滤设备指针
static PDEVICE_OBJECT s_fltobj[CCP_MAX_COM_ID] = {
    0 };

// 保存所有真实设备指针
static PDEVICE_OBJECT s_nextobj[CCP_MAX_COM_ID] = {
    0 };


// 分发函数
NTSTATUS ccpDispatch(PDEVICE_OBJECT device, PIRP irp);

// 动态卸载
VOID ccpUnload(PDRIVER_OBJECT driver);

// 绑定所有串口
VOID ccpAttachAllComs(PDRIVER_OBJECT dirver);

NTSTATUS DriverEntry(PDRIVER_OBJECT driver, PUNICODE_STRING reg_path)
{
   
	DbgPrint("%wZ", reg_path);

	// 统一设置所有分发函数为ccpDispatch
	for (size_t i = 0; i < IRP_MJ_MAXIMUM_FUNCTION; i++)
	{
   
		driver->MajorFunction[i] = ccpDispatch;
	}

	// 支持动态卸载
	driver->DriverUnload = ccpUnload;

	// 绑定所有串口
	ccpAttachAllComs(driver);

	return STATUS_SUCCESS;
}

// 打开一个串口设备
PDEVICE_OBJECT ccpOpenCom(ULONG id, NTSTATUS* status
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值