windows驱动编程学习(一)搭建win10+vs2022开发环境

勇哥注:

学习驱动开发的目的,是为运控和视觉程序构建一个实时环境。

这方面虽然有windows实时拓展的商业软件,但是价格贵得感人,特别是想实现一些简单实时需求的时候更不划算。

虽然驱动开发学习难度较大,但是我把目标放低,先研究一下怎么构建实时性较高的ns级订时器,并调用用户层代码,期望以此方式来应用需要实时的操作。



搭建win10、vs2022下的驱动开发环境


(1)先查看系统版本号

主要关注“版本号”和“内部版本”

image.png

注意,由于wdk的安装一定要跟windows版本号一样,所以如果你的系统版本号在下面的wdk 安装包网站找不到的话,需要升级系统补丁。

https://learn.microsoft.com/en-us/windows-hardware/drivers/other-wdk-downloads


例如,你的系统是win10 1009,那就得进行系统长级了。

可以使用win10的自动更新,目前最新版本是win10 22h2

如果你的自动更新用不了,那也有办法,就是使用windows升级助手。

它的下载地址在:https://www.microsoft.com/zh-cn/software-download/windows10

image.png

直接运行,就可以帮你把win10升级到最新的22h2。

image.png

安装完成后重启电脑即可。

注意:安装这个可能会把你的系统安装的软件全部归零!!!

并且桌面的资料全部丢失!!!

重启后,大概率管理员账号还会被禁用,你得进安全模块把管理员账号解锁才能进系统。(win10进安全模式并不是按什么f8,而是要在windows图标转圈的时候强制关机两次,第三次就会进入系统维护模式,然后选择进入安全模式)

请慎用!!!


(2)安装vs2022

可以选择安装社区版本。



(3)安装windows sdk包

由于vs2022的 install并不带最新的sdk包,需要网上下载

https://learn.microsoft.com/zh-cn/windows-hardware/drivers/download-the-wdk

image.png



安装完成后如下图所示:


image.png


(4)安装wdk包

22h2这个版本下载下面的wdk包:

虽然写着是win11版本的 22h2,但是win10也可以用这个。

image.png


image.png

安装成功后会自动安装vs2022的驱开发项目模板。

如下图所示: 

image.png

image.png

 

如果没有自动安装 WDK.vsix,可以手动安装。

image.png


成功后,在vs2022中就会有Driver的模板:

image.png



(5)总结安装过程

第一步:装windows SDK

第二步:装WDK

第三步:找到装WDK目录下的Vsix目录,找到WDK.vsix安装即可

友情提示,如果装WDK他自动装vsix的话,忽略第三步,即可。


重要点:

需要检查安装的wdk和windows sdk的版本是否匹配。

可以通过“程序和功能”来查看。

见下图所示:


image.png



(6)准备驱动版的hello world程序


新建一个“Empty WDM Driver”的项目。

image.png

新建一个cpp文件,改名为test.c

image.png

写上下面的代码:

#include <ntddk.h>

VOID DriverUnload(PDRIVER_OBJECT pDriverObject)
{
	DbgPrint("Goodbye!\n");
}

NTSTATUS DriverEntry(
	IN PDRIVER_OBJECT pDriverObject,
	IN PUNICODE_STRING pRegistryPath
)
{
	DbgPrint("Hello, world lxy\n");
	pDriverObject->DriverUnload = DriverUnload;
	return STATUS_SUCCESS;
}


想要编译成功,要做下面重要事项。

说明如下:

(1) 下面这个.inf文件要删除。

       它是wdm驱动专有的,我们的hello world只是想弄个古老的nt驱动,所以不能要这个,会编译出错的。

image.png


(2) 你用everything工具搜索一下头文件 ntddk.h

      把这个路径添加到“外部包含目录”中去。

    否则的话,代码全部是“未定义的标识符”,编译隔屁。

image.png

(3) 项目属性页中“常规”,其中sdk版本要选择你当前的。

这步如果搞错了,“Driver Settings”, "Driver Install", "Inf2Cat" 这些配置项就不存在了。

当然,你也不可能编译通过,会报ntddk.h等头文件里面有错误

image.png


(4) 下面这个改否

否则一些警告也会编译通不过。

image.png

(5)下面这里,请设置得一样。

image.png


编译成功后,划线那个MyDriver1.sys就是我们的驱动。

image.png


(7)开一个虚拟机的win10 x64 版本的系统

使用管理员模式的power shell中敲入指令启动驱动测试模式。

bcdedit /set testsigning ON

然后重启系统,就看到下面这样的显示。

image.png


(8)测试驱动:


使用到两个工具:debugView和 Kernel Mode Driver Manager。


1.  debugview

image.png


2.  Kernel Mode Driver Manager

image.png


测试结果如下:

如果你Run的时候没有成功,原因可能是你没执行第7步,就是没打开虚拟机系统的“测试模式”。

或者你这两个工具没有使用管理员权限运行。


image.png



其它参考资料:

Windows驱动开发之环境搭建,长期Waiting for connecting...思路


https://blog.csdn.net/youzai2017/article/details/135942662



本文源码和工具下载:

链接:https://pan.baidu.com/s/1Sn4lTYhQQjd1X46feGX_wA 

提取码:kwk4 

--来自百度网盘超级会员V6勇哥的分享


本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:
本帖最后由 勇哥,很想停止 于 2024-07-17 18:23:31 编辑

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2025年4月    »
123456
78910111213
14151617181920
21222324252627
282930
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864