最近看Windows内核编程在这里做下记录。
第一章都是一些基本概念没有什么需要记录的。
第二章
开发一个简单的驱动所需要的准备工作:
1、开发环境准备:
操作系统:win11
IDE:vs2022(所有的vs2022版本都行),组件安装”使用c++的桌面开发“
安装Windows SDK和WDK
安装以后vs2022创建项目时依然没有”Empty WDM Driver“,需要运行”x:\xxx\Windows Kits\10\Vsix\VS2022\10.0.26100.1\WDK.vsix“以后才能创建驱动开发项目。
驱动开发所需的工具下载地址:
Sysinternals - Sysinternals | Microsoft Learn
2、调试驱动的虚拟机系统的准备
驱动是内核程序,对系统的影响是全局的,所以不能在真机上进行调试,搞崩了后果自负。
搞个VMware装个win10进行调试,把win10设置为测试模式,不然下面的命令没办法运行(因为驱动没有签名),设置命令如下:
bcdedit /set testsigning on
编译出来的驱动文件(*.sys)用sc.exe进行安装,安装、启动、卸载的命令如下:
sc create WindowsDriverDevelop type= kernel binPath= c:\WindowsDriverDevelop.sys
(注意在type和等号之间没有空格,而等号和kernel之间有空格,后面那个也一样。)
sc start WindowsDriverDevelop
sc stop WindowsDriverDevelop
驱动开发调试跟踪:
需要DebugView.exe输出代码中的调试信息需要修改虚拟机系统注册表才能看到调试信息,修改的位置:HKLM\SYSTEM\CurrentControlSet\Control\Session Manager下面增加一个叫作Debug Print Filter的项(这个项通常不存在)。在这个新建的项里,增加一个叫作DEFAULT的DWORD值,并置其值为8,重启后生效。