Windows虚拟设备驱动开发总结

在windows系统中有微软提供了很多虚拟设备驱动,很多商业软件也存在虚拟总线方式实现各种产品,如虚拟串口,虚拟光驱,虚拟USB(HID),虚拟网卡等等,实现方式有多种,微软也提供了相应框架,下面简单介绍一种最常用,最灵活,很多商业软件也常用的方法:虚拟总线+虚拟设备的方式,只简介实现思路

虚拟总线驱动实现,建议参考微软wdk/ddk提供的源码,Toaster提供了全套学习代码,其中虚拟总线驱动很典型,bus目录下有wdm/kmdf两种版本,很多人看不太明白实现原理,总体上实现思路是:(1)在addDevice中创建虚拟总线设备,(2)在IRP_MJ_DEVICE_CONTROL中模拟插上设备,根据不同HardwrieID创建PDO,(3)创建FDO,要在IRP_MJ_SYSTEM_CONTROL处理中,模拟真实设备送给系统相应数据,这一步很关键,FDO的实现可以是独立一个功能驱动,也可以在总线驱动内部创建,象Elitama虚拟串口驱动,就是独立的虚拟总线+独立的虚拟设备实现,很多个性化产品,直接在总线处理中处理,如微软提供的蓝牙总线代码,usbip和虚拟x360手柄驱动等等,各有利弊端。

明白总线驱动与设备驱动原理,会发现实现虚拟总线驱动并不是太难,难在虚拟设备驱动实现,因为需要熟悉相应设备的物理背景,如虚拟USB,要熟悉USB协议,如虚拟串口,要熟悉串口协议,当然实现时,不必将所有协议都实现,让操作系统误以为是真设备,不报错就行

第一次写技术博客,真不知怎么写,感觉提供思路更重要,快速理清代码是关键!以后有空再根据代码介绍

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值