开发工具: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不匹配,严重影响驱动程序的编译!关于这个问题,可以看这篇文章:用Visual Studio 2015 编写驱动之前一定要注意的问题!!! - sunylat - 博客园
好了,下面我就告诉大家我是如何一步步实现这个目标的!
一,配置目标机:让目标机能够和主机通讯,成为一个可以进行我们开发的驱动安装和调试的操作系统。
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下载:Download the Windows Driver Kit (WDK) - Windows drivers | Microsoft Learn
WDK10必须在安装完SDK之后才安装它!!SDK在安装VS2015时候可以安装!
MSDN驱动开发教程:製作您的第一個驅動程式 - Windows drivers | Microsoft Learn
微软官方提供的Windows 10驱动例子:GitHub - microsoft/Windows-driver-samples: This repo contains driver samples prepared for use with Microsoft Visual Studio and the Windows Driver Kit (WDK). It contains both Universal Windows Driver and desktop-only driver samples.