在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协议,如虚拟串口,要熟悉串口协议,当然实现时,不必将所有协议都实现,让操作系统误以为是真设备,不报错就行

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

Windows虚拟设备驱动开发总结相关推荐

  1. 九七的Windows内核驱动开发 WIN10-2004+VS2019+WDK驱动开发环境安装及配置

    WIN10-2004+VS2019+WDK驱动开发环境安装及配置 一.定义介绍   本节介绍如何在Windows10系统(2004版本,操作步骤中有如何查看版本)中安装VS2019及WDK开发包,并进 ...

  2. Windows的驱动开发模型

    在Windows的不同版本上开发的驱动程序"模型"(模型这个词语应该来源于单词"Mode".在Windows NT上,驱动程序被称为Kernel Driver ...

  3. windows xp 驱动开发(三)DDK与WDK WDM的区别

    转自: http://www.cnblogs.com/hyddd/archive/2009/03/15/1412684.html 最近尝试去了解WINDOWS下的驱动开发,现在总结一下最近看到的资料. ...

  4. Windows 7驱动开发系列(一)--前言WIN7的新特性

    随着工作时间的增加,感觉自己技术越做越向DESIGN发展哈哈,一些具体的工作反而少了很多,所以做为总结呢,把自己对WINDOWS驱动分享一下,当然了水平及时间都有限欢迎大家一起讨论. 其实在网上看招聘 ...

  5. Windows 10驱动开发入门(一):环境搭建

    驱动的开发对于初学者来说是不友好的,我们不知道怎么入手,从哪里入门.对于初学者来说束手无策,特别是碰到一个很简单的问题,都不知道怎么解决,这一系列的教程,就是用来排除这些障碍. 大部分的驱动开发教程都 ...

  6. windows XP 驱动开发环境搭建

    1.需要安装的软件: 在Windows XP的基础上,安装顺序: 先装上VC++6.0,再装DDK2600(也就是DDK的XP版),最后装 Driver Studio 3.2. 下载地址: XP系统的 ...

  7. Windows打印机驱动开发

    本文地址:http://www.tongxinmao.com/Article/Detail/id/317 开发打印机驱动程序通常有两种途径:一是开发一个完整的驱动程序,二是利用微软提供的通用打印机驱动 ...

  8. windows xp 驱动开发(十八) USB驱动程序开发用到的工具总结

    转载请标明是引用于 http://blog.csdn.net/chenyujing1234 欢迎拍砖! 观察USB设备的工具. 通过这些工具可以方便学习USB协议 一.   usbview 请参考我的 ...

  9. Windows 7驱动开发系列(四)--WDM模型介绍

    有关WINDOWS DRIVER的模式还有一个很重要的概念就是WDM模型,一般来说内核模式的驱动都要遵守WDM(除了某些需要支持WIN2000的驱动以外)那么什么是WDM呢?它是一套规则: 1.需要在 ...

  10. Windows打印机驱动开发笔记(一)

    在Windows中,打印机驱动的作用是编写一组接口.应用程序调用的GDI函数会变成相应的DDI函数,打印机驱动提供的这组接口负责将DDI函数转变为打印机识别的的指令.至于是通过网口.串口等接口与真实打 ...

最新文章

  1. 搭建WSS 开发测试环境
  2. Android studio 刷新文件状态
  3. 中美程序员的不完全对比,看看跟你了解的一样吗?
  4. 备忘--Sinfors 设备出厂IP
  5. 数学系列 - 概率论 - 泊松分布和(负)指数分布
  6. 刷前端面经笔记(十二)
  7. python库的使用手册_​Python 常用库之 psutil 使用指南
  8. 2017年我国智能卡行业市场现状及发展趋势分析
  9. iOS加入百度地图的几个问题
  10. Qt中调用C语言函数库
  11. 64qam星座图matlab,基于MATLAB的QAM 眼图和星座图
  12. 微信支付接入-弹出支付框输入密码后一直在转圈,20s后提示:支付失败,请稍后再试
  13. 在线英语广播==好好学习,天天向上
  14. win10安装打印机驱动程序失败“试图将读懂程序添加到存储区时遇到问题”
  15. linux系统连接不上wifi
  16. 玩的第一个黑客小游戏,isa test
  17. android studio找不到app moudle
  18. 数据库生成日然周、自然月、自然日
  19. linux安装ssl证书
  20. 用骈文写一段自我检讨

热门文章

  1. JxBrowser的概述与简单应用
  2. ad如何绘制拼版_ad 拼板
  3. VUE 自定义取色器组件
  4. MAC微软远程桌面RDC不能全屏的的解决方法
  5. Householder变换(反射变化)与Givens变换(旋转变化)的学习笔记
  6. 计算机机房检查内容,IDC数据中心机房日常运维巡检工作的正确姿势
  7. scrapy微信爬虫使用总结
  8. 计算机网络实验教程钱德沛_计算机网络实验教程完成版.pdf
  9. 多平台、简洁思维导图工具推荐-幕布[高级会员获取]
  10. 极简工具(AutoCAD、Tekla)——零件图自动标注