用Visual Studio 2015 编译张帆的第一个WDM驱动,并且成功安装到Windows 10里面!!!

开发工具:Visual Studio 2015 企业版

目 标 机:Windows 10 X86

前提:我们已经成功安装了Visual Studio 2015以及WDK,而且更重要一点是一定要SDK版本和WDK版本保证一致,如果不一致会造成Visual Studio 2015里面C/C++的宏定义和使用的WDK不匹配,严重影响驱动程序的编译!关于这个问题,可以看这篇文章:http://www.cnblogs.com/sunylat/p/6286527.html

本篇博客涉及到的所有工具和源码下载:http://download.csdn.net/detail/sunylat/9740132

在进行下列操作之前,请到上面地址下载所有本博客涉及到的所有工具和源码,随后进行下面尝试!!

一,驱动安装和调试工具准备:把压缩包里面的下面两个工具拷贝到虚拟机中。

1,EzDriverInstaller,这个工具直接运行就可以了。

2,DbgView,在使用它之前,注意“DebugView”目录中有一个"1.reg"文件,执行它,随后重新启动操作系统,从而保证DbgView能够捕获驱动信息,否则无法捕获驱动信息!

二,编译张帆的第一个WDM工程:我采用建立一个空白的WDM工程,随后拷贝张帆WDM工程代码方式来完成,这样最大限度保证工程代码的正确性,从而可能保证我们顺利编译通过!!

1,“新建项目”->Visual C+±>Leguay->“Empty WDM Driver”,选择好工程路径,输入工程名称为“HelloWDM”,随后点击“确定”按钮。

2,拷贝张帆第一个WDM工程里面的3个文件到我建立的工程中。在拷贝时候“HelloWDM.inf”需要覆盖,直接覆盖就可以了!!

3,点击VS2015菜单“生成”->“重新生成 HelloWDM”,第一次尝试编译这个工程。

4,编译结果发现错误,错误提示是一个指令配置错误,打开“HelloWDM.inf”,在它“Version”小节中加入“CatalogFile=HelloWDM.cat”,随后保存这个文件。

5,继续编译,依然存在错误,解决方法:关闭C++的“将警告视为错误”。

6,鼠标右键点击工程“属性”,随后点击“C/C++”,关闭C++的“将警告视为错误”。

7,继续尝试编译,依然发现错误,这次我们将关闭inf2Cat。

8,鼠标右键点击工程“属性”,inf2Cat,把“Run Inf2Cat”选择为“否”,随后点“确定”按钮。

9,继续编译,VS2015提示编译驱动成功!!那么我们就去目标机里面试一下安装我们编译成功的驱动吧!

二,去目标机里面测试驱动:把我们编译好的驱动拷贝到虚拟机里面。

1,首先用管理员权限打开“Dbgview.exe”,随后选择它菜单“Capture”,选中“Capture Kernel”,这样我们才能得到驱动的调试信息!

2,打开“EzDriverInstaller.exe”,点击“File”,在弹出对话框中选择我们要安装的驱动程序,实际上是选择那个"HelloWDM.inf"文件,WDM驱动安装都是选择这个inf开始。

3,点击“Add New Device”按钮。

4,添加操作结束了,实际上这次安装失败了,因为“EzDriverInstaller”界面中,并没有显示出来我们要安装的驱动!

5,这是最终安装操作结束后的界面。

6,我们看“Dbgview”中没有任何驱动相关的调试信息!

三,继续修改驱动程序相关文件:

1,修改“HelloWDM.inf”:驱动安装失败了,应该是我们编写的驱动程序什么地方有问题了,经过多次排查,最终发现是“HelloWDM.inf”的一项设置的问题!!在“SourceDisksFiles”这个小节中!

原来配置:

HelloWDM.sys = 1,MyDriver_Check,

修改后配置

HelloWDM.sys = 1,,

最终修改完“HelloWDM.inf”的截图:

2,把重新编译好的驱动拷贝到目标机中。

3,重新用“EzDriverInstaller”安装这个WDM驱动,这次“EzDriverInstaller”最终显示我们真的安装成功了,“EzDriverInstaller”里出现了这个WDM驱动了,并且“Dbgview”里面显示了整个驱动完整的调试信息!!

4,我们通过设备管理器,也真的看到了,我们成功安装的张帆的第一个WDM驱动了!!

以上就是经过我3天不懈努力,无数次蓝屏最终完成的成果!!!张帆的《windows驱动开发技术详解》,从出版到最终的第三次印刷,到目前为止,依然是国内学习驱动非常好的图书,如果不谦虚地说,应该是首屈一指的图书,非常系统全面介绍驱动开发相关知识,其它驱动开发图书,真的没法和它比!!!但是随着时间推移,当时的开发环境已经过时了,目前VS2015是微软一个非常强大的开发工具,同时也是驱动开发的好工具,能够使用VS2015,并且还能够编译和安装张帆的例子,无疑是最好的学习方式,我这些天一直在努力,最终我完成了!!!希望大家能够在学习驱动的时候,踩着我的肩膀前进,比我更幸福些!!!

四,如何编译其它平台的驱动:鼠标右键工程”属性“->Driver Settings,随后选择目标OS和平台就可以了!

下面是win7 X86平台成功安装驱动的截图:

目前编译驱动均为X86平台!!

参考文章:http://blog.csdn.net/whatday/article/details/9384577

分类: 驱动开发_Windows:https://www.cnblogs.com/sunylat/category/928090.html

用Visual Studio 2015 编译张帆的第一个WDM驱动,并且成功安装到Windows 10里面相关推荐

  1. (win10 64位系统中)Visual Studio 2015+OpenCV 3.3.0环境搭建,100%成功

    (win10 64位系统中)Visual Studio 2015+OpenCV 3.3.0环境搭建,100%成功 Visual Studio 2015下载地址:https://msdn.itellyo ...

  2. Visual Studio 2015编译wxWidgets

    宫指导说,换帅如换刀 程序员的编译器一换,基本套路必须都重练几次 使用wxWidgets并不难,但不能使用现有的库和工程配置文件,细节就必须理清楚 获取wxWidgets 官方的下载页面,下7z或zi ...

  3. 使用 Visual Studio 2015 编译 BitShares-Core

    0. 环境准备 * 64 位 Windows 系统,比如 Windows Server 2012 R2 Standard edition 1. 安装 Visual Studio 2015 with U ...

  4. Visual Studio 2015 编译与使用Boost库进行文件与目录的操作

    前言 1.Boost库是一个功能非常强大的跨平台开源C++库,我这里只演示如何在win7下visual studio 2015里做boost库的boost::filesystem来操作文件.目录. 2 ...

  5. visual c语言编译运行结果,Visual Studio 2015编译运行C语言文件问题小结

    各位老友很久不见,距离上一篇博客已通过去四个多月了,这应该是近几年间隔最长的一次.很无奈,毕业季遇上了特殊时期,不少计划都被打乱了,半年前构思的各类场景在现实面前一一被抹杀,在家搞毕业设计是真的痛苦, ...

  6. Visual Studio 2015编译运行C语言文件问题小结

    各位老友好久不见,距离上一篇博客已经过去四个多月了,这应该是近几年间隔最长的一次.很无奈,毕业季赶上了特殊时期,很多计划都被打乱了,半年前构思的各种场景在现实面前一一被抹杀,在家搞毕业设计是真的痛苦, ...

  7. Visual Studio 2015编译Lua 5.3.4遇到的坑

    被坑的不浅,遇到错误:" LNK1561:必须定义入口点",解决方案删除再建,步骤一遍一遍操作,还是报错.如下图所示: 首先,它必须要改成DLL或者LIB(动态/静态库),如果是应 ...

  8. 一步一步在 Windows 10 用 visual studio 2019 编译 zmqpp 4.2.0 版

    伸手党可以到 zmqpp库windows编译结果-C++文档类资源-CSDN下载 去下载 zmqpp 是 libzmq 的高级 C++ 封装,不但提供了针对 libzmq C 接口的 C++ 封装,还 ...

  9. Visual Studio 2015 前端开发工作流

    Visual Studio 2015 CTP 5,全称为 Visual Studio 2015 Community Technology Preview 5,意为社区技术预览版,之前的版本为:Visu ...

最新文章

  1. 10.VMware View 4.6安装与部署-view clint和view for ipad连接测试
  2. Windows(64位IIS)未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序
  3. Java学习笔记二十:Java中的内部类
  4. C# ConcurrentBag实现
  5. resnet152训练_Resnet-152的图像预处理
  6. 信息安全工程师考试大纲
  7. linux race window,java开发环境(QTrace)
  8. cefsharp异步抓取html5,winform插件cefsharp65最新版完美demo,完美flash、html5、和调用摄像头支持,部署就能用...
  9. html搜索框代码_解放双手 | 10行Python代码实现一款网页自动化工具
  10. 计算机房承重载荷,机房承重标准及承重计算方法
  11. 机器学习面试常用算法知识点梳理总结
  12. 背景透明及引发的文字透明问题
  13. 为什么有的计算机没有ppt,电脑上没有ppt怎么办
  14. autojs识别二维码
  15. matlab世界坐标系转化,坐标变换_世界坐标系与用户坐标系之间的转换
  16. Trend趋势反垃圾邮件黑名单申诉方法
  17. SPARC架构下的反汇编(三)——SPARC汇编语言
  18. html 写字板 乱码,Win7系统写字板打开文档出现乱码的两种解决方法
  19. DLNA(明基的返校讲座)
  20. windows10将耳机当作麦克风

热门文章

  1. huntshowdown服务器维护吗,huntshowdown怎么玩?新手玩法指南
  2. java wait notifyall_Java中的wait/notify/notifyAll
  3. 深度学习与智能故障诊断学习笔记(一)——故障诊断体系介绍
  4. 计算机通过io接口对什么实现控制器,《微机原理与接口技术》第6章 微计算机IO接口基础.ppt...
  5. 小计算机cv值怎么计算方法,Cv值(cv值与流量如何换算)
  6. QGraphicsScene QGraphicsView QGraphicsItem
  7. 技术干货 | pytest 自动化测试实战展示
  8. 广播的registerReceiver() 和 unregisterReceiver()要成对出现
  9. Python 实现 PCA
  10. 图像去噪之自适应维纳滤波