开发工具:Visual Studio 2015企业版

主      机:windows10 X64企业版,主机是安装了Visual Studio 2015的操作系统,主要进行驱动开发和调试。

目  标 机:windows10 X86企业版,目标机是安装和调试驱动的操作系统,和主机是分离的独立的操作系统。

虚  拟 机:VMWear Workstation 12 Pro

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

好了,下面我就告诉大家我是如何一步步实现这个目标的!

一,配置目标机:让目标机能够和主机通讯,成为一个可以进行我们开发的驱动安装和调试的操作系统。

1,添加和设置通讯的串口:我们通讯采用串口方式,默认情况下,在VM里面安装的操作系统并没有打开串口,需要我们手动添加,下面就是添加的过程。注意:添加端口时候,虚拟机中的操作系统必须是关机状态才可以添加。

A,在想要设置为目标机的操作系统上鼠标右键->设置。

B,在虚拟机设置里面点击下面的“添加”按钮,随后在弹出的“添加硬件向导”里面,选中左侧列表中的“串行端口”,随后点击“下一步”按钮。

C,选中“输出到命名管道”,随后点击“下一步”按钮。

D,在这里,点击中间的下拉列表,选择“另一端是应用程序”,其它两项不需要修改,上面一项是命名管道名称;下面是启动时连接,我们这两项保持默认就可以了!随后点击“完成”按钮。

E,这是最终配置截图,如果配置都正确了,点击“确定”按钮,完成串口添加和设置。

二,设置目标机:让目标机成为一个可以安装和调试我们开发驱动的环境。

1,允许目标机成为调试环境:执行两个DOS命令。

启动目标机操作系统后,以管理员权限打开DOS窗口,把盘符转换到C盘根目录下,随后依次执行下面两条命令:

A,bcdedit /debug on

B,bcdedit /dbgsettings serial debugport:1 baudrate:115200

上面两条命令执行时候,如果正常,应该没有任何错误显示,如果一切正常,那么随后我们应该重新启动一下当前操作系统!

操作系统启动完毕后,如果我们想验证上面命令操作是否成功,可以以管理员权限打开DOS窗口,执行这个命令:bcdedit /dbgsettings

如果我们这些DOS命令设置成功了,那么这个验证的DOS命令返回信息应该是这样:

2,安装WDK Test Target Setup程序:安装这个程序后,才可以在主机端使用VS2015对目标机进行设置。注意:这个安装程序有两个版本,分别是X86和X64,对应不同平台的操作系统,因为我的目标机是X86,所以我选择的是:“C:\Program Files (x86)\Windows Kits\10\Remote\x86\WDK Test Target Setup x86-x86_en-us.msi”,如果你的目标机是X64平台,你应该用这个安装文件:“C:\Program Files (x86)\Windows Kits\10\Remote\x64\WDK Test Target Setup x64-x64_en-us.msi”。把这个安装文件拷贝到目标机中,随后安装,安装完毕后重新启动一下操作系统!

通过上面的设置,我们已经完成了目标机的准备工作,剩下就是如何在VS2015里面建立同目标机的通讯了!!

二,在Visual Studio 2015里同目标机建立通讯:

A,在VS2015的菜单中,点击“Driver”->"Test"->"Configure Devices"。

B,

C,

D,上面点击“下一步”按钮后,就进入了主机和目标机建立通讯的过程,这个过程需要一些时间,要耐心等待完成,不要进行其它操作,期间目标机会进行多次重启操作,都是自动完成,我们不要进行任何人为干预!如果一切顺利,我们就会成功建立主机和目标机的通讯,如下图:

三,编写测试驱动程序:

A,点击“新建项目”,在Visual C++里面选择“WDF”,随后在右侧选择指定项目,随后点击“确定”按钮。

B,VS2015使用UMDF模板,自动给我们建立了一个驱动工程,包含了完整的驱动需要的各种文件,我们暂时不对这些文件做任何修改,为了保证这些文件可以正常编译,从而测试发布到目标机中!

C,对这个驱动进行编译,如果一切顺利,那么从输出窗口,我们应该能看到编译成功的信息!

四,发布到目标机:把我们编写的驱动程序通过主机和目标机建立的通讯,发布到目标机中!在发布时候,确保目前目标机已经在VM中处于开机正常运行状态!!!

A,在当前工程上鼠标右键,点击“属性”,随后在左侧选择“Driver Install”->"Development",随后右侧选择正确就可以发布了,选择项目按照下面截图标识!

B,点击VS2015的菜单“生成”->“部署 UMDF 2 Driver1”,注意,这里面的“UMDF 2 Driver1”是我当前建立的工程名称,如果你的工程名称和我的不一样,那么只是后面的工程名称不同而已,也是选择这个菜单项!

C,正在发布的截图,输出窗口会不断出现各种信息!

D,发布成功的截图:经过一小段时间等待,最终提示信息,我们的驱动发布成功了!!

五,验证驱动是否发布成功:进入VM里面的目标机,随后查找我们发布的驱动程序!

A,在我的电脑上鼠标右键,随后在弹出菜单中点击“管理”。

B,点击左侧“设备”,看右侧的“Samples”下面,是不是已经有了我们发布的驱动?

WDK10下载:https://developer.microsoft.com/zh-cn/windows/hardware/windows-driver-kit

WDK10必须在安装完SDK之后才安装它!!SDK在安装VS2015时候可以安装!

MSDN驱动开发教程:https://msdn.microsoft.com/zh-cn/library/windows/hardware/ff554811(v=vs.85).aspx

微软官方提供的Windows 10驱动例子:https://github.com/Microsoft/Windows-driver-samples

用Visual Studio 2015成功编译、发布UMDF驱动到目标机!!的更多相关文章

  1. 用Visual Studio 2015 编写第一个UMDF驱动遇到的问题!!

    前提:Visual Studio 2015已经成功安装了驱动环境,WDK都已经完全正常安装了,在Visual Studio 2015的菜单可以看到"Driver"菜单项了.这说明已 ...

  2. Visual Studio 2015下编译zmq项目下其他项目踩进的项目引用坑

    PS.在之前的一篇文章中介绍了如何用Visual Studio 2015编译zmq,在编译同解决方案中除了libzmq之外的项目例如inproc_thr时会报错误,具如下: Severity Code ...

  3. Visual Studio 2015 Update 2 发布

    2016年3月30日,微软发布了Visual Studio 2015 Update 2 . 更新内容: Visual Studio  Visual Studio Tools for Apache Co ...

  4. Windows 7, Visual Studio 2015下编译Webkit

    因工作需要,需要编译Windows版本的Webkit,中间走了不少弯路,都记录下来,供大家参考!也随时欢迎大家讨论(QQ群:345802342) 整个编译工作参考的是官方文档:https://webk ...

  5. 2015-12-1 Visual Studio 2015 Update 1发布

    http://news.cnblogs.com/n/533856/ 下载地址 文件名 cn_visual_studio_enterprise_2015_with_update_1_x86_x64_dv ...

  6. Visual Studio 2015 下 编译 libpng

    libpng https://github.com/glennrp/libpng zlib https://github.com/madler/zlib/releases https://github ...

  7. Visual Studio 2015正式发布

    Windows 10 RTM正式版要7月29日发布,微软的另一个重磅软件Visual Studio 2015已经率先发布,今天如期放出了正式版本.Visual Studio 2015包括许多新功能和更 ...

  8. 用Visual Studio 2015 编译张帆的第一个NT式驱动,并且成功安装到Windows XP里面!!!

    开发工具:Visual Studio 2015 企业版 目 标 机:Windows XP X86 前提:我们已经成功安装了Visual Studio 2015以及WDK,而且更重要一点是一定要SDK版 ...

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

    开发工具:Visual Studio 2015 企业版 目 标 机:Windows 10 X86 前提:我们已经成功安装了Visual Studio 2015以及WDK,而且更重要一点是一定要SDK版 ...

随机推荐

  1. Hash表从了解到深入(浅谈)

    · Hasn表,将一个数据进行Value化,再进行一个映射关系到Key直接进行访问的一个数据结构,这样可以通过直接的计算进行数据的访问和插入.关于Hash表的基本概念这里就不一一叙述,可以通过百度了解 ...

  2. axis客户端循环访问webservice的时候只发送了几条数据就断开了的问题

    原因 axis客户端访问webservice默认是使用http1.0版本的,这个版本的http不能保持长连接,应该换成http1.1版本 具体修改步骤: <?xml version=" ...

  3. 自定义javascript日历控件

    Web页中的日历一般离不开表格,通常都使用表格装载指定月的日期等信息.所以,要编写JS日历,首先必须解决的问题是表格的行与列问题.列是固定的,七列,因为一周有七天.行需要动态计算,因为,每一个月的第一 ...

  4. web前端整套面试题(一)--js相关

    一.单选 1.以下哪条语句会产生运行:(A) A.var obj = ( ); B.var obj = [ ]; C.var obj = { }; D.var obj = / /; B代表数组,C代表 ...

  5. 一道容易栽坑的有趣的面试题(关于js,定时器,闭包等)

    1.首先下面代码输出什么? for (var i = 0; i < 5; i++) { console.log(i); } 输出:0 1 2 3 4 2.上面只是普通的输出,没有陷阱再看下面这个 ...

  6. 128. Longest Consecutive Sequence (HashTable)

    Given an unsorted array of integers, find the length of the longest consecutive elements sequence. F ...

  7. OceanBase

    OceanBase 编辑 本词条缺少名片图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! OceanBase是一个支持海量数据的高性能分布式数据库系统,实现了 数千亿条记录.数百TB数据上的 ...

  8. Jenkins持续集成构建

    配置Sonar.Jenkins进行持续审查 http://go2live.cn/archives/38261.html Jenkins iOS 项目持续集成 http://go2live.cn/arc ...

  9. python学习——查找计算机中文件位置

    有时想查找某个文件时,却忘记了文件在计算机中存放的位置,这是一个经常遇到的问题. 当然如果你使用windows 7的话,可以直接用右上角的搜索框来搜索. 最近在学习python,正好拿这个来练练手,写 ...

  10. Java Persistence with MyBatis 3(中文版) 第三章 使用XML配置SQL映射器

    关系型数据库和SQL是经受时间考验和验证的数据存储机制.和其他的ORM 框架如Hibernate不同,MyBatis鼓励开发者可以直接使用数据库,而不是将其对开发者隐藏,因为这样可以充分发挥数据库服务 ...