用Visual Studio 2015成功编译、发布UMDF驱动到目标机!!
开发工具: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驱动到目标机!!的更多相关文章
- 用Visual Studio 2015 编写第一个UMDF驱动遇到的问题!!
前提:Visual Studio 2015已经成功安装了驱动环境,WDK都已经完全正常安装了,在Visual Studio 2015的菜单可以看到"Driver"菜单项了.这说明已 ...
- Visual Studio 2015下编译zmq项目下其他项目踩进的项目引用坑
PS.在之前的一篇文章中介绍了如何用Visual Studio 2015编译zmq,在编译同解决方案中除了libzmq之外的项目例如inproc_thr时会报错误,具如下: Severity Code ...
- Visual Studio 2015 Update 2 发布
2016年3月30日,微软发布了Visual Studio 2015 Update 2 . 更新内容: Visual Studio Visual Studio Tools for Apache Co ...
- Windows 7, Visual Studio 2015下编译Webkit
因工作需要,需要编译Windows版本的Webkit,中间走了不少弯路,都记录下来,供大家参考!也随时欢迎大家讨论(QQ群:345802342) 整个编译工作参考的是官方文档:https://webk ...
- 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 ...
- Visual Studio 2015 下 编译 libpng
libpng https://github.com/glennrp/libpng zlib https://github.com/madler/zlib/releases https://github ...
- Visual Studio 2015正式发布
Windows 10 RTM正式版要7月29日发布,微软的另一个重磅软件Visual Studio 2015已经率先发布,今天如期放出了正式版本.Visual Studio 2015包括许多新功能和更 ...
- 用Visual Studio 2015 编译张帆的第一个NT式驱动,并且成功安装到Windows XP里面!!!
开发工具:Visual Studio 2015 企业版 目 标 机:Windows XP X86 前提:我们已经成功安装了Visual Studio 2015以及WDK,而且更重要一点是一定要SDK版 ...
- 用Visual Studio 2015 编译张帆的第一个WDM驱动,并且成功安装到Windows 10里面!!!
开发工具:Visual Studio 2015 企业版 目 标 机:Windows 10 X86 前提:我们已经成功安装了Visual Studio 2015以及WDK,而且更重要一点是一定要SDK版 ...
随机推荐
- 面试------Android 版本之前的差异(常见,欢迎补充)。
不管你技术如何,只要背点这个,能忽悠倒一片.. 1.WebView JS漏洞 ,Android4.2之前 ,解决办法,不用addJavascriptInterface,webchrome的onJsPr ...
- java 内存溢出
不健壮代码的特征及解决办法 1.尽早释放无用对象的引用.好的办法是使用临时变量的时候,让引用变量在退出活动域后,自动设置为null,暗示垃圾收集器来收集该对象,防止发生内存泄露. 对于仍然有指针指向的 ...
- Linux实战教学笔记15:磁盘原理
第十五节 磁盘原理 标签(空格分隔): Linux实战教学笔记 1,知识扩展 非脚本方式的一条命令搞定批量创建用户并设置随机10位字母数字组合密码. 1.1 sed的高级用法 [root@chensi ...
- 【UVALive2965】Jurassic Remains
题意 题意给定n个大写字母组成的字符串,选择尽量多的串,使得每个大写字母都能出现偶数次.n<=24,每个字符串中每个字母最多出现一次. 分析 这是训练指南上的一道中途相遇法的简单题,但是好像也能 ...
- 【POJ1811】Prime Test
[题目大意] 若n是素数,输出“Prime”,否则输出n的最小素因子,(n<=2^54) [题解] 和bzoj3667差不多,知识这道题没那么坑. 直接上Pollord_Rho和Rabin_Mi ...
- Nginx 相关介绍(Nginx是什么?能干嘛?个人觉得写得比较好的文章,转载过来)
Nginx的产生 没有听过Nginx?那么一定听过它的"同行"Apache吧!Nginx同Apache一样都是一种WEB服务器.基于REST架构风格,以统一资源描述符(Unifor ...
- yii2.0 报错Cookievalidationkey Must Be Configured With A Secret Key
'components' => [ 'request' => [ // !!! insert a secret key in the following (if it is empty) ...
- 8-机器分配(hud4045-组合+第二类斯特林数)
http://acm.hdu.edu.cn/showproblem.php?pid=4045 Machine schedulingTime Limit: 5000/2000 MS (Java/Othe ...
- freemaker 优缺点 及 应用配置
通俗的讲,freemaker其实就是一个模板引擎.什么意思呢?——Java可以基于依赖库,然后在模板上进行数据更改(显示). 在模板中,您专注于如何呈现数据,而在模板外(后台业务代码),您将专注于呈现 ...
- Halcon中一些突然想不起来但确实有用的算子
1.Develop dev_display 在现有图形窗口中显示图像目标. dev_set_color 设置一个或更多输出颜色,通常用于设置region或者xld的颜色. dev_set_dra ...