VS2015 VMware(win10x64)双机调试驱动
好文章,来自【福优学苑@音视频+流媒体】
驱动程序的开发语言选择
第一条:以C语言为首选。
调用约定
调用约定是指函数在被调用时,会按照不同的规则翻译成不同的汇编代码。
用C或C++语言编译程序的时候,一般会有以下两种调用约定。
1.C语言调用约定。
c语言调用约定要求在生命函数时用__cdecl对函数进行修饰。如
void __cdecl foo(int a, int b);
c语言调用会在目标文件中产生一个符号来代表这个函数,此符号的形式为下划线+函数名,且函数以ret形式返回。例如:
foo(0x12345678, 0x11223344);
展成汇编代码如下:
push 0x11223344
push 0x12345678
call _foo
add esp, 8
2.标准调用约定。
要求在声明函数时用__stdcall对函数进行修饰。如
void __stdcall foo(int a, int b);
标准调用会在目标文件中产生一个符号来代表这个函数,此符号形式为下划线+函数名+X,其中X为清理堆栈时需要的数字,函数以ret X形式返回。
上例中展成汇编代码为:
push 0x11223344
push 0x12345678
call __foo@8
一般来说,很少见到用关键字指定函数的调用约定,编译器会选择默认的调用约定进行编译,在VC编译器中,默认使用C语言的调用约定。
而Windows驱动程序的编写使用的是标准调用约定,尤其是入口函数。
系统会寻找__DriverEntry@8作为程序的入口点,若用c的调用约定就会导致链接错误,因此在编译驱动是需要改变默认的调用约定。
运行时函数的调用
VS2015+VMWare(Win10x64)搭建双机调试环境
自从WDK8.1后,开发window 驱动不用再用windbg + 虚拟机调试了,我们调试驱动也可以像调试EXE一样方便,下面是win10(主机) + WDK10+ VS2015 + vmware_win10 驱动开发环境配置 教程
注意事项:
关闭主机和客户机的防火墙 、 互相都能ping通。
查看win10的版本
Cmd窗口: ver/winver
Microsoft Windows [Version 10.0.17134.1550](版本:1803)
注意:SDK与WDK的版本,一定要与win10的版本对应上。
Win10-sdk: 我本地的win10版本1803(17134),找对应的win10-sdk
Win10-wdk: 我本地的win10版本1803,找对应的win10-wdk
如何下载sdk?
去微软官方或百度,搜索“win sdk 17134”
https://docs.microsoft.com/zh-cn/windows-hardware/drivers/other-wdk-downloads
如何下载wdk?
https://docs.microsoft.com/zh-cn/windows-hardware/drivers/other-wdk-downloads
安装 Visual studio 2015
请自己百度:vs2015.ent_chs.iso
根据你的需要下载对应版本的 VS2015,推荐下载 Community 版本,因为这个版本免费且功能齐全。
安装包比较大,大概 7G 左右。
下载完成后运行安装程序,选择 Visual C++ 和 Windows 10 SDK
这里在安装VS2015的时候呢,最好是全部安装,安装的过程也是很慢的,耐心等待吧!
安装 sdk
Windows 10 版本 1803 适用于 Windows 10.0.17134 的 Windows SDK
Windows 10 版本 1803 |
安装 wdk
Windows 10 版本 1803 适用于 Windows 10 版本 1803 的 WDK
Windows 10 版本 1803 |
VS2015 安装完成后,开始安装下载好的 WDK10,WDK10 是一个在线安装程序,可以直接安装也可以下载到本地再进行安装,我选择的是直接下载到本地:
Win10驱动程序示例
https://github.com/Microsoft/Windows-driver-samples
Vmware--Win10x64
注意:要下载win10专业版,不要用企业版。
cn_windows_10_consumer_editions_version_2004_x64_dvd
http://www.win10com.com/win10jiaocheng/14029.html
创建串口
注意:最好把“打印机”删除掉。
启用系统保护
“创建系统还原点”
虚拟机中安装WDK Test Target Setup xxxxx.msi
虚拟机中关闭“驱动证书检测程序”
1.使用管理员权限打开CMD命令提示符应用。
2.使用“bcdedit.exe /set nointegritychecks on”命令关闭驱动数字证书检测程序。
3.使用“bcdedit.exe”命令查看驱动数字证书检测程序。
4.使用“bcdedit.exe /set nointegritychecks off”命令打开驱动数字证书检测程序。
VS2015 Configure Devices
基本配置
这是我本地的虚拟机中win10的计算机名称。
Win102020CXAZZF
Win102020CXAZZF
\\.\pipe\com_1
有一个坑
这个过程也就是创建一个WDKRemoteUser管理员用户并安装一些运行库等,最后还创建了一个系统还原点。
起初我虚拟机是企业版的时候,在安装那一步老是报错:
Provisioning a target system for driver development fails with error 1312
这里显示是bug,但是我注意到vs创建WDKRemoteUser时是有密码的,然后我用另一个管理员账户清除了WDKRemoteUser的密码后,以WDKRemoteUser身份登陆后,再点vs配置里面的安装,却安装成功了,成功界面:
重启win10,禁用驱动程序签名
驱动安装工具SRVINSTW.EXE
Win10x64中安装WDM驱动
第一步:添加过时硬件
第二步:安装我手动从列表选择的硬件
然后点击“下一步”,
选择“所有设备”
再点击“下一步”
第三步:从磁盘安装
选择“inf文件”
好文章,来自【福优学苑@音视频+流媒体】
***【在线视频教程】***