概念

主机是编译驱动的机子,目标主机是虚拟机内的电脑。主机需要安装VS。

环境搭建

网上有很多很多搭建教程,这里就不复制粘贴了,可以自己去搜。主要步骤如下:(并不保证是完全完整的步骤)

  1. 安装vs(我是VS2019 community),vs installer中装一些需要的库。我装的太多了,其实只需要装红色框内的即可开发windowsX64驱动。在这里插入图片描述

  2. winsdksetup安装SDK(10.1.19041.1版本)
    在这里插入图片描述

  3. 安装wdk(10.1.19041.1版本)在这里插入图片描述

  4. 安装VMWARE(15.5.6版本)
    //!!!!!!版本一定要相互匹配,下载的安装包、镜像等等一定要从正规途径下,例如官网和i tell u。我就因为下载的安装包有问题重新搞了几遍。

  5. 安装windows镜像(win10edu x64),这个从i tell u MSDN里下载,下载后的文件名是cn_windows_10_education_x64_dvd_6847843.iso

  6. 主机和虚拟机均把防火墙关闭,反正只要保证双方可以相互ping通即可。

  7. 配置com串口serial一系列东西,在很多教程中都能看到。

  8. 在虚拟机中安装wdk文件夹下的wdk test target (版本10.1.19041.1)。打开测试模式
    可以结合来看这个教程中,“二、具体操作步骤”中的1-4步:
    https://blog.csdn.net/qing666888/article/details/50858272
    ………………
    (不确定有没有影响,但我的主机和虚拟机关闭了bios的安全启动和windows设置的bitlocker)

一系列操作后,能通过windbg.exe连接上虚拟机,或是通过vs里的附加到进程中的debug immediate窗口看到已连上,注:VS自带windbg所以不一定非要使用windbg.exe来调试。
(其中,通过windbg.exe需要修改属性栏里的后缀,详见其他教程,如果出现了windbg的报错symbol错误也没关系,查了很多说是微软官方的symbol库无法下载故而可以忽略此报错,不会影响调试;VS中调试需要先在项目中配置add device,与虚拟机中的串口连上。之后生成解决方案再部署解决方案,均成功后,点击调试中的附加到进程,选择kernel debug模式,再选择你之前添加的device,这些也可以在上面给出的教程链接中看到图文讲解)

最关键的一步

网上很多教程都到这里就结束了。但我的代码遇到了输出不在windbg窗口显示的问题,查到了一个blog,要在虚拟机中配置注册表才可。
详见下:
https://blog.csdn.net/cosmoslife/article/details/54952463
除此以外,代码中还需要使用KdPrint,选中ERROR_LEVEL,尝试过换成INFO_LEVEL但是并不会输出语句。其他输出函数还未尝试过目前只知道这个函数可以。使用方法如下:
KdPrintEx(( DPFLTR_IHVDRIVER_ID, DPFLTR_ERROR_LEVEL, “KmdfHelloWorld: DriverEntry\n” ));

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐