32.Windows 驱动开发环境搭建与内核调试入门

1.前言

windows驱动开发,最难的部分大概就是环境搭建了,只要熟悉win api的编写、理解了各种windows的核心概念,驱动实际上也差不太多,只是换了一批api而已。

驱动环境搭建是真的麻烦,因为驱动本身是运行在内核层的,称为r0,我们平时编写的程序都是用户层,称为r3。

用户层的应用程序中代码如果出现了问题,顶多只是程序崩溃,可一旦内核层代码出现问题,整个电脑估计就直接卡死、蓝屏了。

因此内核开发往往需要两台电脑,一台电脑进行开发,另一台电脑则用来进行调试。

但这样又使得驱动开发成本太高了,所以更多时候,我们采用的是用虚拟机作为调试电脑,主机作为开发电脑。

因此第一步我们就需要安装虚拟机,并在虚拟机中安装好windows系统。

如果不会安装虚拟机的,可以参考另一篇文章:VMware安装

win11系统镜像可以去官方网站下载:下载 Windows 11

本文所使用的主机与虚拟机环境都是win11,如果需要提高驱动程序最终的兼容性,那么最好在虚拟机中安装win10、乃至win7系统。

2.虚拟机配置

使用VMware安装好windows系统后,我们第一步是为该虚拟机添加一个串行端口:

image.png

这个串行端口的目的是让我们可以在宿主机与虚拟机进行通信,后面使用windbg程序对该虚拟机进行内核调试时就需要用到这个管道。

如果你的硬件设施中存在打印机,那么可能需要先将打印机给删除掉,因为打印机的默认管道也是我们这里的\\.\pipe\com_1

这里管道的名称,前部分是固定的写法:\\.\pipe\,最后的com_1可以自行命令,一旦你更改了这个命令,那么后面的相关命令你也需要修改。

完成了管道添加后,下面我们需要让windows系统允许被调试,方法就是为系统添加进入调试模式的引导。

首先用管理员启动好终端,运行下面这条命令:

bcdedit /copy “{current}” /d debug_mode

这条命令的意思是,复制当前的启动项目创建一个新的启动项,新启动项的名称为后面的:debug_mode,你也可以自行更改为其它名字。

然后是设置调试端口:

bcdedit /dbgsettings serial debugport:1 baudrate:115200

其它基本是固定的,注意debugport后面的数字1是进行调试的串行端口,这可以在虚拟机中的设备管理器中看到:

作者:余识
全部文章:0
会员文章:0
总阅读量:0
c/c++pythonrustJavaScriptwindowslinux