#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
windows驱动过滤-串口过滤
最新推荐文章于 2024-07-24 13:46:26 发布
本文深入探讨了Windows驱动过滤技术在串口通信中的应用,通过C++编程实现串口数据的过滤。内容包括驱动安装、驱动钩子设置、数据捕获与分析等关键步骤,旨在帮助开发者理解和掌握驱动级串口过滤的方法。
摘要由CSDN通过智能技术生成