一、虚拟驱动如何绑定一个实际硬件安装该驱动?

1、实际硬件:网卡


硬件ID:PCI\VEN_8086&DEV_10D3
对应于虚拟驱动INF文件中的:
%wdk_s2_c13_test1_driver.DeviceDesc%=Root\wdk_s2_c13_test1_driver ; TODO: edit hw-id
修改:只要将Root\wdk_s2_c13_test1_driver 变更为 PCI\VEN_8086&DEV_10D3即可
%wdk_s2_c13_test1_driver.DeviceDesc%=wdk_s2_c13_test1_driver_Device, PCI\VEN_8086&DEV_10D3
;Root\wdk_s2_c13_test1_driver ; TODO: edit hw-id
拓展:也就是改变驱动中对应的硬件ID就可以绑定对应的实际硬件;在项目中,一个驱动可能需要适配不用的设备,就是通过设备的硬件ID进行识别区分的。

2、安装驱动

2.1 log

00000020 8.29713917  Enter HelloWDMPnp
00000021    8.29730415  PNP Request (IRP_MN_QUERY_DEVICE_RELATIONS)
00000022    8.29730892  Enter DefaultPnpHandler
00000023    8.29731083  Leave DefaultPnpHandler
00000024    8.29731369  Leave HelloWDMPnp
00000025    8.31659031  Enter HelloWDMPnp
00000026    8.31659794  PNP Request (IRP_MN_QUERY_REMOVE_DEVICE)
00000027    8.31660080  Enter DefaultPnpHandler
00000028    8.31660366  Leave DefaultPnpHandler
00000029    8.31660557  Leave HelloWDMPnp
00000030    8.34850597  Enter HelloWDMPnp
00000031    8.34851360  PNP Request (IRP_MN_REMOVE_DEVICE)
00000032    8.34851646  Enter HandleRemoveDevice
00000033    8.34851837  Enter DefaultPnpHandler
00000034    8.34851933  Leave DefaultPnpHandler
00000035    8.34856892  Leave HandleRemoveDevice
00000036    8.34857082  Leave HelloWDMPnp
00000037    8.34865093  Enter HelloWDMUnload
00000038    8.34865284  Leave HelloWDMUnload
00000039    8.52089310  Enter DriverEntry
00000040    8.52089691  Leave DriverEntry
00000041    8.52099895  Enter HelloWDMAddDevice
00000042    8.52149391  \??\ROOT#UNKNOWN#0002#{0e57c50f-0ccc-4ad2-a895-93c5ed221301}
00000043    8.52150917  Leave HelloWDMAddDevice
00000044    8.52157593  Enter HelloWDMPnp
00000045    8.52157879  Enter DefaultPnpHandler
00000046    8.52158070  Leave DefaultPnpHandler
00000047    8.52165890  Enter HelloWDMPnp
00000048    8.52166271  PNP Request (IRP_MN_FILTER_RESOURCE_REQUIREMENTS)
00000049    8.52166462  Enter DefaultPnpHandler
00000050    8.52166557  Leave DefaultPnpHandler
00000051    8.52166843  Leave HelloWDMPnp
00000052    8.52198410  Enter HelloWDMPnp
00000053    8.52198792  PNP Request (IRP_MN_START_DEVICE)
00000054    8.52199078  Enter HandleStartDevice
00000055    8.52199268  Enter DefaultPnpHandler
00000056    8.52199554  Leave DefaultPnpHandler
00000057    8.52200031  Leave HandleStartDevice
00000058    8.52200127  Leave HelloWDMPnp
00000059    8.52213955  Enter HelloWDMPnp
00000060    8.52214336  PNP Request (IRP_MN_QUERY_CAPABILITIES)
00000061    8.52214527  Enter DefaultPnpHandler
00000062    8.52214718  Leave DefaultPnpHandler
00000063    8.52216434  Leave HelloWDMPnp
00000064    8.52219105  Enter HelloWDMPnp
00000065    8.52219391  PNP Request (IRP_MN_QUERY_PNP_DEVICE_STATE)
00000066    8.52219486  Enter DefaultPnpHandler
00000067    8.52219677  Leave DefaultPnpHandler
00000068    8.52219868  Leave HelloWDMPnp
00000069    8.52226353  Enter HelloWDMPnp
00000070    8.52226734  PNP Request (IRP_MN_QUERY_DEVICE_RELATIONS)
00000071    8.52226925  Enter DefaultPnpHandler
00000072    8.52227020  Leave DefaultPnpHandler
00000073    8.52227306  Leave HelloWDMPnp
00000074    8.57192612  Enter HelloWDMAddDevice
00000075    8.57197285  \??\ROOT#UNKNOWN#0001#{0e57c50f-0ccc-4ad2-a895-93c5ed221301}
00000076    8.57197952  Leave HelloWDMAddDevice
00000077    8.57201672  Enter HelloWDMPnp
00000078    8.57201862  Enter DefaultPnpHandler
00000079    8.57201958  Leave DefaultPnpHandler
00000080    8.57206440  Enter HelloWDMPnp
00000081    8.57206535  PNP Request (IRP_MN_FILTER_RESOURCE_REQUIREMENTS)
00000082    8.57206726  Enter DefaultPnpHandler
00000083    8.57206821  Leave DefaultPnpHandler
00000084    8.57206917  Leave HelloWDMPnp
00000085    8.57210255  Enter HelloWDMPnp
00000086    8.57210827  PNP Request (IRP_MN_START_DEVICE)
00000087    8.57210922  Enter HandleStartDevice
00000088    8.57211018  Enter DefaultPnpHandler
00000089    8.57211113  Leave DefaultPnpHandler
00000090    8.57211399  Leave HandleStartDevice
00000091    8.57211494  Leave HelloWDMPnp
00000092    8.57217312  Enter HelloWDMPnp
00000093    8.57217407  PNP Request (IRP_MN_QUERY_CAPABILITIES)
00000094    8.57217503  Enter DefaultPnpHandler
00000095    8.57217598  Leave DefaultPnpHandler
00000096    8.57218552  Leave HelloWDMPnp
00000097    8.57219982  Enter HelloWDMPnp
00000098    8.57220173  PNP Request (IRP_MN_QUERY_PNP_DEVICE_STATE)
00000099    8.57220364  Enter DefaultPnpHandler
00000100    8.57220364  Leave DefaultPnpHandler
00000101    8.57220459  Leave HelloWDMPnp
00000102    8.57225800  Enter HelloWDMPnp
00000103    8.57225895  PNP Request (IRP_MN_QUERY_DEVICE_RELATIONS)
00000104    8.57225990  Enter DefaultPnpHandler
00000105    8.57226181  Leave DefaultPnpHandler
00000106    8.57226276  Leave HelloWDMPnp


然后将网卡驱动更新之后:

就会将设备与微软的驱动绑定;

2.2 理解启动设备和禁用设备

因为是即插即用,我们首先得将驱动和设备区分开;驱动是一种程序,躺在内存中。当有一个设备插入(也相当于我们启用一个设备),那么就会去找驱动程序,找到后,驱动就开始为设备服务了。也就是,一个驱动可以为很多不同时段插入的设备服务,也就是加载驱动。加载驱动中就有创建设备,其实就是为实际的硬件创建一个软件的形式,使得能与设备进行交互,所以启用设备都会创建一个设备对象。

WDM驱动实操No.1相关推荐

  1. Linux LCD屏幕驱动调参实操

    Linux LCD屏幕驱动调参实操 初探 Linux下的 LCD 驱动文中提到过, IMX6ULL的 eLCDIF接口驱动程序已经有半导体厂家NXP编写好了,并且不同分辨率LCD屏的eLCDIF接口驱 ...

  2. 【电机应用控制】——直流有刷电机驱动板/编码器介绍PID算法实操代码思路

    目录 前言 一.电机简介 二.直流有刷电机 1.基本知识 2.直流有刷驱动板 3.编码器介绍 三.PID算法 四.实操思路 1.单环控制 2.双环控制 3.三环控制 拓:闭环死区 总结 前言 声明:学 ...

  3. 华为昇腾师资培训沙龙·南京场 |华为昇腾 ACL 语言开发实践全程干货来了!看完就实操系列...

    自今年疫情以来,AI 技术加速进入了人们的视线,在抗疫过程中发挥了重要作用,产业发展明显提速,我国逐步走出了一条由需求导向引领商业模式创新.市场应用倒逼基础理论和关键技术创新的发展道路,AI 人才的争 ...

  4. MetagenoNets:在线宏基因组网络分析实操教程

    宏基因组研究中网络分析已经十分普及,但却缺少整合的分析方法,限制了广大同行的使用. 关于网络分析的基本步骤,和现在工具的比较,详见原文解读 - NAR:宏基因组网络分析工具MetagenoNets 本 ...

  5. 网络分析系统_MetagenoNets:在线宏基因组网络分析实操教程

    宏基因组研究中网络分析已经十分普及,但却缺少整合的分析方法,限制了广大同行的使用. 关于网络分析的基本步骤,和现在工具的比较,详见原文解读 - NAR:宏基因组网络分析工具MetagenoNets 本 ...

  6. 超干货 | 在线教育增长实操者案例分享:如何玩转教育增长模型?

    从2012年开始,中国在线教育行业的市场就整体保持着高增长的趋势.随着"校外报课"逐渐成为中国家长的刚需,成人教育机构也一同进入了K12市场.在这场愈发激烈的市场竞争中,在线教育企 ...

  7. stm32移植paho_如何在STM32上移植Linux?超详细的实操经验分享

    原标题:如何在STM32上移植Linux?超详细的实操经验分享 刚从硬件跳槽为嵌软时,没有任何一丝的准备.一入职,领导就交代了一项特难的任务--在stm32上移植linux! 瞬间我就懵了,没办法硬着 ...

  8. micropython入门教程-Micropython入门实操心得

    1. 用串口线连接pyboard和电脑,发现开发板被识别为移动磁盘. 2 .移动磁盘中默认会有4个文件,它们分别是: boot.py:开机最先运行的文件,最后会由它加载main.py. main.py ...

  9. 理论+实操: MySQL索引与事务、视图、存储过程(软件开发用的多)、存储引擎MyISAM和InnoDB

    文章目录 一:索引的概念 二:索引的作用 三:索引的分类 3.1 普通索引 3.2 唯一性索引 3.3 主键 3.4 全文索引 3.5 单列索引与多列索引 四:创建索引的原则依据 五:创建索引的方法 ...

  10. 公司股权分配的七大简明实操建议

    导读: 创业者通常采用两种方式确定公司的股权结构,一是按照股东的出资比例进行分配,二是在股东之间平均分配. 创业者通常采用两种方式确定公司的股权结构,一是按照股东的出资比例进行分配,二是在股东之间平均 ...

最新文章

  1. PNAS顶刊文:情侣分手3个月前就有预兆!聊天记录还能反映分手后遗症
  2. 14 类编程题解法总结
  3. 支付宝被曝光了一段视频,或许“刷脸支付”的时代就要来临了
  4. 动态规划专题 01背包问题详解【转】
  5. vmware搭建ubuntu虚拟机(包含安装搜狗输入法和apt,dpkg的使用教程)
  6. jooq代码生成_将jOOQ与Spring结合使用:代码生成
  7. 前端学习(2185):tabberitem传入active图片
  8. 过滤器-filter
  9. rk399_android7.1的mipi驱动代码追踪(部分)
  10. 超定方程组的经典Gram-Schmidt正交化解法
  11. mysql卸载报错1606_MySQL5卸载及重装出错问题记录
  12. 一、MySQL数据库优化策略
  13. 在matlab中产生dsp程序学习
  14. Redis和MySQL保持数据一致性
  15. h3cmsr830series说明书_H3C MSR830路由器怎么设置?
  16. NS3运行Reno,BBR,CUBIC等拥塞控制算法
  17. 如何让3ds Max 2016导入smd文件
  18. 企业如何做新闻软文发布? 软文推广和新闻源发布有何不同之处?
  19. 中国地质大学英语语音学习笔记(八):英语重音与重音移位——为发音添彩
  20. mysql忘记root密码如何重新设置

热门文章

  1. jaxen-1.1-beta-6.jar下载地址
  2. 如何解二阶齐线性微分方程
  3. 两场直播丨易鲸捷分布式数据库的并发控制 、PostgreSQL日常工作分享
  4. oracle自动导出awr报告,自动生成awr报告脚本
  5. Windows 11企业版虚拟机镜像官方版下载及安装
  6. sz命令获取文件到本地路径设置
  7. 批处理变量输出时提示“ECHO处于关闭状态”
  8. 使用谷歌浏览器出现插件未就绪以及CLodop云打印服务(localhost本地)未安装启动!请下载安装包!
  9. 一个完整的性能测试流程
  10. 性能测试流程和各阶段的工作